《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于TMS320C55x DSP的UART通信設(shè)計(jì)
基于TMS320C55x DSP的UART通信設(shè)計(jì)
摘要: 全雙工異步串行通信在TMS320C55xDSP上的通常實(shí)現(xiàn)方式是利用DSP的McBSP接口加外接芯片實(shí)現(xiàn),這種設(shè)計(jì)方法增加了實(shí)現(xiàn)UART的硬件成本和電路設(shè)計(jì)復(fù)雜度。提出了一種直接利用DSP的MCBSP接口和DMA通道實(shí)現(xiàn)UART的方法,給出了使用C語(yǔ)言和CSL的編程方法。與傳統(tǒng)實(shí)現(xiàn)方法相比,具有實(shí)現(xiàn)成本低,硬件電路簡(jiǎn)單,移植性強(qiáng)等特點(diǎn),稍加修改可應(yīng)用于C5000和C6000各系列芯片中。
關(guān)鍵詞: DSP UART TMS320C55x DMA 過(guò)采樣
Abstract:
Key words :

摘要:全雙工異步串行通信在TMS320C55xDSP上的通常實(shí)現(xiàn)方式是利用DSP的McBSP接口加外接芯片實(shí)現(xiàn),這種設(shè)計(jì)方法增加了實(shí)現(xiàn)UART的硬件成本和電路設(shè)計(jì)復(fù)雜度。提出了一種直接利用DSP的MCBSP接口和DMA通道實(shí)現(xiàn)UART的方法,給出了使用C語(yǔ)言和CSL的編程方法。與傳統(tǒng)實(shí)現(xiàn)方法相比,具有實(shí)現(xiàn)成本低,硬件電路簡(jiǎn)單,移植性強(qiáng)等特點(diǎn),稍加修改可應(yīng)用于C5000和C6000各系列芯片中。
關(guān)鍵詞:DSP;全雙工異步串行通信;多通道緩沖串口;DMA ;過(guò)采樣

1 引言:
MS320C55x數(shù)字信號(hào)處理器通過(guò)多通道緩沖串口(McBSP)提供了與外設(shè)的多種同步串行通信方式。然而,由于DSP中串行通信由數(shù)據(jù)信號(hào)、幀同步信號(hào)和時(shí)鐘3種信號(hào)配合實(shí)現(xiàn),其中幀同步信號(hào)和數(shù)據(jù)信號(hào)由不同的數(shù)據(jù)線傳輸。而異步串行通信則在一根傳輸線上實(shí)現(xiàn)數(shù)據(jù)發(fā)送或接收,且不需要專門的時(shí)鐘信號(hào)線。因此DSP與異步設(shè)備的接口,如UART通信實(shí)現(xiàn)相對(duì)復(fù)雜,需要對(duì)McBSP的相關(guān)寄存器進(jìn)行正確初始化。DSP中實(shí)現(xiàn)全雙工異步通信的通常做法是使用專用的串行接口芯片,如TL16C550,這種設(shè)計(jì)方法編程相對(duì)簡(jiǎn)單,但增加了設(shè)計(jì)成本和電路復(fù)雜度。本文介紹了一種TMS320C55x DSP芯片利用McBSP和DMA直接實(shí)現(xiàn)UART的方法,基于該方法實(shí)現(xiàn)的DSP異步串行通信模塊已成功應(yīng)用于控制偏振圖像采集處理的DSP硬件設(shè)備中。 www.51kaifa.com/
2 UART在DSP上的實(shí)現(xiàn)
異步串行通信要求DSP能夠模擬和檢測(cè)到UART的幀信號(hào)。由于DSP串口是同步串口,而且DSP時(shí)鐘為高速時(shí)鐘,經(jīng)分頻或倍頻后無(wú)法保證與UART的異步串行時(shí)鐘精確同步。DSP的幀同步信號(hào)無(wú)法與UART的幀信號(hào)同步,造成串行通信信號(hào)中信號(hào)位的偏移。最好的解決方法是減小偏移和對(duì)接收的數(shù)據(jù)流進(jìn)行過(guò)采樣,本文采用了對(duì)UART信號(hào)的16倍過(guò)采樣。www.51kaifa.com/
2.1 McBSP設(shè)置
    DSP的McBSP通過(guò)3種信號(hào)實(shí)現(xiàn)同步通信:數(shù)據(jù)、幀同步和時(shí)鐘。異步通信發(fā)送和接收各在一條線上進(jìn)行,具有自己的幀時(shí)序。
    UART的通信時(shí)鐘由使用的通信波特率(每秒傳輸?shù)臄?shù)據(jù)位個(gè)數(shù))決定,通常為2400,9600,19200等。DSP與UART異步通信時(shí),由于DSP的內(nèi)部時(shí)鐘頻率通常都不是UART時(shí)鐘頻率的整數(shù)位,因而會(huì)造成雙方通信時(shí)數(shù)據(jù)位的偏移,為了盡量減小這種偏移,McBSP的串口時(shí)鐘需要正確的設(shè)置時(shí)鐘頻率以達(dá)到與UART波特率相匹配。
