摘要:DSP在與多個外設進行通信時,需要擴展異步串行通信接口。以TMS320C6711為例,采用ST16C554異步串行收發器,介紹了目前最先進的C6000系列DSP與多路RS232、RS485/422設備通信的設計方案,并給出了軟硬件實現實例。
DSP與計算機通信的外部接口主要可劃分為串行通信口和并行通信口。串口通信包括采用RS232、RS485/422、USB、IEEE1394等協議的通信,并口通信包括采用IEEE488、IEEE1248等協議的通信。本文主要介紹DSP多路RS232、RS485/422通信系統的設計與實現,并將此系統應用于光纖陀螺三維角速率測量組合中。
1 系統方案設計
1.1 系統框圖
圖1為DSP多路異步串口通信系統的框圖。計算機接收端為通用的數據采集卡,其與DSP之間采用RS485/422協議,通信速率可達921.6kBPS。光纖陀螺與DSP之間采用RS232協議,通信速率可達115.2kBPS。該系統可以實現DSP與三路RS232設備和一路RS485/RS422設備的通信。
1.2 TMS320C6711簡介
TMS320C6000系列DSP芯片最初主要是為移動通信基站的信號處理而推出的超級處理芯片,200MHz時鐘的TMS320C6711完成1024點的FFT算法的時間只要66μs,比傳統的DSP芯片要快一個數量級,因此在民用和軍用領域都有廣闊的應用前景。在軍事通信、電子對抗、雷達系統、精確制導武器等高智能化的應用領域,這種芯片的處理能力具有不可替代的優勢[2]。TMS320C67XX是TMS320C6000中的浮點系列,TMS320C6711是其中性價比較好的一款芯片。正如其它的TMS320C6000系列芯片一樣,該芯片提供了兩個多通道同步緩沖串口,沒有提供異步串口,因此需要進行異步串口擴展。
1.3 通信方案設計
目前幾乎所有的數字信號處理器都提供了一個或多個串行接口,然而,多數DSP芯片提供的是同步串口。在實際的應用中,也需要DSP能夠與多個外設進行異步串行通信,如與PC機或光纖陀螺之間進行串行數據傳輸就要求DSP系統具有多路UART串行接口;當然也可以利用通用的I/O口構成串口,由軟件設定波特率(在DSP不繁忙的情況下,往往采用這種方法)。但是當這兩種I/O線被占用或對通信的實時性要求較高時,DSP應該通過擴展異步通信芯片來實現高速串行通信。
針對這種情況,本文研究并實現一種簡單可靠的異步串口擴展方法,即在DSP的并行總線上擴展UART芯片,用硬件實現異步數據傳輸。該方法的優點是軟件實現簡單,代價是在總線上需擴展其它設備。由于本方案要實現DSP與四路外設的異步串口通信,綜合考慮硬件連接和軟件編程的方便性,采用四通道ST16C554串行異步收發器與多路電子轉換芯片MAX3245E來完成。這樣,用最簡單的硬件連接和軟件編程就能實現四路異步的串行通信。
1.4 ST16C554簡介
ST16C554是EXAR公司的異步通信芯片,其主要特點如下[3]:?
·與ST16C454、ST68C454、ST68C554、TL16C554兼容;
·16字節的發送與接收FIFO;
·接收控制和發送控制相互獨立的四通道選擇;
·四個可選的接收FIFO中斷觸發級;
·標準MODEM接口;
·最高可達1.5M的波特率,其波特率發生器可編程;
·數據位長度為5、6、7、8,停止位長度為1、1.5、2;
·具有偶校驗、奇校驗或無校驗模式。
ST16C554不僅能將DSP發送的數據進行并/串轉換,還能將從外設或MODEM接收的數據進行串/并轉換,能夠同時完成四個獨立通道的收發。同時,ST16C554還具有四組獨立的16字節的接收與發送FIFO,可以通過使能FIFO及設置FIFO中斷觸發級有效地減少CPU的中斷,提高系統效率及可靠性。
2 系統硬件設計
系統的硬件設計框圖如圖2所示。該硬件系統由電源轉換電路、電源監控電路、DSP、SDRAM、FLASH ROM、UART、電平轉換芯片及可編程邏輯芯片等組成。電源轉換電路完成5V至3.3V/1.8V的DC-DC轉換,提供系統設計中所有低壓芯片的電源。電源監控電路用來監控系統所有電源電壓, 當電源電壓低于額定值時,DSP及UART復位,對芯片起保護作用。ST16C554 UART同時完成A、B、C、D四個通道的通信,其中A、B、C三個通道完成三路RS232的異步收發,波特率為115.2kBPS,D通道完成RS485/422的通信,波特率為921.6kBPS,且波特率可以在相應的控制寄存器中分別設置。當外接晶振為14.7456MHz時,可以方便地完成上述波特率的設置。多路UART-RS232電平轉換器件MAX3245轉換速率可達1MBPS。可編程邏輯芯片為XILINX公司的CPLD(XC9572XL),用以完成系統中所有的邏輯控制。
當DSP對UART進行讀寫操作時,必然涉及到UART的實際地址在DSP中的轉換。本方案中DSP的CE3空間設為8位異步模式,相應的地址范圍為0xB0000000~0xBFFFFFFF。而對應于UART的讀寫操作地址以及四個獨立通道的選通地址,就要加上相應的偏移量。相應的讀寫及片選邏輯由CPLD完成。CPLD相應的內部邏輯如下:
——CE3 COMMUNICATION SPACE ADDR=B0000000—BFFFFFFF
D3: CSF3<=CE3 OR(NOT EA5);--通道C FOG3ADDR=B0000008
CSF2<=CE3 OR(NOT EA4);--通道B FOG2ADDR=B0000004
CSFl<=CE3 OR(NOT EA3);--通道A FOG1ADDR=B0000002
CSF4<=CE30R(NOT EA2);--通道D RS422ADDR=B0000001
其中,CSF1~CSF4為通道選擇信號,低電平有效;EA2~EA5為DSP的地址線。
3 軟件設計
該系統軟件設計包括PC機、TMS320C711及ST16C554的初始化和通信協議等。下面將結合本系統的硬件給出TMS320C711初始化ST16C554的程序。初始化的主要任務是設置操作每個通道所需要的參數,這些參數包括串行通信時數據串的數據位數、停止位數、奇偶校驗等。另外,還需要設置發送和接收的波特率及中斷方式。
其中RHR為接收保持寄存器,THR為發送保持寄存器。FCR為FIFO控制寄存器,設置為FIFO使能。IER為中斷使能寄存器,與FCR配合使用,設置為FIFO中斷方式,也可以設置為DMA方式。LSR為線性狀態寄存器,通過查詢最低位檢測FIFO或RHR中是否有數據。DLL及DLM為波特率設置寄存器,通過對晶振分頻完成波特率的設置。當LCR的最高位為1時,才能改變DLL及DLM的設置。
以通道A為例,DSP對ST16C554初始化的C語言程序如下:
/*FOG1*/
*(char*)0xb0000032=0x80;/*lcr=80*/
*(char*)0xb0000002=0x08;/*dll=08*/
*(char*)0xb0000012=0x00;/*dlh=00*/
*(char*)0xb0000032=0xlb;/*lcr=1b*/
*(char*)0xb0000022=0x01;/*fcr=01*/
*(char*)0xb0000012=0x01;/*ier=01*/
*(char*)0xb0000022=0x03;/*fcr=01*/
*(char*)0xb0000022=0x01;/*fcr=01*/
四個通道都設置為FIFO方式及中斷使能。通道A、通道B、通道C分別設置給RS232,波特率為115.2kBPS;通道D設置給RS485/422,波特率為921.6kBPS。
DSP對通道A的數據讀取程序如下:
while((readtp & 0x01)!=0)
{readdata=*(char*)0xb0000002;/*read rhr */
readtp=*(char*)0xb0000052;/*read 1sr*/
}
4 與光纖陀螺的對接測試
將該系統與光纖陀螺對接,測試表明該系統完全滿足設計要求。
圖3為陀螺儀的標度因數測試結果,圖中橫坐標為輸入角速率,縱坐標為DSP輸出的數據經D/A轉換后的電壓輸出值,圖中曲線是根據輸入輸出數據用最小二乘法擬合求得的。
該系統的軟件及硬件已調試通過,并成功地應用于航天光纖陀螺角速度測量系統中。該方案能夠靈活高效地完成DSP與多個PC機或傳感器(即多個光纖陀螺)之間的異步串口通信,還可以實現與MODEM之間的標準接口。另外,若利用DSP的EDMA功能完成收發,還可以進一步提高系統性能,實現高速串行通信[4]。
評論
查看更多