基于Si1000的無線M-Bus通信系統
從節點中,儀表與芯片Si1000的UART串口引腳P0.4/TX和P0.5/RX相連。主節點芯片Si1000的UART串口引腳P0.4/TX和P0.5/RX與集中器進行連接,集中器內部MCU串口通過RS232與GPRS模塊相連,借助移動網和Internet實現數據的遠程傳輸。圖中可編程負載電容是可集成的,L1~L6和C1~C5的值是由頻率帶寬、天線阻抗和供給電壓決定的。
無線收發模塊的通信是以數據包的形式發送的,無線發送程序負責寫入數據,參考無線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,并且包發送中斷發生。
評論