數(shù)據(jù)包(PKTBITS)由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成,起始位為1位,停止位通常為1,1.5,2位,數(shù)據(jù)數(shù)通常為8位,如何使用校驗(yàn),那么數(shù)據(jù)包還包括1位校驗(yàn)位。以上數(shù)據(jù)位中,每1位都被DSP以16倍波特率的時(shí)鐘頻率過(guò)采樣。
發(fā)送時(shí),為保證UART能收到半個(gè)停止位,需要將DSP的McBSP發(fā)送端口設(shè)置為2相的數(shù)據(jù)幀。第1相為16位的數(shù)據(jù)字,第2相為8位的數(shù)據(jù)字。那么第1相數(shù)據(jù)長(zhǎng)度為(起始位+數(shù)據(jù)位+校驗(yàn)位)個(gè)字,第2相長(zhǎng)度為停止位的字長(zhǎng)。發(fā)送時(shí)的總幀長(zhǎng)(TxPKTBITS)為這兩相的總字長(zhǎng)。接收數(shù)據(jù)包格式與發(fā)送相似,其結(jié)構(gòu)如圖2所示。DSP的串口發(fā)送引腳與外部串口設(shè)備的接收引腳相連,不使用FSX引腳和CLKX引腳。
接收時(shí),McBSP通過(guò)接收幀同步信號(hào)引腳(FSR)檢測(cè)數(shù)據(jù)的到來(lái),根據(jù)幀同步信號(hào)的不同,幀同步信號(hào)可配置成上升沿觸發(fā)或下降沿觸發(fā),由于UART的起始位為低電平,因此使用下降沿觸發(fā)。將UART發(fā)送數(shù)據(jù)信號(hào)與McBSP的數(shù)據(jù)接收引腳DR和FSR相連,實(shí)現(xiàn)用UART的發(fā)送信號(hào)觸發(fā)McBSP的接收幀同步信號(hào)。在McBSP接收一幀數(shù)據(jù)期間,為了防止下降沿再次觸發(fā)一幀數(shù)據(jù)接收,McBSP應(yīng)該設(shè)置為接收數(shù)據(jù)包期間忽略幀同步信號(hào)。


圖1 UART接收數(shù)據(jù)包的幀格式


接收完一幀數(shù)據(jù)后,需要對(duì)數(shù)據(jù)解碼,收于DSP發(fā)送和接收時(shí)鐘是UART串口時(shí)鐘頻率的16位,因此每個(gè)UART數(shù)據(jù)位對(duì)應(yīng)于DSP中1個(gè)16位字(停止位對(duì)應(yīng)8位字)。在McBSP接收寄存器中將接收幀設(shè)置為2相,第1相16位字,字長(zhǎng)為RxPKTBITS(起始位+數(shù)據(jù)位+校驗(yàn)位),第2相為8位字,對(duì)應(yīng)于停止位字?jǐn)?shù)。此外,接收幀延時(shí)值應(yīng)該設(shè)置為1位。
3.2 McBSP時(shí)鐘采樣率設(shè)置
McBSP與UART通信時(shí),McBSP接收到一幀的幀同步信號(hào)后,該幀期間之后出現(xiàn)的幀同步信號(hào)將被忽略。為了獲得最大數(shù)據(jù)流量,一幀數(shù)據(jù)發(fā)送結(jié)束時(shí),其停止位后緊接著為起始位,幀同步信號(hào)的檢測(cè)依賴于停止位到起始位的下降沿。為了正確檢測(cè)到幀同步信號(hào),高電平應(yīng)該至少保持一個(gè)時(shí)鐘周期以上時(shí)間。
理想情況下,串口時(shí)鐘信號(hào)邊沿與數(shù)據(jù)位邊沿精確對(duì)應(yīng),此時(shí),每個(gè)數(shù)據(jù)位對(duì)應(yīng)16倍時(shí)鐘周期。起始位和串口時(shí)鐘的下降沿偏最小,如圖3所示。


