基于Si1000的無線M-Bus通信系統設計
無線收發模塊的通信是以數據包的形式發送的,無線發送程序負責寫入數據,參考無線M-Bus通信協議,為數據加上前導碼、同步字、數據載荷長度及CRC校驗字節,形成數據包將其發送出去。為保證接收到數據的正確性,無線接收程序負責接收數據包并檢驗CRC字節。
2.3無線M-Bus協議棧實現
協議棧如圖4所示。物理層定義了位是如何編碼和傳輸的、RF調制解調器的特性(碼率、前導碼和同步字)和RF參數(調制、中心頻率和頻率偏移)。物理層是通過硬件和嵌入式軟件結合來實現的,EZRadioPRO實現了所有RF和調制解調器的功能。MbusPhy.c模塊提供SPI接口、編碼/解碼、塊的讀/寫和數據包處理,并且管理收發器的狀態。
無線M-Bus數據鏈路層是在MbusLink.c模塊上實現的。M-Bus應用程序編程接口由公共函數組成,這些公共函數可以從主線程的應用層調用,MbusLink模塊也實現了數據鏈路層。數據鏈路層規定了數據的格式,為數據加上頭文件和循環冗余校驗,并且將數據從應用程序TX緩沖區復制到MbusPhy TX緩沖區。
Si1000的射頻芯片為發送和接收提供了一個64字節FIFO.在數據鏈路層實現了數據包的發送和接收,數據包發送和接收流程圖如圖5所示。
在發送時,計算編碼字節的總數。如果編碼字節總數(包括前導碼)小于64字節,那么將整個數據包寫到FIFO,并且只有包發送中斷有效。大多數短包將在一個FIF0轉移中被發送。如果編碼字節的數量大于64字節,那么需要多次FIFO轉移發送數據包。將前64個字節寫到FI FO,包發送中斷和TX FIFO幾乎空中斷有效,把TXFIFO幾乎空閾值設置為10字節。在每一個nIRQ之前,讀取狀態2寄存器。首先檢查包發送位,如果數據包沒有被完全發送,那么將編碼數據接下來的32字節寫到FIFO,重復上述過程直到所有編碼字節都被寫到FIFO,并且包發送中斷發生。
在接收時,最初只有同步字中斷是有效的。接收同步字后,同步字中斷無效且FIFO幾乎滿中斷有效。FIFO幾乎滿閾值設置到2字節,首個FIFO幾乎滿中斷用于確認這兩個長度字節何時已收到。一旦接收到這個長度,那么解碼這個長度且計算出編碼字節的數目,然后將RXFIFO幾乎滿閾值設置到54字節,RX FIFO幾乎滿中斷和有效數據包中斷有效。在接收到一個有效數據包中斷后,MCU等待接收FIFO幾乎滿中斷,然后從接收FIFO讀取32字節。重復上述過程直到全部字節有效載荷被接收。在CRC錯誤的情況下,MCU將復位接收FIFO并丟棄數據包。
3無線M-Bus系統低功耗的實現
為了延長電池的使用壽命,Si1000在工作過程中并不是一直運行的。當沒有數據要發送時,Si1000處于休眠狀態,其內部的MCU和射頻都是關閉的,只有定時器在工作。經過一定時間后,內部MCU喚醒偵聽載波,判斷是否有數據需要它來發送,當有數據需要發送時,Si1000發送數據。發送數據完成后,關閉MCU和射頻。這樣重復進行,只有數據發送時它才進行工作,否則一直處于休眠狀態,這樣就大大延長了電池的使用壽命。
結語
無線M-Bus是一種專門用于各種消費類型儀表的遠程讀數或讀取相關信息的通信標準。將無線M-Bus與Si1000應用到各種消費儀表上,可將數據收集并傳到中心集中器,然后通過GPRS傳送到集抄中心進行相應的處理。這樣就可以實現遠程數據實時采集、巡檢和監控等功能。無線M-Bus在我國的應用還處于起步階段,但考慮到它在計量應用領域的優勢,應用前景十分廣闊。
評論