基于Si1000的無(wú)線(xiàn)M-Bus通信系統
從節點(diǎn)中,儀表與芯片Si1000的UART串口引腳P0.4/TX和P0.5/RX相連。主節點(diǎn)芯片Si1000的UART串口引腳P0.4/TX和P0.5/RX與集中器進(jìn)行連接,集中器內部MCU串口通過(guò)RS232與GPRS模塊相連,借助移動(dòng)網(wǎng)和Internet實(shí)現數據的遠程傳輸。圖中可編程負載電容是可集成的,L1~L6和C1~C5的值是由頻率帶寬、天線(xiàn)阻抗和供給電壓決定的。
無(wú)線(xiàn)收發(fā)模塊的通信是以數據包的形式發(fā)送的,無(wú)線(xiàn)發(fā)送程序負責寫(xiě)入數據,參考無(wú)線(xiàn)M-Bus通信協(xié)議,為數據加上前導碼、同步字、數據載荷長(cháng)度及CRC校驗字節,形成數據包將其發(fā)送出去。為保證接收到數據的正確性,無(wú)線(xiàn)接收程序負責接收數據包并檢驗CRC字節。
2.3 無(wú)線(xiàn)M-Bus協(xié)議棧實(shí)現
協(xié)議棧如圖4所示。物理層定義了位是如何編碼和傳輸的、RF調制解調器的特性(碼率、前導碼和同步字)和RF參數(調制、中心頻率和頻率偏移)。物理層是通過(guò)硬件和嵌入式軟件結合來(lái)實(shí)現的,EZRadioPRO實(shí)現了所有RF和調制解調器的功能。MbusPhy.c模塊提供SPI接口、編碼/解碼、塊的讀/寫(xiě)和數據包處理,并且管理收發(fā)器的狀態(tài)。
無(wú)線(xiàn)M-Bus數據鏈路層是在MbusLink.c模塊上實(shí)現的。M-Bus應用程序編程接口由公共函數組成,這些公共函數可以從主線(xiàn)程的應用層調用,MbusLink模塊也實(shí)現了數據鏈路層。數據鏈路層規定了數據的格式,為數據加上頭文件和循環(huán)冗余校驗,并且將數據從應用程序TX緩沖區復制到MbusPhy TX緩沖區。
Si1000的射頻芯片為發(fā)送和接收提供了一個(gè)64字節FIFO。在數據鏈路層實(shí)現了數據包的發(fā)送和接收,數據包發(fā)送和接收流程圖如圖5所示。
在發(fā)送時(shí),計算編碼字節的總數。如果編碼字節總數(包括前導碼)小于64字節,那么將整個(gè)數據包寫(xiě)到FIFO,并且只有包發(fā)送中斷有效。大多數短包將在一個(gè)FIF0轉移中被發(fā)送。如果編碼字節的數量大于64字節,那么需要多次FIFO轉移發(fā)送數據包。將前64個(gè)字節寫(xiě)到FI FO,包發(fā)送中斷和TX FIFO幾乎空中斷有效,把TXFIFO幾乎空閾值設置為10字節。在每一個(gè)nIRQ之前,讀取狀態(tài)2寄存器。首先檢查包發(fā)送位,如果數據包沒(méi)有被完全發(fā)送,那么將編碼數據接下來(lái)的32字節寫(xiě)到FIFO,重復上述過(guò)程直到所有編碼字節都被寫(xiě)到FIFO,并且包發(fā)送中斷發(fā)生。
評論