摘 要:基于DSP的漏水檢測儀器在實現漏點定位時需要使用無線通信模塊,TI公司的TMS320VC5402只提供了同步串行接口McBSP,而無線模塊XBee為異步串口。本文采用16倍過采樣的方法,結合直接存儲器訪問(DMA),通過對相關寄存器的適當配置,將McBSP軟件模擬成通用異步接收/發送器(UART),從而實現DSP與XBee模塊的連接通信。再通過對XBee模塊的適當配置,可將從機檢測信號無線傳給主機,在主機中處理兩路信號,從而確定出漏點位置。試驗得到的漏點位置在誤差范圍內,證明了該法的可行性。
關鍵詞:DSP;McBSP;DMA;XBee;UART
中國分類號:TP274 文獻標識碼:A
1 引 言
數字信號處理器(DSP)具有強大的數據處理能力,使其在高速數字信號處理方面得到廣泛的應用。TMS320VC5402(以下簡稱C5402)是TI公司的一款低功耗、高性能的16位定點DSP芯片,在音頻信號處理等方面得到應用。選用其作為漏水檢測儀器的核心處理芯片,對管道振動信號進行頻譜分析,快速判斷出是否漏水,而在進行漏水點定位時需要在管道兩端同時采集信號,并將兩端信號進行互相關運算,進而確定出漏點位置。因此為了迅速找出漏點,需要快速地將其中一端采集信號無線傳輸給另一端。Digi公司的無線通信模塊XBee室外最大傳輸距離可達120米,無線數據傳輸速率為250 kbps,功耗僅為幾毫瓦,滿足設計需要。
C5402的McBSP為同步串口,而XBee為異步串口。常用的DSP應用系統中擴展異步串行接口的方法有:1)利用專用的異步串口芯片(如TI公司的TL16C550),在DSP的并行總線上進行擴展;2)利用McBSP進行適當的硬件擴展(如MAXIM公司的MAX3111);3)利用CPLD/FPGA實現UART;4)利用DSP通用I/O、外部中斷以及定時器編程實現UART。方法1)和2)雖然軟件實現簡單,但是需要硬件擴展,增加了成本,且使得目標系統復雜化;方法3)也需要增加硬件器件,且需要硬件描述語言編程;方法4)雖只需軟件編程實現,但軟件復雜,由于不斷響應中斷,使得CPU負擔很大。本文通過分析UART的數據幀結構,利用McBSP和直接存儲器訪問(DMA),在DSP中實現UART,從而與XBee連接通信,節約硬件成本,且只占用較少CPU資源。
2 C5402集成外設概述[1]
2.1 McBSP
McBSP在結構上可以分為一個數據通道和一個控制通道。其中數據通道完成數據的發送和接收。數據發送是雙緩沖機制(DXR-XSR-DX),接收是三緩沖機制(DR-RSR-RBR-DRR),使得片內的數據搬移和外部數據的通信可以同時進行。而控制通道通過子地址尋址方式管理和配置一系列存儲器映射控制寄存器,產生內部時鐘和幀同步信號,并對這些信號進行控制以及選擇多通道。C5402提供兩個McBSP,每個McBSP包括六個信號線:BDX(串口數據發送)、BDR(串口數據接收)、BFSX(發送幀同步信號)、BFSR(接收幀同步信號)、BCLKX(發送時鐘信號)、BCLKR(接收時鐘信號)。
2.2 DMA
信號處理中經常涉及大量的數據傳輸,這會大量占用DSP的CPU資源,為了降低CPU的負荷,提高效率,通常在DSP片內設計DMA。DMA提供了塊傳輸(幀傳輸、元素傳輸)和自動緩存等傳輸方式。為了實現數據的自動傳輸,DMA實現了與外部中斷等事件的同步功能,同時DMA傳輸完畢后也可以向CPU請求中斷,進行相應處理。DMA是獨立于CPU的設備,一旦DMA通過子地址尋址方式配置和操作相關控制寄存器,確定好源地址、目的地址以及傳輸事件等諸多因素后,就能獨立于CPU工作。
3 C5402和XBee的UART實現
一個UART數據幀(PKTBITS)由開始位、數據位、校驗位和停止位組成,如圖1所示。開始位為1位,數據位通常為8位,停止位通常有1、1.5或2位,校驗位為1位,也可以不使用校驗。同步裝置與異步信號通信最大的問題是數據的接收,而數據的發送則比較簡單。由于異步串口沒有時鐘信號,所以McBSP信號與UART信號的開始邊沿不可避免存在偏差,加之DSP高速時鐘無法保證是UART波特率(baudrate)的整數倍,所以就無法保證兩信號的精確同步。為減小偏差,可以對UART數據流進行過采樣,考慮到C5402為16位定點DSP,便采用16倍采樣率過采樣,即UART的1位數據對應McBSP的16位。過采樣還有利于高速的DSP和低速的UART通信。
3.1 McBSP的設置
為了獲得最大的通信速率,數據幀發送結束時停止位后緊接著為開始位,幀同步信號即為停止位到開始位的下降沿。由于McBSP時鐘信號與UART信號存在偏差,且幀同步信號之前的停止位高電平應至少保持一個時鐘周期以上,所以在數據接收時,只接收半個停止位。
發送數據時,為保證UART能發送半個停止位,McBSP發送數據設置為雙相幀,第一相為16位字,幀長為開始位、數據位、校驗位個數之和;第二相為8位字,幀長為HSTOPBITS(半停止位個數,=2*STOPBITS)。發送幀的總長度(TxPKTBITS)則為兩相之和。將McBSP的BDX信號線與XBee的DIN信號線相連,BFSX和BCLKX懸空即可。
接收數據時,將XBee的DOUT端與McBSP的BDR信號線和BFSR信號線相連,用XBee的發送信號來觸發McBSP的接收幀同步信號。由圖1可以看出,UART數據幀閑置時為高電平,開始位為低電平,因此將接收幀同步信號配置為下降沿觸發。為防止下降沿再次觸發McBSP,需忽略接收一幀信號期間的幀同步信號。由于只接收半個停止位,所以接受幀總長RxPKTBITS=開始位+數據位+校驗位+0.5。
4 試驗分析
本設計應用于漏水檢測系統中,當主機判斷出管道漏水后,向從機發送一個開始定位的命令,該命令經由McBSP模擬的UART傳給主機XBee模塊,再經由主機XBee無線發送到從機。兩機同時采集管道振動信號,從機將采集到的信號又經McBSP模擬的UART傳給從機XBee模塊,再由從機XBee無線傳回主機。主機通過對兩路信號的互相關運算,確定出漏水點位置。波特率設置為115200,DSP時鐘頻率為100 MHz,XBee的UART數據幀格式為1位開始位,8位數據位,無校驗位,1位停止位。經試驗,測出的漏水點位置在誤差范圍內,可以驗證C5402經由軟件模擬的UART和XBee的數據傳輸準確。
5 結 論
本文采用過采樣的方法,結合DMA,將C5402的McBSP軟件模擬成UART,實現了與XBee無線通信模塊的數據傳輸,節約了硬件成本和硬件電路的設計成本,且移植性強。
參考文獻
[1]張雄偉,曹鐵勇,陳亮,等.DSP芯片的原理與開發應用:4版[M].北京:電子工業出版社,2009.3.
[2]Texas Instruments Incorporated. TMS320C54x DSP Reference Set Volume 5:Enhanced Peripherals[EB/OL].1999.http://www.ti.com.cn/lsds/ti_zh/dsp/c5000_dsp/c54x/tech_docs.page.
[3]成蘭,崔亞量,田原.一種基于TMS320C55x DSP的UART通信設計[J].微計算機信息:嵌入式與SOC,2008,24(2-2):153-154;2008,24(2-2):101.
[4]DENARDO RJ. Implementing a Software UART on the TMS320C54x with the McBSP and DMA[EB/OL].2000.http://www.ti.com.cn/lsds/ti_zh/dsp/c5000_dsp/c54x/tech_docs.page.
[5]Digi International. XBee/XBee-Pro ZB OEM RF Modules[EB/OL].2008.http://www.digi.com/support/.