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