基于STM32L152和S14432的無(wú)線(xiàn)網(wǎng)絡(luò )系統設計
引言
本文引用地址:http://dyxdggzs.com/article/201706/348369.htm在現代生活和生產(chǎn)中,無(wú)線(xiàn)通信技術(shù)應用越來(lái)越廣泛。生活小區、醫院、工廠(chǎng)等復雜環(huán)境中的各種儀器儀表可以通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò )進(jìn)行數據采集和監控。工業(yè)現場(chǎng)自動(dòng)化數據的控制和采集需要傳輸距離1km左右、功耗低、簡(jiǎn)單、可靠、價(jià)格低廉的無(wú)線(xiàn)通信網(wǎng)絡(luò )。無(wú)線(xiàn)收發(fā)芯片S14432的通信距離可達1~2km。本文設計了一種基于STM32L152和S14432的無(wú)線(xiàn)網(wǎng)絡(luò )系統。系統采用低功耗、高性能的Cortex-M3核32位微控制器STM32L152和高集成度、低功耗的無(wú)線(xiàn)收發(fā)芯片S14432,適用于短距離的現場(chǎng)數據采集和監控。系統采用網(wǎng)絡(luò )化管理并運用主節點(diǎn)備份技術(shù)和LEPS路由協(xié)議保證系統的可靠性和拓展性。
1 主控芯片
STM32L152是意法半導體公司提供的超低功耗、高數據安全性、高效能的ARM Cortex-M3微控制器系列芯片。STM32L15XXX系列芯片采用意法半導體的EnergyLite超低功耗平臺,通過(guò)6個(gè)超低功耗模式能夠在任何設定時(shí)間以最低的功耗完成任務(wù)。該控制器低功耗運行模式電流為10.4μA,工作電壓為1.8~3.6V,片上模擬功能的最低工作電壓為1.8V,數字功能的最低工作電壓為1.65V。工作溫度范圍為-40~+85℃,在32MHz頻率下的處理性能達到33 DMOPS(最大值),擁有靈活的欠壓復位、片上閃存支持糾錯碼(ECC)、存儲器保護單元(MPU)和JTAG熔斷器。它采用的ARM Cortex-M3處理器可提供出色的計算性能和對事件的卓越系統響應,同時(shí)可應對動(dòng)態(tài)和靜態(tài)功率限制的挑戰。
系統中采用STM32L152芯片,48腳LQFP封裝。該芯片擁有128KB Flash、16KB RAM、4096字節的E2PROM以及8個(gè)16位定時(shí)器;片上集成了豐富的外圍模塊,包括12位ADC、12位DAC、比較器、SPI、I2C、LCD、USB等。
2 無(wú)線(xiàn)網(wǎng)絡(luò )系統的體系結構
無(wú)線(xiàn)網(wǎng)絡(luò )系統的體系結構如圖1所示。系統是由主節點(diǎn)和多個(gè)從節點(diǎn)組成的樹(shù)型拓撲網(wǎng)絡(luò )。主節點(diǎn)組建和管理整個(gè)無(wú)線(xiàn)網(wǎng)絡(luò ),實(shí)現向從節點(diǎn)傳送控制指令和接收從節點(diǎn)的數據信息。從節點(diǎn)實(shí)現接收主節點(diǎn)傳達的控制指令和將數據信息向主節點(diǎn)的傳送。
3 系統硬件設計
無(wú)線(xiàn)網(wǎng)絡(luò )系統的硬件結構如圖2所示。主節點(diǎn)、備份主節點(diǎn)和從節點(diǎn)都采取同樣的硬件電路。STM32L152單片機控制SI4432實(shí)現無(wú)線(xiàn)數據的收發(fā)。射頻收發(fā)芯片采用的是Silicon Labs公司推出的SI4432芯片。該芯片是一款高集成度、低功耗的EZRadioPRO系列無(wú)線(xiàn)收發(fā)芯片。其工作頻段為240~960MHz,接收靈敏度達到-117dB,可提供極佳的鏈路質(zhì)量,在擴大范圍的同時(shí)將功耗降至最低,最高輸出功率可達+20dB,傳輸距離可達2km。
主控制芯片sTM32L152選用高速外部時(shí)鐘信號(HSE),通過(guò)BOOT0和BOOT1來(lái)選擇3種boot模式。芯片可以采用STM studio、Keil MDK-ARM等編譯工具,擁有20引腳的JTAG接口可以使用ST-LINK和ULINK2仿真器。主控制電路通過(guò)一個(gè)RS232接口與控制系統通信。主控制芯片硬件電路如圖3所示。
STM32L152通過(guò)標準的SPI接口與SI4432相接。主控制芯片通過(guò)SPI接口對射頻芯片內部寄存器進(jìn)行初始化配置,并且發(fā)送控制指令和讀寫(xiě)數據信息。SI4432的SDN、NIRQ、NSEL、GPIO0、GPIO1、GPIO2等與主控制芯片相連。SDN引腳為工作模式位,NIRQ引腳為中斷狀態(tài)輸出,NSEL引腳為片選信號,GPIO1和GPIO2為天線(xiàn)選擇位。射頻電路工作在470MHz的中心頻率段。470~510MHz為國家無(wú)線(xiàn)電管理部門(mén)免申請的無(wú)線(xiàn)計量頻段。射頻芯片硬件電路如圖4所示。
整個(gè)無(wú)線(xiàn)網(wǎng)絡(luò )只采用一個(gè)主節點(diǎn),設計中采用硬件冗余技術(shù)。在主節點(diǎn)處設置一個(gè)備用主節點(diǎn),備用主節點(diǎn)是主節點(diǎn)的復制品,擁有主節點(diǎn)同樣的控制和管理,以及同一級別的主節點(diǎn)地址。當控制系統檢測到主節點(diǎn)出現故障時(shí),可以激活冗余主節點(diǎn),以替代主節點(diǎn)保證整個(gè)無(wú)線(xiàn)網(wǎng)絡(luò )系統的正常運行。
4 系統軟件設計
系統的軟件設計分為主節點(diǎn)和從節點(diǎn)兩部分。軟件設計采用功能模塊化的設計思路,系統又可分為初始化模塊、應用模塊和網(wǎng)絡(luò )管理模塊。其中初始化模塊包括單片機初始化模塊、射頻芯片初始化模塊和應用初始化模塊;應用模塊包括無(wú)線(xiàn)發(fā)送模塊、無(wú)線(xiàn)接收模塊、數據處理模塊、工作模式模塊;網(wǎng)絡(luò )管理模塊是通過(guò)路由協(xié)議組建無(wú)線(xiàn)網(wǎng)絡(luò )。
4.1 系統初始化
系統上電后,單片機根據主節點(diǎn)和從節點(diǎn)的區別對硬件和功能模塊進(jìn)行初始化,設定各個(gè)引腳的功能、單片機的工作模式和資源分配,以及各個(gè)應用功能模塊的初始化。然后,通過(guò)SPI接口對無(wú)線(xiàn)射頻芯片進(jìn)行初始化。射頻芯片的工作模式、頻率、傳輸速度、傳輸方式等都按主從節點(diǎn)分別設置。
4.2 數據處理
系統采用類(lèi)似ZMAC協(xié)議的幀格式對數據進(jìn)行打包通信。數據包的格式如下:
數據包的前端加上8n位的前導碼,是為了使接收端進(jìn)行幀同步。前導碼之后是幀同步字,當接收端收到幀同步字之后,開(kāi)始接收數據。包長(cháng)和校驗碼是接收端用來(lái)校驗數據接收錯誤與否。數據處理模塊負責在發(fā)送前和接收后對數據包進(jìn)行信息處理。數據包分為網(wǎng)絡(luò )維護類(lèi)和信息類(lèi),通過(guò)包類(lèi)型位區分,其中數據包內數據位的信息不通。當網(wǎng)絡(luò )系統處于組建和維護期時(shí),數據包屬于網(wǎng)絡(luò )維護類(lèi),數據位的信息為節點(diǎn)的路由信息。節點(diǎn)的路由信息包括到匯聚節點(diǎn)的跳數、到相鄰節點(diǎn)的鏈路質(zhì)量評估信息、節點(diǎn)編號等。當網(wǎng)絡(luò )系統處于工作狀態(tài)時(shí),數據位的信息為控制指令或數據碼。節點(diǎn)在數據信息發(fā)送前,數據處理模塊負責將需要發(fā)送的數據信息進(jìn)行分類(lèi),然后向其中分別加入各種不同的位信息,形成成熟的待發(fā)送的數據包。節點(diǎn)在數據信息接收后,該模塊負責對數據包進(jìn)行校驗,將數據包分類(lèi),然后對各種信息位進(jìn)行分離整理。其中,在發(fā)送和接收時(shí),通過(guò)對SI4432寄存器的配置操作,可以直接分離出配置位。配置位結構如下:
4.3 數據發(fā)送和接收
數據發(fā)送模塊負責將數據包發(fā)送出去。當接收到發(fā)送指令時(shí),首先通過(guò)SPI清空射頻芯片的發(fā)送FIFO,然后向發(fā)送FIFO里寫(xiě)入需要發(fā)送的數據。打開(kāi)射頻芯片發(fā)送完成中斷并禁止其他所有中斷。微控制器使能射頻芯片的發(fā)送功能,數據開(kāi)始無(wú)線(xiàn)發(fā)送。將IRQ引腳拉高,并等待無(wú)線(xiàn)發(fā)送完成中斷。如果數據發(fā)送成功,則NIRQ變低電平。
數據接收模塊負責接收數據包。當接收到微控制器的接收指令時(shí),首先通過(guò)SPI清空射頻芯片的接收FIFO。打開(kāi)前導碼接收、幀同步中斷和接收包數據有效中斷,并關(guān)閉其他中斷。準備好開(kāi)始接收。若引腳NIRQ變?yōu)榈碗娖?,且讀取到接收包數據有效中斷位,通過(guò)SPI讀取接收FIFO中的數據,關(guān)閉接收功能。發(fā)送和接收程序流程如圖5所示。
4.4 系統管理機制
無(wú)線(xiàn)網(wǎng)絡(luò )由主節點(diǎn)和從節點(diǎn)組成,是一個(gè)以主節點(diǎn)為根中心的樹(shù)形拓撲。整個(gè)網(wǎng)絡(luò )的管理是通過(guò)各節點(diǎn)中的網(wǎng)絡(luò )管理模塊完成的。無(wú)線(xiàn)網(wǎng)絡(luò )采用LEPS(Link Estimation and Parent Selection)協(xié)議。LEPS協(xié)議是TinyOS系統的多跳路由協(xié)議。它通過(guò)節點(diǎn)之間的鄰居信息交換機制,考慮鏈路質(zhì)量,建立到中心節點(diǎn)的最短通信路徑。
從節點(diǎn)分為不同級別的父節點(diǎn),只向自己的父節點(diǎn)發(fā)送信息,通過(guò)父節點(diǎn)逐級向上傳到主節點(diǎn)。從節點(diǎn)路由表中擁有自己子節點(diǎn)的編號地址。父節點(diǎn)處于網(wǎng)絡(luò )的中心是最高級的父節點(diǎn),它的路由表中擁有整個(gè)網(wǎng)絡(luò )節點(diǎn)的編號和地址。主節點(diǎn)的數據由其子節點(diǎn)逐級傳向各從節點(diǎn)。
無(wú)線(xiàn)網(wǎng)絡(luò )分為拓撲結構的建立、路由維護和數據通信3個(gè)階段。在拓撲結構的建立階段,所有的節點(diǎn)周期性地廣播自己的路由信息,節點(diǎn)根據跳數和鏈路質(zhì)量信息建立最短條數路由,建立路由表。網(wǎng)絡(luò )將進(jìn)行定期的維護,在維護的過(guò)程中,節點(diǎn)將再次對父節點(diǎn)做出評估,刷新路由表。在數據通信階段,路由協(xié)議為數據傳遞提供行進(jìn)路徑。在完成組網(wǎng)后,若向網(wǎng)絡(luò )中增加節點(diǎn),則只需要對網(wǎng)絡(luò )進(jìn)行維護更新,更新路由表即可。
4.5 父節點(diǎn)選擇
所有從節點(diǎn)的數據都是通過(guò)父節點(diǎn)傳送到主節點(diǎn)的。父節點(diǎn)性能是路由協(xié)議的核心部分。父節點(diǎn)的選擇決定于鏈路質(zhì)量和跳數。
鏈路質(zhì)量是兩節點(diǎn)間的雙向鏈路通信質(zhì)量。以?xún)上噜徆濣c(diǎn)A、B為例。在網(wǎng)絡(luò )廣播信息中,節點(diǎn)A向節點(diǎn)B發(fā)送多組數據,則B節點(diǎn)的接收成功率為:
協(xié)議進(jìn)一步采用加權唯一平均的方法計算最終的鏈路質(zhì)量估計值,進(jìn)而減小鏈路質(zhì)量評估的抖動(dòng)。令新的鏈路估計值為NEWEST,所占比例為μ=25%,則原先的作戰比例為(1-μ),最終的鏈路質(zhì)量估計值為:
跳數HOPNU為節點(diǎn)到主節點(diǎn)的總共轉發(fā)次數。在網(wǎng)絡(luò )中,由于鏈路質(zhì)量的原因,節點(diǎn)的父節點(diǎn)可能丟失。在進(jìn)行父節點(diǎn)選取時(shí),為了保證父節點(diǎn)的質(zhì)量,通常選用SEDEST>0.1,RCVEST>0.1和EST>0.16的鏈路質(zhì)量,這樣不至于鏈路質(zhì)量過(guò)低而不穩定。然后在相鄰節點(diǎn)中先判斷跳數最小,再判斷鏈路通信質(zhì)量選擇父節點(diǎn)。
結語(yǔ)
本系統采用的STM32L152主控芯片和SI4432無(wú)線(xiàn)收發(fā)芯片都屬于低功耗高集成芯片,降低了系統的功耗。其中STM32L152是Cortex-M3微控制器,提高了系統的性能;主節點(diǎn)帶有硬件備份提高了系統的可靠性;LPES路由協(xié)議技術(shù)提高系統的通信效率,使系統拓展方便。本系統適合于工業(yè)現場(chǎng)數據采集、小區數據采集、醫院病房監控、農業(yè)現場(chǎng)數據采集等一些短距離的通信應用。功能模塊化和網(wǎng)絡(luò )可拓展化,使系統便于功能的更新和節點(diǎn)的拓展。
評論