圖2  McBSP串口時(shí)鐘與UART時(shí)鐘精確同步時(shí)的時(shí)序


    正常通信時(shí),McBSP的幀同步信號(hào)與UART串口的時(shí)鐘之間會(huì)有一定的偏差,如圖所示。


圖3 McbSP串口時(shí)鐘與UART時(shí)鐘存在偏差時(shí)的時(shí)序


存在偏差時(shí),為保證McBSP能檢測(cè)到接收到信號(hào)的下降沿,McBSP的串口采樣時(shí)鐘頻率必須準(zhǔn)確設(shè)置。其設(shè)置方法如公式1、2所示。其中,DIV是McBSP寄存中串口采樣時(shí)鐘分頻值,DSPCLK是DSP的CPU時(shí)鐘頻率,baudrate為通信波特率。 
         (1) 
         (2)
通信波特率為19200,DSP時(shí)鐘頻率為75MHz,接收數(shù)據(jù)包為10位(1位起始位,8位數(shù)據(jù)位,無(wú)校驗(yàn),1位停止位:PKTBITS=10,RxPKTBITS=9.5),根據(jù)公式1計(jì)算得DIV ,由于分頻值DIV為整數(shù),因此取DIV 。根據(jù)公式2計(jì)算得DIV ,取整后得DIV 。取DIV最佳值為244。TMS320VC55x DSP以常用波特率通信時(shí)的分頻值如表1所示。
表1 常用波特率下TMS320VC55x的McBSP串口DIV值 

 

75-MHz DSP Clock

100-MHz DSP Clock

 

Baud Rate

Divisor

Minimum

Exact

Divisor

Divisor

Maximum

Divisor

Minimum

Exact

Divisor

Divisor

Maximum

19200

240

244.14

248

320

325.52

331

38400

120

122.07

124

160

162.76

165

57600

80

81.68

82

107

108.51

110

115200

40

40.69

41

54

54.25

55


3.2 DMA設(shè)置
UART通信時(shí),DSP發(fā)送和接收到的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中,為了實(shí)現(xiàn)DSP的高速處理,減少DSP響應(yīng)McBSP數(shù)據(jù)寄存器中斷的次數(shù)。發(fā)送和接收數(shù)據(jù)與McBSP發(fā)送和接收寄存器DXR和DRR之間的數(shù)據(jù)傳輸通過(guò)DMA通道完成。這里以使用DMA通道4和通道5為例,其中,DMA通道4作為數(shù)據(jù)接收通道,DMA通道5做為數(shù)據(jù)發(fā)送通道。將通道4和通道5的同步事件分別設(shè)置為McBSP串口接收事件和串口發(fā)送事件,DMA通道4的源地址為McBSP的接收寄存器DRR地址,目的地址為數(shù)據(jù)存儲(chǔ)器中存放接收數(shù)據(jù)的變量地址;DMA通道5的源地址為數(shù)據(jù)存儲(chǔ)器中待發(fā)的數(shù)據(jù),目的地址為McBSP的DXR寄存器地址。每當(dāng)McBSP接收到數(shù)據(jù)時(shí),會(huì)觸發(fā)DMA通道4將接收到的數(shù)據(jù)拷貝到DSP數(shù)據(jù)存儲(chǔ)器的相應(yīng)置,同時(shí)目的地址指針自動(dòng)加1;發(fā)送數(shù)據(jù)時(shí),DMA通道5將待發(fā)送數(shù)據(jù)拷貝到DXR,將數(shù)據(jù)依次發(fā)出。
發(fā)送數(shù)據(jù)時(shí),待發(fā)字符被打包成適于UART接收的數(shù)據(jù)格式,以發(fā)送16進(jìn)制無(wú)符號(hào)數(shù)0xAA為例,首先發(fā)送起始位,然后是數(shù)據(jù)位最低位,最后發(fā)送停止位。該數(shù)值在數(shù)據(jù)存儲(chǔ)器中按地址由低到高的存放格式為:0x0000,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0xFFFF。
接收到數(shù)據(jù)后,取過(guò)采樣到的每個(gè)16位二進(jìn)制數(shù)據(jù)字的中間四位,若中間四位中1的個(gè)數(shù)不小于3,則表示收到當(dāng)前的UART數(shù)據(jù)位值為1;若中間四位中0的個(gè)數(shù)不小于3,則表示收到當(dāng)前的UART數(shù)據(jù)位值為0。否則認(rèn)為數(shù)據(jù)傳輸出錯(cuò)。
4 程序設(shè)計(jì)
    在McBSP和DMA寄存器設(shè)置正確的基礎(chǔ)上,利用TI公司提供的Code Composer Studio集成開(kāi)發(fā)環(huán)境編寫了UART串口通信軟件,軟件開(kāi)發(fā)中使用了CSL(片上支持庫(kù)),使整個(gè)開(kāi)發(fā)過(guò)程快速、直觀、具有很強(qiáng)的可讀性。程序流程如圖所示:     





