??? 摘 要: DSP在與多個(gè)外設(shè)" title="外設(shè)">外設(shè)進(jìn)行通信時(shí),,需要擴(kuò)展異步串行通信" title="串行通信">串行通信接口。以TMS320C6711為例,,采用ST16C554異步串行收發(fā)器,,介紹了目前最先進(jìn)的C6000系列DSP與多路" title="多路">多路RS232,、RS485/422設(shè)備通信的設(shè)計(jì)方案,并給出了軟硬件實(shí)現(xiàn)實(shí)例,。
??? 關(guān)鍵詞: 數(shù)字信號(hào)處理器? 通用異步串行收發(fā)器? 可編程邏輯器件? 光纖陀螺
?
??? DSP與計(jì)算機(jī)通信的外部接口主要可劃分為串行通信口和并行通信口,。串口" title="串口">串口通信包括采用RS232、RS485/422,、USB,、IEEE1394等協(xié)議的通信,并口通信包括采用IEEE488,、IEEE1248等協(xié)議的通信,。本文主要介紹DSP多路RS232、RS485/422通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),,并將此系統(tǒng)應(yīng)用于光纖陀螺" title="光纖陀螺">光纖陀螺三維角速率測(cè)量組合中,。
1 系統(tǒng)方案設(shè)計(jì)
1.1 系統(tǒng)框圖
??? 圖1為DSP多路異步串口通信系統(tǒng)的框圖,。計(jì)算機(jī)接收端為通用的數(shù)據(jù)采集卡,其與DSP之間采用RS485/422協(xié)議,,通信速率可達(dá)921.6kBPS,。光纖陀螺與DSP之間采用RS232協(xié)議,通信速率可達(dá)115.2kBPS。該系統(tǒng)可以實(shí)現(xiàn)DSP與三路RS232設(shè)備和一路RS485/RS422設(shè)備的通信,。
?
1.2 TMS320C6711簡(jiǎn)介
??? TMS320C6000系列DSP芯片最初主要是為移動(dòng)通信基站的信號(hào)處理而推出的超級(jí)處理芯片,,200MHz時(shí)鐘的TMS320C6711完成1024點(diǎn)的FFT算法的時(shí)間只要66?滋s,比傳統(tǒng)的DSP芯片要快一個(gè)數(shù)量級(jí),,因此在民用和軍用領(lǐng)域都有廣闊的應(yīng)用前景,。在軍事通信、電子對(duì)抗,、雷達(dá)系統(tǒng),、精確制導(dǎo)武器等高智能化的應(yīng)用領(lǐng)域,這種芯片的處理能力具有不可替代的優(yōu)勢(shì)[2],。
??? TMS320C67XX是TMS320C6000中的浮點(diǎn)系列,,TMS320C6711是其中性?xún)r(jià)比較好的一款芯片。正如其它的TMS320C6000系列芯片一樣,,該芯片提供了兩個(gè)多通道同步緩沖串口,,沒(méi)有提供異步串口,因此需要進(jìn)行異步串口擴(kuò)展,。
1.3? 通信方案設(shè)計(jì)
??? 目前幾乎所有的數(shù)字信號(hào)處理器都提供了一個(gè)或多個(gè)串行接口,,然而,多數(shù)DSP芯片提供的是同步串口,。在實(shí)際的應(yīng)用中,,也需要DSP能夠與多個(gè)外設(shè)進(jìn)行異步串行通信,如與PC機(jī)或光纖陀螺之間進(jìn)行串行數(shù)據(jù)傳輸就要求DSP系統(tǒng)具有多路UART串行接口,;當(dāng)然也可以利用通用的I/O口構(gòu)成串口,,由軟件設(shè)定波特率(在DSP不繁忙的情況下,往往采用這種方法),。但是當(dāng)這兩種I/O線(xiàn)被占用或?qū)νㄐ诺膶?shí)時(shí)性要求較高時(shí),,DSP應(yīng)該通過(guò)擴(kuò)展異步通信芯片來(lái)實(shí)現(xiàn)高速串行通信。
??? 針對(duì)這種情況,,本文研究并實(shí)現(xiàn)一種簡(jiǎn)單可靠的異步串口擴(kuò)展方法,,即在DSP的并行總線(xiàn)上擴(kuò)展UART芯片,用硬件實(shí)現(xiàn)異步數(shù)據(jù)傳輸,。該方法的優(yōu)點(diǎn)是軟件實(shí)現(xiàn)簡(jiǎn)單,,代價(jià)是在總線(xiàn)上需擴(kuò)展其它設(shè)備。由于本方案要實(shí)現(xiàn)DSP與四路外設(shè)的異步串口通信,綜合考慮硬件連接和軟件編程的方便性,,采用四通道ST16C554串行異步收發(fā)器與多路電平轉(zhuǎn)換芯片MAX3245E來(lái)完成,。這樣,用最簡(jiǎn)單的硬件連接和軟件編程就能實(shí)現(xiàn)四路異步的串行通信,。
1.4? ST16C554簡(jiǎn)介
??? ST16C554是EXAR公司的異步通信芯片,其主要特點(diǎn)如下[3]:
??? ·與ST16C454,、ST68C454,、ST68C554、TL16C554兼容,;
??? ·16字節(jié)的發(fā)送與接收FIFO,;
?? ?·接收控制和發(fā)送控制相互獨(dú)立的四通道選擇;
??? ·四個(gè)可選的接收FIFO中斷觸發(fā)級(jí),;
????·標(biāo)準(zhǔn)MODEM接口,;
??? ·最高可達(dá)1.5M的波特率,其波特率發(fā)生器可編程,;
??? ·數(shù)據(jù)位長(zhǎng)度為5,、6、7,、8,停止位長(zhǎng)度為1,、1.5、2,;
??? ·具有偶校驗(yàn),、奇校驗(yàn)或無(wú)校驗(yàn)?zāi)J健?BR>??? ST16C554不僅能將DSP發(fā)送的數(shù)據(jù)進(jìn)行并/串轉(zhuǎn)換,還能將從外設(shè)或MODEM 接收的數(shù)據(jù)進(jìn)行串/并轉(zhuǎn)換,,能夠同時(shí)完成四個(gè)獨(dú)立通道的收發(fā),。同時(shí),ST16C554還具有四組獨(dú)立的16字節(jié)的接收與發(fā)送FIFO,,可以通過(guò)使能FIFO及設(shè)置FIFO中斷觸發(fā)級(jí)有效地減少CPU的中斷,,提高系統(tǒng)效率及可靠性。
2 系統(tǒng)硬件設(shè)計(jì)
??? 系統(tǒng)的硬件設(shè)計(jì)框圖如圖2所示,。該硬件系統(tǒng)由電源轉(zhuǎn)換電路,、電源監(jiān)控電路、DSP,、SDRAM,、FLASH ROM、UART,、電平轉(zhuǎn)換芯片及可編程邏輯芯片等組成,。電源轉(zhuǎn)換電路完成5V至3.3V/1.8V的DC-DC轉(zhuǎn)換,提供系統(tǒng)設(shè)計(jì)中所有低壓芯片的電源。電源監(jiān)控電路用來(lái)監(jiān)控系統(tǒng)所有電源電壓,,當(dāng)電源電壓低于額定值時(shí),,DSP及UART復(fù)位,對(duì)芯片起保護(hù)作用,。ST16C554 UART同時(shí)完成A,、B、C,、D四個(gè)通道的通信,,其中A、B,、C三個(gè)通道完成三路RS232的異步收發(fā),,波特率為115.2kBPS,D通道完成RS485/422的通信,,波特率為921.6kBPS,,且波特率可以在相應(yīng)的控制寄存器中分別設(shè)置。當(dāng)外接晶振為14.7456MHz時(shí),,可以方便地完成上述波特率的設(shè)置,。多路UART-RS232電平轉(zhuǎn)換器件MAX3245轉(zhuǎn)換速率可達(dá)1MBPS??删幊踢壿嬓酒瑸閄ILINX公司的CPLD(XC9572XL),,用以完成系統(tǒng)中所有的邏輯控制。
?
??? 當(dāng)DSP對(duì)UART進(jìn)行讀寫(xiě)操作時(shí),,必然涉及到UART的實(shí)際地址在DSP中的轉(zhuǎn)換,。本方案中DSP的CE3空間設(shè)為8位異步模式,相應(yīng)的地址范圍為0xB0000000~0xBFFFFFFF,。而對(duì)應(yīng)于UART的讀寫(xiě)操作地址以及四個(gè)獨(dú)立通道的選通地址,,就要加上相應(yīng)的偏移量。相應(yīng)的讀寫(xiě)及片選邏輯由CPLD完成,。CPLD相應(yīng)的內(nèi)部邏輯如下:
??? ——CE3 COMMUNICATION SPACE ADDR=B0000000-BFFFFFFF
??? D3:? CSF3<=CE3 OR (NOT EA5) ;? --通道C FOG3
??? ADDR=B0000008
???????? CSF2<=CE3 OR (NOT EA4) ;? --通道B FOG2
??? ADDR=B0000004
? ?????? CSF1<=CE3 OR (NOT EA3) ;? --通道A FOG1
??? ADDR=B0000002
? ?????? CSF4<=CE3OR(NOT EA2) ;???? --通道D RS422
??? ADDR=B0000001
??? 其中,,CSF1~CSF4為通道選擇信號(hào),低電平有效,;EA2~EA5為DSP的地址線(xiàn),。
3 軟件設(shè)計(jì)
??? 該系統(tǒng)軟件設(shè)計(jì)包括PC機(jī)、TMS320C711及ST16C554的初始化和通信協(xié)議等,。下面將結(jié)合本系統(tǒng)的硬件給出TMS320C711初始化ST16C554的程序,。初始化的主要任務(wù)是設(shè)置操作每個(gè)通道所需要的參數(shù),這些參數(shù)包括串行通信時(shí)數(shù)據(jù)串的數(shù)據(jù)位數(shù),、停止位數(shù),、奇偶校驗(yàn)等,。另外,還需要設(shè)置發(fā)送和接收的波特率及中斷方式,。
??? ST16C554的內(nèi)部寄存器設(shè)置如表1所示,,其中RHR為接收保持寄存器,THR為發(fā)送保持寄存器,。FCR為FIFO控制寄存器,,設(shè)置為FIFO 使能。IER為中斷使能寄存器,,與FCR配合使用,,設(shè)置為FIFO中斷方式,也可以設(shè)置為DMA方式,。LSR為線(xiàn)性狀態(tài)寄存器,通過(guò)查詢(xún)最低位檢測(cè)FIFO或RHR中是否有數(shù)據(jù),。DLL及DLM為波特率設(shè)置寄存器,,通過(guò)對(duì)晶振分頻完成波特率的設(shè)置。當(dāng)LCR的最高位為1時(shí),,才能改變DLL及DLM的設(shè)置,。
?
??? 以通道A為例,DSP對(duì)ST16C554初始化的C語(yǔ)言程序如下:
?? ?/*FOG1*/
??? *(char *)0xb0000032=0x80;/*lcr=80*/
??? *(char *)0xb0000002=0x08;/*dll=08*/
??? *(char *)0xb0000012=0x00;/*dlh=00*/
??? *(char *)0xb0000032=0x1b;/*lcr=1b*/
??? *(char *)0xb0000022=0x01;/*fcr=01*/
??? *(char *)0xb0000012=0x01;/*ier=01*/
??? *(char *)0xb0000022=0x03;/*fcr=01*/
??? *(char *)0xb0000022=0x01;/*fcr=01*/
??? 四個(gè)通道都設(shè)置為FIFO方式及中斷使能,。通道A,、通道B、通道C分別設(shè)置給RS232,,波特率為115.2kBPS,;通道D設(shè)置給RS485/422,波特率為921.6kBPS,。
??? DSP對(duì)通道A的數(shù)據(jù)讀取程序如下:
??? while ((readtp & 0x01)!=0)
?? ? {readdata=*(char *)0xb0000002;/*read rhr */
???? readtp=*(char *)0xb0000052;/*read lsr */
??? }
4 與光纖陀螺的對(duì)接測(cè)試
??? 將該系統(tǒng)與光纖陀螺對(duì)接,,測(cè)試表明該系統(tǒng)完全滿(mǎn)足設(shè)計(jì)要求。
??? 圖3為陀螺儀的標(biāo)度因數(shù)測(cè)試結(jié)果,,圖中橫坐標(biāo)為輸入角速率,,縱坐標(biāo)為DSP輸出的數(shù)據(jù)經(jīng)D/A轉(zhuǎn)換后的電壓輸出值,圖中曲線(xiàn)是根據(jù)輸入輸出數(shù)據(jù)用最小二乘法擬合求得的,。
?
??? 該系統(tǒng)的軟件及硬件已調(diào)試通過(guò),,并成功地應(yīng)用于航天光纖陀螺角速度測(cè)量系統(tǒng)中。該方案能夠靈活高效地完成DSP與多個(gè)PC機(jī)或傳感器(即多個(gè)光纖陀螺)之間的異步串口通信,,還可以實(shí)現(xiàn)與MODEM之間的標(biāo)準(zhǔn)接口,。另外,若利用DSP的EDMA功能完成收發(fā),,還可以進(jìn)一步提高系統(tǒng)性能,,實(shí)現(xiàn)高速串行通信[4]。
參考文獻(xiàn)
1 胡劍凌,徐 盛.數(shù)字信號(hào)處理系統(tǒng)的應(yīng)用和設(shè)計(jì). 上海:上海交通大學(xué)出版社,,2003
2 How to Begin Development Today with the High-Performance Floating TMS320C67x DSP.Texas Instruments,2003
3 ST16C554 QUAD UART With 16 Byte Fifos. Copyright?1991 EXAR Corporation
4 TMS320C6711,,TMS320C6711B,TMS320C6711C Floatingpoint Digital Signal Processors. Texas Instruments, 2003