一種基于TMS320C55x DSP的UART通信設計
摘要:全雙工異步串行通信在TMS320C55xDSP上的通常實(shí)現方式是利用DSP的McBSP接口加外接芯片實(shí)現,這種設計方法增加了實(shí)現UART的硬件成本和電路設計復雜度。提出了一種直接利用DSP的MCBSP接口和DMA通道實(shí)現UART的方法,給出了使用C語(yǔ)言和CSL的編程方法。與傳統實(shí)現方法相比,具有實(shí)現成本低,硬件電路簡(jiǎn)單,移植性強等特點(diǎn),稍加修改可應用于C5000和C6000各系列芯片中。
關(guān)鍵詞:DSP;全雙工異步串行通信;多通道緩沖串口;DMA;過(guò)采樣
1引言:
MS320C55x數字信號處理器通過(guò)多通道緩沖串口(McBSP)提供了與外設的多種同步串行通信方式。然而,由于DSP中串行通信由數據信號、幀同步信號和時(shí)鐘3種信號配合實(shí)現,其中幀同步信號和數據信號由不同的數據線(xiàn)傳輸。而異步串行通信則在一根傳輸線(xiàn)上實(shí)現數據發(fā)送或接收,且不需要專(zhuān)門(mén)的時(shí)鐘信號線(xiàn)。因此DSP與異步設備的接口,如UART通信實(shí)現相對復雜,需要對McBSP的相關(guān)寄存器進(jìn)行正確初始化。DSP中實(shí)現全雙工異步通信的通常做法是使用專(zhuān)用的串行接口芯片,如TL16C550,這種設計方法編程相對簡(jiǎn)單,但增加了設計成本和電路復雜度。本文介紹了一種TMS320C55xDSP芯片利用McBSP和DMA直接實(shí)現UART的方法,基于該方法實(shí)現的DSP異步串行通信模塊已成功應用于控制偏振圖像采集處理的DSP硬件設備中。 www.51kaifa.com/
2UART在DSP上的實(shí)現
異步串行通信要求DSP能夠模擬和檢測到UART的幀信號。由于DSP串口是同步串口,而且DSP時(shí)鐘為高速時(shí)鐘,經(jīng)分頻或倍頻后無(wú)法保證與UART的異步串行時(shí)鐘精確同步。DSP的幀同步信號無(wú)法與UART的幀信號同步,造成串行通信信號中信號位的偏移。最好的解決方法是減小偏移和對接收的數據流進(jìn)行過(guò)采樣,本文采用了對UART信號的16倍過(guò)采樣。www.51kaifa.com/
2.1McBSP設置
DSP的McBSP通過(guò)3種信號實(shí)現同步通信:數據、幀同步和時(shí)鐘。異步通信發(fā)送和接收各在一條線(xiàn)上進(jìn)行,具有自己的幀時(shí)序。
UART的通信時(shí)鐘由使用的通信波特率(每秒傳輸的數據位個(gè)數)決定,通常為2400,9600,19200等。DSP與UART異步通信時(shí),由于DSP的內部時(shí)鐘頻率通常都不是UART時(shí)鐘頻率的整數位,因而會(huì )造成雙方通信時(shí)數據位的偏移,為了盡量減小這種偏移,McBSP的串口時(shí)鐘需要正確的設置時(shí)鐘頻率以達到與UART波特率相匹配。
數據包(PKTBITS)由起始位、數據位、奇偶校驗位和停止位組成,起始位為1位,停止位通常為1,1.5,2位,數據數通常為8位,如何使用校驗,那么數據包還包括1位校驗位。以上數據位中,每1位都被DSP以16倍波特率的時(shí)鐘頻率過(guò)采樣。
發(fā)送時(shí),為保證UART能收到半個(gè)停止位,需要將DSP的McBSP發(fā)送端口設置為2相的數據幀。第1相為16位的數據字,第2相為8位的數據字。那么第1相數據長(cháng)度為(起始位+數據位+校驗位)個(gè)字,第2相長(cháng)度為停止位的字長(cháng)。發(fā)送時(shí)的總幀長(cháng)(TxPKTBITS)為這兩相的總字長(cháng)。接收數據包格式與發(fā)送相似,其結構如圖2所示。DSP的串口發(fā)送引腳與外部串口設備的接收引腳相連,不使用FSX引腳和CLKX引腳。
接收時(shí),McBSP通過(guò)接收幀同步信號引腳(FSR)檢測數據的到來(lái),根據幀同步信號的不同,幀同步信號可配置成上升沿觸發(fā)或下降沿觸發(fā),由于UART的起始位為低電平,因此使用下降沿觸發(fā)。將UART發(fā)送數據信號與McBSP的數據接收引腳DR和FSR相連,實(shí)現用UART的發(fā)送信號觸發(fā)McBSP的接收幀同步信號。在McBSP接收一幀數據期間,為了防止下降沿再次觸發(fā)一幀數據接收,McBSP應該設置為接收數據包期間忽略幀同步信號。
圖1UART接收數據包的幀格式
接收完一幀數據后,需要對數據解碼,收于DSP發(fā)送和接收時(shí)鐘是UART串口時(shí)鐘頻率的16位,因此每個(gè)UART數據位對應于DSP中1個(gè)16位字(停止位對應8位字)。在McBSP接收寄存器中將接收幀設置為2相,第1相16位字,字長(cháng)為RxPKTBITS(起始位+數據位+校驗位),第2相為8位字,對應于停止位字數。此外,接收幀延時(shí)值應該設置為1位。
3.2McBSP時(shí)鐘采樣率設置
McBSP與UART通信時(shí),McBSP接收到一幀的幀同步信號后,該幀期間之后出現的幀同步信號將被忽略。為了獲得最大數據流量,一幀數據發(fā)送結束時(shí),其停止位后緊接著(zhù)為起始位,幀同步信號的檢測依賴(lài)于停止位到起始位的下降沿。為了正確檢測到幀同步信號,高電平應該至少保持一個(gè)時(shí)鐘周期以上時(shí)間。
理想情況下,串口時(shí)鐘信號邊沿與數據位邊沿精確對應,此時(shí),每個(gè)數據位對應16倍時(shí)鐘周期。起始位和串口時(shí)鐘的下降沿偏最小,如圖3所示。
圖2McBSP串口時(shí)鐘與UART時(shí)鐘精確同步時(shí)的時(shí)序
正常通信時(shí),McBSP的幀同步信號與UART串口的時(shí)鐘之間會(huì )有一定的偏差,如圖所示。
圖3McbSP串口時(shí)鐘與UART時(shí)鐘存在偏差時(shí)的時(shí)序
存在偏差時(shí),為保證McBSP能檢測到接收到信號的下降沿,McBSP的串口采樣時(shí)鐘頻率必須準確設置。其設置方法如公式1、2所示。其中,DIV是McBSP寄存中串口采樣時(shí)鐘分頻值,DSPCLK是DSP的CPU時(shí)鐘頻率,baudrate為通信波特率。(1)
(2)
通信波特率為19200,DSP時(shí)鐘頻率為75MHz,接收數據包為10位(1位起始位,8位數據位,無(wú)校驗,1位停止位:PKTBITS=10,RxPKTBITS=9.5),根據公式1計算得DIV,由于分頻值DIV為整數,因此取DIV。根據公式2計算得DIV,取整后得DIV。取DIV最佳值為244。TMS320VC55xDSP以常用波特率通信時(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.2DMA設置
UART通信時(shí),DSP發(fā)送和接收到的數據存儲在數據存儲器中,為了實(shí)現DSP的高速處理,減少DSP響應McBSP數據寄存器中斷的次數。發(fā)送和接收數據與McBSP發(fā)送和接收寄存器DXR和DRR之間的數據傳輸通過(guò)DMA通道完成。這里以使用DMA通道4和通道5為例,其中,DMA通道4作為數據接收通道,DMA通道5做為數據發(fā)送通道。將通道4和通道5的同步事件分別設置為McBSP串口接收事件和串口發(fā)送事件,DMA通道4的源地址為McBSP的接收寄存器DRR地址,目的地址為數據存儲器中存放接收數據的變量地址;DMA通道5的源地址為數據存儲器中待發(fā)的數據,目的地址為McBSP的DXR寄存器地址。每當McBSP接收到數據時(shí),會(huì )觸發(fā)DMA通道4將接收到的數據拷貝到DSP數據存儲器的相應置,同時(shí)目的地址指針自動(dòng)加1;發(fā)送數據時(shí),DMA通道5將待發(fā)送數據拷貝到DXR,將數據依次發(fā)出。
發(fā)送數據時(shí),待發(fā)字符被打包成適于UART接收的數據格式,以發(fā)送16進(jìn)制無(wú)符號數0xAA為例,首先發(fā)送起始位,然后是數據位最低位,最后發(fā)送停止位。該數值在數據存儲器中按地址由低到高的存放格式為:0x0000,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0x0000,0xFFFF,0xFFFF。
接收到數據后,取過(guò)采樣到的每個(gè)16位二進(jìn)制數據字的中間四位,若中間四位中1的個(gè)數不小于3,則表示收到當前的UART數據位值為1;若中間四位中0的個(gè)數不小于3,則表示收到當前的UART數據位值為0。否則認為數據傳輸出錯。
4程序設計
在McBSP和DMA寄存器設置正確的基礎上,利用TI公司提供的CodeComposerStudio集成開(kāi)發(fā)環(huán)境編寫(xiě)了UART串口通信軟件,軟件開(kāi)發(fā)中使用了CSL(片上支持庫),使整個(gè)開(kāi)發(fā)過(guò)程快速、直觀(guān)、具有很強的可讀性。程序流程如圖所示:
圖4TMS320VC55xUART程序流程圖
5實(shí)驗分析
硬件和軟件設計完成后,進(jìn)行了測試實(shí)驗,實(shí)驗上位機為PC機,DSP處理器為T(mén)I公司的TMS320VC5509A,通信波特率為19200,DSP外部晶振頻率為20MHz,CPU時(shí)鐘頻率為100MHz,UART數據格式為1位起始位,8位數據位,1位停止位,無(wú)校驗。多次實(shí)驗結果表明數據發(fā)收準確,無(wú)誤碼現象發(fā)生。
6結論
DSP系統直接與外部全雙工異步串行設備的通信時(shí),通過(guò)正確的使用DSP上的McBSP和DMA通道,利用16倍過(guò)采樣原理準確的計算McBSP通信接口的采樣值和配置相關(guān)寄存器,能夠實(shí)現DSP與外部異步設備的可靠通信。與傳統的采用串并轉換芯片的實(shí)現方法相比,具有更低的成本更簡(jiǎn)單的外部電路。本文中的程序針對TI公司的TMS320VC5509xDSP芯片編寫(xiě),通過(guò)對少數寄存器的修改,該程序可直接應用于TI公司的C5000和C6000系列DSP芯片上。
本文作者創(chuàng )新點(diǎn):提出了一種直接利用DSP的McBSP接口和DMA通道實(shí)現UART的方法,具有實(shí)現成本低,硬件電路簡(jiǎn)單,移植性強等特點(diǎn)。
參考文獻:
1TMS320VC5509AFixed-PointDigitalSignalProcessorDataManual.TexasInstruments
2TMS320VC5501/5502/5503/5507/5509/5510DSPMultichannelBufferedSerialPort(McBSP)ReferenceGuide.TexasInstruments
3ImplementingaSoftwareUARTontheTMS320C54xwiththeMcBSPandDMA.TexasInstruments
4TMS320VC5503/5507/5509/5510DSPDirectMemoryAccess(DMA)ControllerReferenceGuide
5TMS320C55xChipSupportLibraryAPIReferenceGuide.TexasInstruments
6TMS320C6000McBSP:UART.TexasInstruments
7安穎,劉麗娜.基于DSP的高速信號采集與處理系統的設計【J】.微計算機信息,2005,1:57-58。
評論