短距離無線數(shù)據(jù)低功耗傳輸協(xié)議分析
1 主要芯片介紹
MC13213是Freescale公司推出的一款SoC芯片,它主要由微處理器和射頻模塊兩部分組成。微處理器采用8位的HCS08內(nèi)核,集成了1個SPI(Serial Peripheral Interface)接口、1個8路的8/10位A/D轉換器、2個TPM(Timer/PWM)模塊、2個SCI(Serial Communication Interface)接口、2個I2C和1個8路的KBI(Keyboard Interrupt)接口。射頻模塊的工作頻段是2.4 GHz,通過SPI總線與處理器通信。其主要特點有:
◆ 采用2.4 GHz頻段,其設計構架符合IEEE 802.15.4協(xié)議;
◆ 接收靈敏度-92 dBm,發(fā)送功率為-28.7~+3.4 dBm可調(diào);
◆ 擁有0~15(共16)個可選工作信道;
◆ 采用直接序列擴頻(direct sequence spread spectrum)的二進制編碼方式,增強了抗干擾能力;
◆ 采用OQPSK數(shù)字相移鍵控調(diào)制技術,大大降低了數(shù)據(jù)傳輸?shù)恼`碼率;
◆ 采用免沖突的載波檢測多址接入(CSMACA)機制,避免了數(shù)據(jù)傳輸過程中的沖突。
2 硬件系統(tǒng)設計
如圖1所示,整個系統(tǒng)硬件結構由4部分組成:RS232/485總線接口單元、數(shù)據(jù)處理單元、射頻收發(fā)單元和電源管理單元。
圖1 短距離無線數(shù)據(jù)傳輸模塊硬件結構圖
一方面,PC/儀器儀表通過RS232/485總線將數(shù)據(jù)傳送給MCU處理器,處理器將數(shù)據(jù)包進行適當處理后送給射頻模塊發(fā)送出去;另一方面,射頻模塊將接收到的數(shù)據(jù)送給MCU處理器,處理器經(jīng)過解包處理后再通過RS232/485總線將數(shù)據(jù)送給PC/儀器儀表。
工業(yè)中的儀器儀表大多都采用RS485總線通信方式,因此無線數(shù)據(jù)傳輸設備提供RS232/485可選通信接口,既方便連接PC機,又滿足了一般儀器儀表的要求,串口波特率為1 200~115 200 bps可調(diào)。
3 軟件設計和低功耗通信協(xié)議研究
無線數(shù)據(jù)傳輸設備的一般工作流程如圖2所示。在進行相關初始化之后就進入主循環(huán),對射頻模塊和串口進行輪詢: 當射頻模塊接收到數(shù)據(jù)包時就進行解包,然后送到RS232/485總線;當串口接收到從RS232/485總線上發(fā)來的數(shù)據(jù)時,就進行相關處理并送入射頻模塊發(fā)送出去。這種輪詢的方式結構簡單,實現(xiàn)方便。
圖2 短距離無線傳輸設備軟件流程
然而,在這種工作方式下,射頻模塊就必須時刻監(jiān)聽信道。在2.7 V工作電壓、處理器時鐘頻率為2 MHz時,MC13213的射頻模塊接收工作電流IRF(Rx)≈37 mA,處理器以及外圍器件的工作電流Imcu≈2 mA,因此設備的正常工作電流I≈39 mA,這個電流對于一些供電受限的工業(yè)應用顯然是不能夠接受的。為了降低無線傳輸設備的功耗,需要對設備之間的傳輸協(xié)議作適當?shù)母倪M。
由于在大部分的時間里設備之間沒有進行數(shù)據(jù)傳輸,因此射頻模塊一直處于接收狀態(tài)是一種資源浪費。而設備本身不知道對方何時有數(shù)據(jù)傳輸過來,因此設備之間約定在特定的時間段內(nèi)進行數(shù)據(jù)傳輸,而其余時間休眠。
這樣一種約定需要一種同步機制。我們采用信標同步機制:一個設備定時發(fā)送一個稱為“信標(Beacon)”的數(shù)據(jù)包,即信標幀。另一個設備通過接收該信標幀來實現(xiàn)同步。我們將發(fā)送信標幀的設備稱為“主設備”,接收信標幀的設備稱為“從設備”。通過信標幀,即可實現(xiàn)從設備和主設備之間的同步。
在該協(xié)議中,有3種類型的數(shù)據(jù)包:信標幀、數(shù)據(jù)請求幀和數(shù)據(jù)幀。信標幀和數(shù)據(jù)幀的幀頭包含有是否有數(shù)據(jù)待傳的信息。
實現(xiàn)同步之后,主設備和從設備之間就約定進入休眠時間(Tsleep)。在休眠期間射頻模塊深度睡眠(雖然關閉射頻模塊后功耗會更低,但喚醒時間太長),處理器處于超低功耗狀態(tài),只有串口處于接收狀態(tài)。休眠時間結束后,主設備就會醒來,并且射頻模塊向外發(fā)送信標幀。信標發(fā)送完后,射頻模塊立即進入接收狀態(tài)。從設備從休眠中醒來后立即喚醒射頻模塊進行信標偵聽,當接收到主設備發(fā)送過來的信標后,就會判斷主設備是否有數(shù)據(jù)待傳。如果有,就向主設備發(fā)送數(shù)據(jù)請求幀;否則,從設備就會將自己串口接收到的數(shù)據(jù)通過射頻模塊發(fā)送給主設備,直到數(shù)據(jù)發(fā)送結束進入下一個周期的休眠時間(Tsleep)。主設備接收并處理從設備發(fā)送的數(shù)據(jù)幀,并通過數(shù)據(jù)幀的幀頭判斷是繼續(xù)等待還是進入下一周期的休眠時間。當主、從設備都沒有數(shù)據(jù)需要進行傳輸時,從設備接收到信標后直接進入下一周期的休眠時間,而主設備等待Twait后沒有收到從設備的任何數(shù)據(jù),也會進入下一個周期的休眠時間。在這種情況下,由于從設備會比主設備早休眠Twait的時間,因此從設備的休眠時間為Twait+Tsleep。另外為了防止失去同步,從設備醒來后就將射頻模塊設置為接收狀態(tài),直到接收到信標幀,或者超時繼續(xù)進入休眠。這個超時閾值至少為Tsleep,從而保證了重新同步。如果從設備N次都沒有收到信標幀,可以認為周圍沒有主設備,因此可以進行一次長時間的休眠Thibernate。具體流程如圖3所示。
圖3 低功耗改進后的主、從設備軟件流程
經(jīng)過該協(xié)議優(yōu)化后,主、從設備在一個周期內(nèi)的工作狀態(tài)如圖4所示。
改進前的平均工作電流:
圖4 改進前后主從設備無數(shù)據(jù)傳輸時一個周期內(nèi)的工作狀態(tài)
改進后的平均工作電流:
表1 2.7 V工作電壓下測得的主、從設備工作電流
其中:
射頻模塊接收狀態(tài)時的工作電流IRF(Rx)≈37 mA;
射頻模塊發(fā)送狀態(tài)時的工作電流IRF(Tx)≈30 mA;
射頻模塊深度睡眠的工作電流IRF(sleep)≈35 μA;
處理器正常工作電流Imcu≈2 mA;
處理器休眠工作電流Imcu(sleep)≈5 μA;
射頻模塊發(fā)送1個數(shù)據(jù)包需要的最大時間Td≈4 ms。
因此,當Twait=5 ms,Tsleep=200 ms時,I后(主)≈1.58 mA,I后(從)≈0.79 mA。遠小于改進前的I前≈39 mA。
4 實驗結果和總結
采用了低功耗的傳輸協(xié)議后,在Tsleep分別為200 ms、500 ms和1 s情況下,無數(shù)據(jù)傳輸和每10 s互傳一個數(shù)據(jù)
評論