基于短距離無線數(shù)據(jù)低功耗傳輸協(xié)議研究
短距離無線數(shù)據(jù)傳輸是一種線纜替代技術(shù),在當前很多領(lǐng)域(如工業(yè)生產(chǎn)、醫(yī)療監(jiān)護、科學(xué)研究等)都得到了廣泛的應(yīng)用。它的出現(xiàn),解決了因環(huán)境和條件限制而不利于有線布線的問題,同時具有低成本、方便攜帶等優(yōu)點。然而由于存在高功耗的缺點,使得這技術(shù)在很多供電受限的工業(yè)現(xiàn)場應(yīng)用中受到了很大的限制。本文基于Freescale公司的MC13213硬件平臺對短距離無線數(shù)據(jù)的低功耗傳輸協(xié)議進行了研究,在保證數(shù)據(jù)可靠傳輸?shù)耐瑫r,極大地降低了設(shè)備的功耗。
1 主要芯片介紹
MC13213是Freescale公司推出的一款SoC芯片,它主要由微處理器和射頻模塊兩部分組成。微處理器采用8位的HCS08內(nèi)核,集成了1個SPI(Serial Peripheral Interface)接口、1個8路的8/10位A/D轉(zhuǎn)換器、2個TPM(Timer/PWM)模塊、2個SCI(Serial Communication Interface)接口、2個I2C和1個8路的KBI(Keyboard Interrupt)接口。射頻模塊的工作頻段是2.4 GHz,通過SPI總線與處理器通信。其主要特點有:
◆ 采用2.4 GHz頻段,其設(shè)計構(gòu)架符合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ù),大大降低了數(shù)據(jù)傳輸?shù)恼`碼率;
◆ 采用免沖突的載波檢測多址接入(CSMACA)機制,避免了數(shù)據(jù)傳輸過程中的沖突。
2 硬件系統(tǒng)設(shè)計
如圖1所示,整個系統(tǒng)硬件結(jié)構(gòu)由4部分組成:RS232/485總線接口單元、數(shù)據(jù)處理單元、射頻收發(fā)單元和電源管理單元。
圖1 短距離無線數(shù)據(jù)傳輸模塊硬件結(jié)構(gòu)圖
一方面,PC/儀器儀表通過RS232/485總線將數(shù)據(jù)傳送給MCU處理器,處理器將數(shù)據(jù)包進行適當處理后送給射頻模塊發(fā)送出去;另一方面,射頻模塊將接收到的數(shù)據(jù)送給MCU處理器,處理器經(jīng)過解包處理后再通過RS232/485總線將數(shù)據(jù)送給PC/儀器儀表。
工業(yè)中的儀器儀表大多都采用RS485總線通信方式,因此無線數(shù)據(jù)傳輸設(shè)備提供RS232/485可選通信接口,既方便連接PC機,又滿足了一般儀器儀表的要求,串口波特率為1 200~115 200 bps可調(diào)。
3 軟件設(shè)計和低功耗通信協(xié)議研究
無線數(shù)據(jù)傳輸設(shè)備的一般工作流程如圖2所示。在進行相關(guān)初始化之后就進入主循環(huán),對射頻模塊和串口進行輪詢: 當射頻模塊接收到數(shù)據(jù)包時就進行解包,然后送到RS232/485總線;當串口接收到從RS232/485總線上發(fā)來的數(shù)據(jù)時,就進行相關(guān)處理并送入射頻模塊發(fā)送出去。這種輪詢的方式結(jié)構(gòu)簡單,實現(xiàn)方便。
圖2 短距離無線傳輸設(shè)備軟件流程
然而,在這種工作方式下,射頻模塊就必須時刻*信道。在2.7 V工作電壓、處理器時鐘頻率為2 MHz時,MC13213的射頻模塊接收工作電流IRF(Rx)≈37 mA,處理器以及外圍器件的工作電流Imcu≈2 mA,因此設(shè)備的正常工作電流I≈39 mA,這個電流對于一些供電受限的工業(yè)應(yīng)用顯然是不能夠接受的。為了降低無線傳輸設(shè)備的功耗,需要對設(shè)備之間的傳輸協(xié)議作適當?shù)母倪M。
由于在大部分的時間里設(shè)備之間沒有進行數(shù)據(jù)傳輸,因此射頻模塊一直處于接收狀態(tài)是一種資源浪費。而設(shè)備本身不知道對方何時有數(shù)據(jù)傳輸過來,因此設(shè)備之間約定在特定的時間段內(nèi)進行數(shù)據(jù)傳輸,而其余時間休眠。
這樣一種約定需要一種同步機制。我們采用信標同步機制:一個設(shè)備定時發(fā)送一個稱為“信標(Beacon)”的數(shù)據(jù)包,即信標幀。另一個設(shè)備通過接收該信標幀來實現(xiàn)同步。我們將發(fā)送信標幀的設(shè)備稱為“主設(shè)備”,接收信標幀的設(shè)備稱為“從設(shè)備”。通過信標幀,即可實現(xiàn)從設(shè)備和主設(shè)備之間的同步。
在該協(xié)議中,有3種類型的數(shù)據(jù)包:信標幀、數(shù)據(jù)請求幀和數(shù)據(jù)幀。信標幀和數(shù)據(jù)幀的幀頭包含有是否有數(shù)據(jù)待傳的信息。
實現(xiàn)同步之后,主設(shè)備和從設(shè)備之間就約定進入休眠時間(Tsleep)。在休眠期間射頻模塊深度睡眠(雖然關(guān)閉射頻模塊后功耗會更低,但喚醒時間太長),處理器處于超低功耗狀態(tài),只有串口處于接收狀態(tài)。休眠時間結(jié)束后,主設(shè)備就會醒來,并且射頻模塊向外發(fā)送信標幀。信標發(fā)送完后,射頻模塊立即進入接收狀態(tài)。從設(shè)備從休眠中醒來后立即喚醒射頻模塊進行信標偵聽,當接收到主設(shè)備發(fā)送過來的信標后,就會判斷主設(shè)備是否有數(shù)據(jù)待傳。如果有,就向主設(shè)備發(fā)送數(shù)據(jù)請求幀;否則,從設(shè)備就會將自己串口接收到的數(shù)據(jù)通過射頻模塊發(fā)送給主設(shè)備,直到數(shù)據(jù)發(fā)送結(jié)束進入下一個周期的休眠時間(Tsleep)。主設(shè)備接收并處理從設(shè)備發(fā)送的數(shù)據(jù)幀,并通過數(shù)據(jù)幀的幀頭判斷是繼續(xù)等待還是進入下一周期的休眠時間。當主、從設(shè)備都沒有數(shù)據(jù)需要進行傳輸時,從設(shè)備接收到信標后直接進入下一周期的休眠時間,而主設(shè)備等待Twait后沒有收到從設(shè)備的任何數(shù)據(jù),也會進入下一個周期的休眠時間。在這種情況下,由于從設(shè)備會比主設(shè)備早休眠Twait的時間,因此從設(shè)備的休眠時間為Twait+Tsleep。另外為了防止失去同步,從設(shè)備醒來后就將射頻模塊設(shè)置為接收狀態(tài),直到接收到信標幀,或者超時繼續(xù)進入休眠。這個超時閾值至少為Tsleep,從而保證了重新同步。如果從設(shè)備N次都沒有收到信標幀,可以認為周圍沒有主設(shè)備,因此可以進行一次長時間的休眠Thibernate。具體流程如圖3所示。
評論