摘要
本文探討了使用MSP430F5xxx實現(xiàn)ETC系統(tǒng)中實時HDLC編解碼的方法,。MSP430F5xxx是TI公司MSP430家族最新產(chǎn)品序列,采用先進的0.18工藝,,1MIPS消耗的電流低到了驚人的160uA,。同時,F(xiàn)5xx產(chǎn)品都配備了高效靈活的DMA模塊,,對16bit數(shù)據(jù)進行搬移只需要2個時鐘周期,。本文給出了結(jié)合F5xx的DMA,TimerA,,CRC16及SPI,,實現(xiàn)幾乎實時的HDLC FM0軟解碼辦法和利用SPI的便捷的FM0編碼方法。本文包括相關(guān)的兩個實例代碼,。
MSP430介紹
TI公司的MSP430 單片機產(chǎn)品系列具備16-bit RSIC架構(gòu),,超低功耗。作為MSP430最新產(chǎn)品序列,,F(xiàn)5xxx首次采用0.18um工藝,,1MIPs消耗的電流低到了驚人的160uA,主頻達到 25MIPs ,。同時,,MSP430F5xxx提供了豐富的片上功能模塊,例如,,硬件的RTC,,12-bit ADC,,靈活的時鐘系統(tǒng),硬件CRC16,,電源管理模塊和多通道的靈活強大的DMA,,支持待機模式下的數(shù)據(jù)交換。
高速公路不停車收費系統(tǒng)(ETC)介紹
不停車收費系統(tǒng)(又稱電子收費系統(tǒng)Electronic Toll Collection System,,簡稱ETC系統(tǒng))是利用RFID技術(shù),實現(xiàn)車輛不停車自動收費的智能交通子系統(tǒng),。該系統(tǒng)通過路側(cè)單元RSU(Road Side Unit)與車載電子標(biāo)簽之間OBU(On Board Unit)的專用短程通信,,在不需要司機停車和收費人員操作的情況下,自動完成收費處理過程,。
ETC車載單元結(jié)構(gòu)
圖 1. ETC OBU結(jié)構(gòu)圖
如圖一所示,,OBU由電池系統(tǒng),MCU,,射頻,,顯示和讀卡部分(ESAM卡,CPU卡,,射頻卡)組成,。MCU作為整個系統(tǒng)的中心,負責(zé)管理顯示,,讀卡以及與射頻部分的數(shù)據(jù)處理及交換,。
FM0編碼方式介紹
在車輛通過收費站時,OBU和RSU通過5.8G的載波調(diào)制,,進行高速的數(shù)據(jù)交換,。數(shù)據(jù)采用HDLC FM0調(diào)制。FM0編碼遵循以下三個規(guī)則:
A.一個周期內(nèi)有電平跳變表示”0” ;
B.一個周期內(nèi)沒有電平跳變表示”1”;
C.相鄰兩個周期電平相反,。
數(shù)據(jù)形式請參考圖2
圖 2. FM0編碼方式
車載電子標(biāo)簽(OBU)對MCU的挑戰(zhàn)
車載電子標(biāo)簽系統(tǒng)對MCU有兩個挑戰(zhàn) ,。一是低功耗;二是高速數(shù)據(jù)通信能力,。
車載電子標(biāo)簽的電池要求有5年以上壽命或者能夠支持1萬次以上交易,。整個系統(tǒng)的低功耗設(shè)計成為工程師們的首要任務(wù)。其次,,RSU對OBU下行數(shù)據(jù)波特率達到了256Kbps,,上行數(shù)據(jù)波特率512Kbps。由于車輛通行時間非常短,,需要OBU對RSU的數(shù)據(jù)和命令快速響應(yīng),。而數(shù)據(jù)包最長能夠達到 1Kbits,不允許OBU收下整個數(shù)據(jù)包之后再解碼,,這要求MCU有實時編解碼的能力,。
一般情況下,,對FM0的軟解碼需要得到數(shù)據(jù)的電平寬度,從而實現(xiàn)解碼,。通常有兩種方式,,一種是Timer捕獲數(shù)據(jù)沿,然后軟件在中斷中判斷數(shù)據(jù)沿之間的寬度,。另外一種是定時采樣數(shù)據(jù)口線的電平,,通過計數(shù)方式得到電平寬度。ETC下行數(shù)據(jù)速率達到256Kbps,,對數(shù)據(jù)“0”來講,,數(shù)據(jù)跳變沿之間的寬度只有 2uS。對數(shù)據(jù)“1”來講,,數(shù)據(jù)沿寬度只有4uS,。以第一種方式為例,傳統(tǒng)的軟解碼方式過程如下:
圖 3. Timer 捕獲中斷方式
如圖2所示,,數(shù)據(jù)接收過程中,,Timer會每2uS或者4uS捕獲到一個數(shù)據(jù)沿,并把數(shù)據(jù)沿保存到對應(yīng)寄存器,。所以,,Timer捕獲寄存器里的數(shù)據(jù)會最快每2uS更新一次。這就需要CPU速度足夠快,,能夠在至少2uS之內(nèi)完成解碼過程,。否則,Timer捕獲寄存器的數(shù)據(jù)就會被新的數(shù)據(jù)覆蓋掉,,造成解碼錯誤,。假設(shè)MCU完成1個bit解碼的時間需要50個cycle,那么至少需要MCU主頻達到25MIPS以上才能實現(xiàn)實時解碼,。通常,,我們會選取主頻超過40MIPs的MCU,而這些高速MCU功耗往往難以滿足ETC系統(tǒng)的要求,。所以,,很多ETC生產(chǎn)商采用雙MCU的方式,由一顆高速MCU實現(xiàn)FM0 實時編解碼,,另外還有一顆低功耗MCU,,通常是MSP430來管理整個系統(tǒng)的功耗。這增加了系統(tǒng)的成本和復(fù)雜度,。MSP430F5xxx的問世,,能夠同時滿足ETC系統(tǒng)對MCU所有的挑戰(zhàn),解決了客戶的困擾。
用F5xxx 片上DMA和TimerA捕獲功能實現(xiàn)FM0實時解碼的方法
MSP430F5xxx卓越的低功耗特性能夠滿足ETC OBU的低功耗要求,。作為MSP430最新產(chǎn)品序列,,F(xiàn)5xxx首次采用0.18um工藝,1MIPs消耗的電流低到了驚人的160uA,,片上PMM(電源管理模塊)讓用戶能夠根據(jù)MCU負荷靈活調(diào)節(jié)核電壓,,確保功耗最低。另外,,具備多種低功耗狀態(tài),。在典型的LPM3模式下,打開RTC,,RAM數(shù)據(jù)保持的情況下功耗僅為2uA,。
除了卓越的低功耗特性外,MSP430F5xx主頻雖然最高只能達到25MIPS,,但由于有靈活的多通道DMA,能夠與Timer聯(lián)動,,實現(xiàn)數(shù)據(jù)的自動搬移而不干擾到CPU,這極大的增強了MCU的數(shù)據(jù)吞吐能力,,使主頻不再成為瓶頸,而完成對FM0近乎實時的解碼,。另外,,硬件的CRC16模塊讓 MCU只需要操作寄存器就可以完成數(shù)據(jù)校驗。利用DMA和CRC16的實時解碼過程如圖4所示:
圖 4. DMA自動數(shù)據(jù)搬移的解碼方式
數(shù)據(jù)接收過程中,,Timer每2uS或者4uS捕獲到一個數(shù)據(jù)沿,,這時會自動觸發(fā)DMA,DMA自動將Timer寄存器的數(shù)據(jù)搬移到RAM區(qū)的指定數(shù)組當(dāng)中,。整個數(shù)據(jù)接收過程不需要CPU的參與,。有了DMA的存在,CPU就不需要頻繁的進出中斷去取數(shù)據(jù),,也不用擔(dān)心Timer捕獲寄存器數(shù)據(jù)的丟失,,只需專注于解碼過程。
圖 5. FM0 DMA方式解碼圖示
解碼過程說明:
1. 待機狀態(tài):TimerA配置成捕獲模式,,使能TimerA中斷,,等待數(shù)據(jù)到來
2. 捕獲到第一個數(shù)據(jù)沿:在TimerA中斷中使能DMA,使能TimerB及TimerB中斷
3. 數(shù)據(jù)接收:DMA自動將后續(xù)的數(shù)據(jù)沿搬移到內(nèi)存數(shù)組中,;同時MCU解碼
4. 數(shù)據(jù)結(jié)束:TimerB判斷數(shù)據(jù)接收結(jié)束
5. 解碼結(jié)束
圖 6. 程序流程圖
實測結(jié)果:
采用120bytes的數(shù)據(jù)做FM0解碼測試,,其中數(shù)據(jù)位”1”和“0”約各占50%。MSP430F5438完成解碼后,,通過串口輸出數(shù)據(jù)如圖7所示:
圖 7. 串口接收到的數(shù)據(jù)
對上圖1Kbits數(shù)據(jù),,實測MCU完成解碼,滯后數(shù)據(jù)包接收完畢約220uS.如圖8所示
圖 8. 解碼實時性
使用MSP430F5xx SPI及DMA實現(xiàn)FM0編碼及發(fā)送的辦法
ETC OBU系統(tǒng)MCU上行數(shù)據(jù)率是512Kbps。通過靈活應(yīng)用片上DMA及SPI模塊,,可以方便的完成FM0數(shù)據(jù)發(fā)送