新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TCC89x串口設置要點

        TCC89x串口設置要點

        作者: 時間:2016-09-12 來源:網絡 收藏

        //=====================================================================

        本文引用地址:http://www.104case.com/article/201609/304828.htm

        //TITLE:

        // TCC89x串口設置要點

        //AUTHOR:

        // norains

        //DATE:

        // Thursday 29-March-2011

        //Environment:

        // Visual Studio 2005

        // Windows CE 6.0

        // Telechips TCC8900

        //=====================================================================

        對于Telechips的TCC89x系列來說,串口資源不可謂不豐富,整整六組串口,應該能滿足大多數的應用場合了。

        如果運行的是Windows CE操作系統的話,除去作為調試的Debug口,那么還剩下五組可供應用程序使用。而這五組串口的使能,并不需要做太多的工作,只需要書寫相應的注冊表數值即可。只不過比較可惜的的是,Telechips原版的注冊表,只使能COM1~COM3這三組,而COM4和COM5只能自己動手。不過這對于經驗豐富的開發者來說,并不是一件很難的事情,完全可以依樣畫瓢。只不過,有下面幾點需要注意。

        1. COM_ChNum和COM_PortNum必須對應

        COM_ChNum是串口的通道,COM_PortNum是對應的PIN腳,這兩個數值都可以在注冊表中進行設置。但這并不意味著,可以隨意設置,而必須要按照如下的映射關系:

        COM_ChNum

        COM_PortNum

        1

        1

        2

        4

        3

        5

        4

        2

        5

        3

        簡單點來說,如果COM_ChNum為3的話,那么COM_PortNum就必須為5。為什么會有如此奇怪的關系呢?其實這是因為代碼中規定的。打開Magellan/Src/LIB/SOC/UART/TCC89x/tca_serial.c文件,查看tca_serial_portinit函數,就可以發現代碼中已經一一映射,如下圖所示:

        而注冊表必須要和代碼保持一致,所以COM_ChNum和COM_PortNum的關系也就定死了。

        2. DMA不支持Channel4~Channel5

        這個要點在Datasheet的800頁有如下的說明:

        翻譯為中文,大致是:DMA發送和接收在UART的Channel0~3是可用的。但如果是Channel4和Channel5,因為無法使用硬件控制,所以無法DMA。如果一定要使用DMA傳輸方式,請確保使用的是Channel0~3。

        因為在Telechips的默認注冊表中,Channel0~3已經被調試口和COM1~COM3所使用了,剩下的COM4和COM5只能放棄DMA的方式。而具體到注冊表,則是USEDMATX和USEDMARX這兩個鍵值的數值必須為0。

        最后,則是看看完整的串口設置信息列表,Telechips沒有給出的COM4和COM5設置也一并在表格中列出:

        序號

        Channel

        Port

        Tx

        Rx

        注冊表

        DMA

        Debug

        0

        0

        GPIO

        E[0]

        GPIO

        E[1]

        支持

        COM1

        3

        5

        GPIO

        D[17]

        GPIO

        D[18]

        [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial1]

        DeviceArrayIndex=dword:0

        COM_ChNum=dword:3

        COM_PortNum=dword:5

        MemBase=dword:B100C000

        irq=dword:2F

        MemLen=dword:2C

        InterruptBitsShift=dword:0 ; UART 0 Interrupt Sub Register shift bit.

        ISTTimeouts=dword:200; every 512 ticks checking Modem status.

        Prefix=COM

        Index=dword:1

        Dll=tcc_serial.dll

        Order=dword:1

        Priority256=dword:e0

        Port=COM1:

        DeviceType=dword:0

        FriendlyName=Serial Cable on COM1:

        Tsp=unimodem.dll

        IsrDll=tcc_giisr.dll

        IsrHandler=ISRHandler

        DMAIsrHandler=DMAUARTISRHandler

        USEDMATX=dword:1; 1:on0:off

        USEDMARX=dword:0; 1:on0:off

        IClass={CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}

        DevConfig=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

        支持

        COM2

        1

        1

        GPIO

        E[4]

        GPIO

        E[5]

        [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial2]

        DeviceArrayIndex=dword:1

        COM_ChNum=dword:1

        COM_PortNum=dword:1

        MemBase=dword:B1008000

        irq=dword:2F

        MemLen=dword:2C

        InterruptBitsShift=dword:0 ; UART Interrupt Sub Register shift bit.

        ISTTimeouts=dword:200; every 512 ticks checking Modem status.

        Prefix=COM

        Index=dword:2

        Dll=tcc_serial.dll

        Order=dword:1

        Priority256=dword:e0

        Port=COM2:

        DeviceType=dword:0

        FriendlyName=Serial Cable on COM2:

        Tsp=unimodem.dll

        IsrDll=tcc_giisr.dll

        IsrHandler=ISRHandler

        DMAIsrHandler=DMAUARTISRHandler

        USEDMATX=dword:1; 1:on0:off

        USEDMARX=dword:1; 1:on0:off

        IClass={CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}

        DevConfig=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

        支持

        COM3

        2

        4

        GPIO

        D[13]

        GPIO

        D[14]

        [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial3]

        DeviceArrayIndex=dword:2

        COM_ChNum=dword:2

        COM_PortNum=dword:4

        MemBase=dword:B1004000

        irq=dword:2F

        MemLen=dword:2C

        InterruptBitsShift=dword:0 ; UART Interrupt Sub Register shift bit.

        ISTTimeouts=dword:200; every 512 ticks checking Modem status.

        Prefix=COM

        Index=dword:3

        Dll=tcc_serial.dll

        Order=dword:1

        Priority256=dword:e0

        Port=COM3:

        DeviceType=dword:0

        FriendlyName=Serial Cable on COM3:

        Tsp=unimodem.dll

        IsrDll=tcc_giisr.dll

        IsrHandler=ISRHandler

        DMAIsrHandler=DMAUARTISRHandler

        USEDMATX=dword:1; 1:on0:off

        USEDMARX=dword:1; 1:on0:off

        IClass={CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}

        DevConfig=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

        支持

        COM4

        4

        2

        GPIO

        E[8]

        GPIO

        E[9]

        [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial4]

        DeviceArrayIndex=dword:3

        COM_ChNum=dword:4

        COM_PortNum=dword:2

        MemBase=dword:B1000000

        irq=dword:2F

        MemLen=dword:2C

        InterruptBitsShift=dword:0 ; UART Interrupt Sub Register shift bit.

        ISTTimeouts=dword:200; every 512 ticks checking Modem status.

        Prefix=COM

        Index=dword:4

        Dll=tcc_serial.dll

        Order=dword:1

        Priority256=dword:e0

        Port=COM4:

        DeviceType=dword:0

        FriendlyName=Serial Cable on COM4:

        Tsp=unimodem.dll

        IsrDll=tcc_giisr.dll

        IsrHandler=ISRHandler

        DMAIsrHandler=DMAUARTISRHandler

        USEDMATX=dword:0; 1:on0:off

        USEDMARX=dword:0; 1:on0:off

        IClass={CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}

        DevConfig=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

        不支持

        COM5

        5

        3

        GPIO

        E[10]

        GPIO

        E[11]

        [HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Serial5]

        DeviceArrayIndex=dword:4

        COM_ChNum=dword:5

        COM_PortNum=dword:3

        MemBase=dword:B0FFC000

        irq=dword:2F

        MemLen=dword:2C

        InterruptBitsShift=dword:0 ; UART Interrupt Sub Register shift bit.

        ISTTimeouts=dword:200; every 512 ticks checking Modem status.

        Prefix=COM

        Index=dword:5

        Dll=tcc_serial.dll

        Order=dword:1

        Priority256=dword:e0

        Port=COM5:

        DeviceType=dword:0

        FriendlyName=Serial Cable on COM5:

        Tsp=unimodem.dll

        IsrDll=tcc_giisr.dll

        IsrHandler=ISRHandler

        DMAIsrHandler=DMAUARTISRHandler

        USEDMATX=dword:0; 1:on0:off

        USEDMARX=dword:0; 1:on0:off

        IClass={CC5195AC-BA49-48a0-BE17-DF6D1B0173DD}

        DevConfig=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00

        不支持



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黑水县| 承德县| 九寨沟县| 高唐县| 卓尼县| 和静县| 武鸣县| 岱山县| 黄冈市| 咸宁市| 广元市| 汉源县| 大英县| 平江县| 莱芜市| 古交市| 两当县| 百色市| 石城县| 汪清县| 昭通市| 五莲县| 莫力| 龙口市| 邢台县| 永顺县| 宁夏| 福安市| 施甸县| 宝清县| 镇康县| 中阳县| 商河县| 德庆县| 平安县| 喀什市| 静海县| 松江区| 鹤峰县| 枝江市| 高青县|