圖4 TMS320VC55x UART程序流程圖
5 實(shí)驗(yàn)分析
硬件和軟件設(shè)計(jì)完成后,進(jìn)行了測(cè)試實(shí)驗(yàn),實(shí)驗(yàn)上位機(jī)為PC機(jī),DSP處理器為TI公司的TMS320VC5509A,通信波特率為19200,DSP外部晶振頻率為20MHz,CPU時(shí)鐘頻率為100MHz,UART數(shù)據(jù)格式為1位起始位,8位數(shù)據(jù)位,1位停止位,無(wú)校驗(yàn)。多次實(shí)驗(yàn)結(jié)果表明數(shù)據(jù)發(fā)收準(zhǔn)確,無(wú)誤碼現(xiàn)象發(fā)生。
6 結(jié)論
    DSP系統(tǒng)直接與外部全雙工異步串行設(shè)備的通信時(shí),通過(guò)正確的使用DSP上的McBSP和DMA通道,利用16倍過(guò)采樣原理準(zhǔn)確的計(jì)算McBSP通信接口的采樣值和配置相關(guān)寄存器,能夠?qū)崿F(xiàn)DSP與外部異步設(shè)備的可靠通信。與傳統(tǒng)的采用串并轉(zhuǎn)換芯片的實(shí)現(xiàn)方法相比,具有更低的成本更簡(jiǎn)單的外部電路。本文中的程序針對(duì)TI公司的TMS320VC5509x DSP芯片編寫,通過(guò)對(duì)少數(shù)寄存器的修改,該程序可直接應(yīng)用于TI公司的C5000和C6000系列DSP芯片上。
   本文作者創(chuàng)新點(diǎn):提出了一種直接利用DSP的McBSP接口和DMA通道實(shí)現(xiàn)UART的方法,具有實(shí)現(xiàn)成本低,硬件電路簡(jiǎn)單,移植性強(qiáng)等特點(diǎn)。

參考文獻(xiàn):
1 TMS320VC5509A Fixed-Point Digital Signal Processor Data Manual. Texas Instruments
2 TMS320VC5501/5502/5503/5507/5509/5510 DSP Multichannel Buffered Serial Port (McBSP) Reference Guide. Texas Instruments
3 Implementing a Software UART on the TMS320C54x with the McBSP and DMA. Texas Instruments
4 TMS320VC5503/5507/5509/5510 DSP Direct Memory Access (DMA) Controller Reference Guide
5 TMS320C55x Chip Support Library API Reference Guide. Texas Instruments
6 TMS320C6000 McBSP: UART. Texas Instruments
7 安穎,劉麗娜.基于DSP的高速信號(hào)采集與處理系統(tǒng)的設(shè)計(jì)【J】.微計(jì)算機(jī)信息,2005,1:57-58。 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。