<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32L152和S14432的無線網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)

          基于STM32L152和S14432的無線網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2017-06-04 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/201706/348369.htm

          在現(xiàn)代生活和生產(chǎn)中,無線通信技術(shù)應(yīng)用越來越廣泛。生活小區(qū)、醫(yī)院、工廠等復(fù)雜環(huán)境中的各種儀器儀表可以通過無線網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)采集和監(jiān)控。工業(yè)現(xiàn)場(chǎng)自動(dòng)化數(shù)據(jù)的控制和采集需要傳輸距離1km左右、功耗低、簡(jiǎn)單、可靠、價(jià)格低廉的無線通信網(wǎng)絡(luò)。無線收發(fā)芯片S14432的通信距離可達(dá)1~2km。本文設(shè)計(jì)了一種基于STM32L152和S14432的無線網(wǎng)絡(luò)系統(tǒng)。系統(tǒng)采用低功耗、高性能的Cortex-M3核32位微控制器STM32L152和高集成度、低功耗的無線收發(fā)芯片S14432,適用于短距離的現(xiàn)場(chǎng)數(shù)據(jù)采集和監(jiān)控。系統(tǒng)采用網(wǎng)絡(luò)化管理并運(yùn)用主節(jié)點(diǎn)備份技術(shù)和LEPS路由協(xié)議保證系統(tǒng)的可靠性和拓展性。

          1 主控芯片

          STM32L152是意法半導(dǎo)體公司提供的超低功耗、高數(shù)據(jù)安全性、高效能的ARM Cortex-M3微控制器系列芯片。STM32L15XXX系列芯片采用意法半導(dǎo)體的EnergyLite超低功耗平臺(tái),通過6個(gè)超低功耗模式能夠在任何設(shè)定時(shí)間以最低的功耗完成任務(wù)。該控制器低功耗運(yùn)行模式電流為10.4μA,工作電壓為1.8~3.6V,片上模擬功能的最低工作電壓為1.8V,數(shù)字功能的最低工作電壓為1.65V。工作溫度范圍為-40~+85℃,在32MHz頻率下的處理性能達(dá)到33 DMOPS(最大值),擁有靈活的欠壓復(fù)位、片上閃存支持糾錯(cuò)碼(ECC)、存儲(chǔ)器保護(hù)單元(MPU)和JTAG熔斷器。它采用的ARM Cortex-M3處理器可提供出色的計(jì)算性能和對(duì)事件的卓越系統(tǒng)響應(yīng),同時(shí)可應(yīng)對(duì)動(dòng)態(tài)和靜態(tài)功率限制的挑戰(zhàn)。

          系統(tǒng)中采用STM32L152芯片,48腳LQFP封裝。該芯片擁有128KB Flash、16KB RAM、4096字節(jié)的E2PROM以及8個(gè)16位定時(shí)器;片上集成了豐富的外圍模塊,包括12位ADC、12位DAC、比較器、SPI、I2C、LCD、USB等。

          2 無線網(wǎng)絡(luò)系統(tǒng)的體系結(jié)構(gòu)

          無線網(wǎng)絡(luò)系統(tǒng)的體系結(jié)構(gòu)如圖1所示。系統(tǒng)是由主節(jié)點(diǎn)和多個(gè)從節(jié)點(diǎn)組成的樹型拓?fù)渚W(wǎng)絡(luò)。主節(jié)點(diǎn)組建和管理整個(gè)無線網(wǎng)絡(luò),實(shí)現(xiàn)向從節(jié)點(diǎn)傳送控制指令和接收從節(jié)點(diǎn)的數(shù)據(jù)信息。從節(jié)點(diǎn)實(shí)現(xiàn)接收主節(jié)點(diǎn)傳達(dá)的控制指令和將數(shù)據(jù)信息向主節(jié)點(diǎn)的傳送。


          3 系統(tǒng)硬件設(shè)計(jì)

          無線網(wǎng)絡(luò)系統(tǒng)的硬件結(jié)構(gòu)如圖2所示。主節(jié)點(diǎn)、備份主節(jié)點(diǎn)和從節(jié)點(diǎn)都采取同樣的硬件電路。STM32L152單片機(jī)控制SI4432實(shí)現(xiàn)無線數(shù)據(jù)的收發(fā)。射頻收發(fā)芯片采用的是Silicon Labs公司推出的SI4432芯片。該芯片是一款高集成度、低功耗的EZRadioPRO系列無線收發(fā)芯片。其工作頻段為240~960MHz,接收靈敏度達(dá)到-117dB,可提供極佳的鏈路質(zhì)量,在擴(kuò)大范圍的同時(shí)將功耗降至最低,最高輸出功率可達(dá)+20dB,傳輸距離可達(dá)2km。

          主控制芯片sTM32L152選用高速外部時(shí)鐘信號(hào)(HSE),通過BOOT0和BOOT1來選擇3種boot模式。芯片可以采用STM studio、Keil MDK-ARM等編譯工具,擁有20引腳的JTAG接口可以使用ST-LINK和ULINK2仿真器。主控制電路通過一個(gè)RS232接口與控制系統(tǒng)通信。主控制芯片硬件電路如圖3所示。

          STM32L152通過標(biāo)準(zhǔn)的SPI接口與SI4432相接。主控制芯片通過SPI接口對(duì)射頻芯片內(nèi)部寄存器進(jìn)行初始化配置,并且發(fā)送控制指令和讀寫數(shù)據(jù)信息。SI4432的SDN、NIRQ、NSEL、GPIO0、GPIO1、GPIO2等與主控制芯片相連。SDN引腳為工作模式位,NIRQ引腳為中斷狀態(tài)輸出,NSEL引腳為片選信號(hào),GPIO1和GPIO2為天線選擇位。射頻電路工作在470MHz的中心頻率段。470~510MHz為國(guó)家無線電管理部門免申請(qǐng)的無線計(jì)量頻段。射頻芯片硬件電路如圖4所示。

          整個(gè)無線網(wǎng)絡(luò)只采用一個(gè)主節(jié)點(diǎn),設(shè)計(jì)中采用技術(shù)。在主節(jié)點(diǎn)處設(shè)置一個(gè)備用主節(jié)點(diǎn),備用主節(jié)點(diǎn)是主節(jié)點(diǎn)的復(fù)制品,擁有主節(jié)點(diǎn)同樣的控制和管理,以及同一級(jí)別的主節(jié)點(diǎn)地址。當(dāng)控制系統(tǒng)檢測(cè)到主節(jié)點(diǎn)出現(xiàn)故障時(shí),可以激活冗余主節(jié)點(diǎn),以替代主節(jié)點(diǎn)保證整個(gè)無線網(wǎng)絡(luò)系統(tǒng)的正常運(yùn)行。

          4 系統(tǒng)軟件設(shè)計(jì)

          系統(tǒng)的軟件設(shè)計(jì)分為主節(jié)點(diǎn)和從節(jié)點(diǎn)兩部分。軟件設(shè)計(jì)采用功能模塊化的設(shè)計(jì)思路,系統(tǒng)又可分為初始化模塊、應(yīng)用模塊和網(wǎng)絡(luò)管理模塊。其中初始化模塊包括單片機(jī)初始化模塊、射頻芯片初始化模塊和應(yīng)用初始化模塊;應(yīng)用模塊包括無線發(fā)送模塊、無線接收模塊、數(shù)據(jù)處理模塊、工作模式模塊;網(wǎng)絡(luò)管理模塊是通過路由協(xié)議組建無線網(wǎng)絡(luò)。

          4.1 系統(tǒng)初始化

          系統(tǒng)上電后,單片機(jī)根據(jù)主節(jié)點(diǎn)和從節(jié)點(diǎn)的區(qū)別對(duì)硬件和功能模塊進(jìn)行初始化,設(shè)定各個(gè)引腳的功能、單片機(jī)的工作模式和資源分配,以及各個(gè)應(yīng)用功能模塊的初始化。然后,通過SPI接口對(duì)無線射頻芯片進(jìn)行初始化。射頻芯片的工作模式、頻率、傳輸速度、傳輸方式等都按主從節(jié)點(diǎn)分別設(shè)置。

          4.2 數(shù)據(jù)處理

          系統(tǒng)采用類似ZMAC協(xié)議的幀格式對(duì)數(shù)據(jù)進(jìn)行打包通信。數(shù)據(jù)包的格式如下:

          數(shù)據(jù)包的前端加上8n位的前導(dǎo)碼,是為了使接收端進(jìn)行幀同步。前導(dǎo)碼之后是幀同步字,當(dāng)接收端收到幀同步字之后,開始接收數(shù)據(jù)。包長(zhǎng)和校驗(yàn)碼是接收端用來校驗(yàn)數(shù)據(jù)接收錯(cuò)誤與否。數(shù)據(jù)處理模塊負(fù)責(zé)在發(fā)送前和接收后對(duì)數(shù)據(jù)包進(jìn)行信息處理。數(shù)據(jù)包分為網(wǎng)絡(luò)維護(hù)類和信息類,通過包類型位區(qū)分,其中數(shù)據(jù)包內(nèi)數(shù)據(jù)位的信息不通。當(dāng)網(wǎng)絡(luò)系統(tǒng)處于組建和維護(hù)期時(shí),數(shù)據(jù)包屬于網(wǎng)絡(luò)維護(hù)類,數(shù)據(jù)位的信息為節(jié)點(diǎn)的路由信息。節(jié)點(diǎn)的路由信息包括到匯聚節(jié)點(diǎn)的跳數(shù)、到相鄰節(jié)點(diǎn)的鏈路質(zhì)量評(píng)估信息、節(jié)點(diǎn)編號(hào)等。當(dāng)網(wǎng)絡(luò)系統(tǒng)處于工作狀態(tài)時(shí),數(shù)據(jù)位的信息為控制指令或數(shù)據(jù)碼。節(jié)點(diǎn)在數(shù)據(jù)信息發(fā)送前,數(shù)據(jù)處理模塊負(fù)責(zé)將需要發(fā)送的數(shù)據(jù)信息進(jìn)行分類,然后向其中分別加入各種不同的位信息,形成成熟的待發(fā)送的數(shù)據(jù)包。節(jié)點(diǎn)在數(shù)據(jù)信息接收后,該模塊負(fù)責(zé)對(duì)數(shù)據(jù)包進(jìn)行校驗(yàn),將數(shù)據(jù)包分類,然后對(duì)各種信息位進(jìn)行分離整理。其中,在發(fā)送和接收時(shí),通過對(duì)SI4432寄存器的配置操作,可以直接分離出配置位。配置位結(jié)構(gòu)如下:


          4.3 數(shù)據(jù)發(fā)送和接收

          數(shù)據(jù)發(fā)送模塊負(fù)責(zé)將數(shù)據(jù)包發(fā)送出去。當(dāng)接收到發(fā)送指令時(shí),首先通過SPI清空射頻芯片的發(fā)送FIFO,然后向發(fā)送FIFO里寫入需要發(fā)送的數(shù)據(jù)。打開射頻芯片發(fā)送完成中斷并禁止其他所有中斷。微控制器使能射頻芯片的發(fā)送功能,數(shù)據(jù)開始無線發(fā)送。將IRQ引腳拉高,并等待無線發(fā)送完成中斷。如果數(shù)據(jù)發(fā)送成功,則NIRQ變低電平。

          數(shù)據(jù)接收模塊負(fù)責(zé)接收數(shù)據(jù)包。當(dāng)接收到微控制器的接收指令時(shí),首先通過SPI清空射頻芯片的接收FIFO。打開前導(dǎo)碼接收、幀同步中斷和接收包數(shù)據(jù)有效中斷,并關(guān)閉其他中斷。準(zhǔn)備好開始接收。若引腳NIRQ變?yōu)榈碗娖?,且讀取到接收包數(shù)據(jù)有效中斷位,通過SPI讀取接收FIFO中的數(shù)據(jù),關(guān)閉接收功能。發(fā)送和接收程序流程如圖5所示。


          4.4 系統(tǒng)管理機(jī)制

          無線網(wǎng)絡(luò)由主節(jié)點(diǎn)和從節(jié)點(diǎn)組成,是一個(gè)以主節(jié)點(diǎn)為根中心的樹形拓?fù)?。整個(gè)網(wǎng)絡(luò)的管理是通過各節(jié)點(diǎn)中的網(wǎng)絡(luò)管理模塊完成的。無線網(wǎng)絡(luò)采用LEPS(Link Estimation and Parent Selection)協(xié)議。LEPS協(xié)議是系統(tǒng)的多跳路由協(xié)議。它通過節(jié)點(diǎn)之間的鄰居信息交換機(jī)制,考慮鏈路質(zhì)量,建立到中心節(jié)點(diǎn)的最短通信路徑。

          從節(jié)點(diǎn)分為不同級(jí)別的父節(jié)點(diǎn),只向自己的父節(jié)點(diǎn)發(fā)送信息,通過父節(jié)點(diǎn)逐級(jí)向上傳到主節(jié)點(diǎn)。從節(jié)點(diǎn)路由表中擁有自己子節(jié)點(diǎn)的編號(hào)地址。父節(jié)點(diǎn)處于網(wǎng)絡(luò)的中心是最高級(jí)的父節(jié)點(diǎn),它的路由表中擁有整個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的編號(hào)和地址。主節(jié)點(diǎn)的數(shù)據(jù)由其子節(jié)點(diǎn)逐級(jí)傳向各從節(jié)點(diǎn)。

          無線網(wǎng)絡(luò)分為拓?fù)浣Y(jié)構(gòu)的建立、路由維護(hù)和數(shù)據(jù)通信3個(gè)階段。在拓?fù)浣Y(jié)構(gòu)的建立階段,所有的節(jié)點(diǎn)周期性地廣播自己的路由信息,節(jié)點(diǎn)根據(jù)跳數(shù)和鏈路質(zhì)量信息建立最短條數(shù)路由,建立路由表。網(wǎng)絡(luò)將進(jìn)行定期的維護(hù),在維護(hù)的過程中,節(jié)點(diǎn)將再次對(duì)父節(jié)點(diǎn)做出評(píng)估,刷新路由表。在數(shù)據(jù)通信階段,路由協(xié)議為數(shù)據(jù)傳遞提供行進(jìn)路徑。在完成組網(wǎng)后,若向網(wǎng)絡(luò)中增加節(jié)點(diǎn),則只需要對(duì)網(wǎng)絡(luò)進(jìn)行維護(hù)更新,更新路由表即可。

          4.5 父節(jié)點(diǎn)選擇

          所有從節(jié)點(diǎn)的數(shù)據(jù)都是通過父節(jié)點(diǎn)傳送到主節(jié)點(diǎn)的。父節(jié)點(diǎn)性能是路由協(xié)議的核心部分。父節(jié)點(diǎn)的選擇決定于鏈路質(zhì)量和跳數(shù)。

          鏈路質(zhì)量是兩節(jié)點(diǎn)間的雙向鏈路通信質(zhì)量。以兩相鄰節(jié)點(diǎn)A、B為例。在網(wǎng)絡(luò)廣播信息中,節(jié)點(diǎn)A向節(jié)點(diǎn)B發(fā)送多組數(shù)據(jù),則B節(jié)點(diǎn)的接收成功率為:

          協(xié)議進(jìn)一步采用加權(quán)唯一平均的方法計(jì)算最終的鏈路質(zhì)量估計(jì)值,進(jìn)而減小鏈路質(zhì)量評(píng)估的抖動(dòng)。令新的鏈路估計(jì)值為NEWEST,所占比例為μ=25%,則原先的作戰(zhàn)比例為(1-μ),最終的鏈路質(zhì)量估計(jì)值為:

          跳數(shù)HOPNU為節(jié)點(diǎn)到主節(jié)點(diǎn)的總共轉(zhuǎn)發(fā)次數(shù)。在網(wǎng)絡(luò)中,由于鏈路質(zhì)量的原因,節(jié)點(diǎn)的父節(jié)點(diǎn)可能丟失。在進(jìn)行父節(jié)點(diǎn)選取時(shí),為了保證父節(jié)點(diǎn)的質(zhì)量,通常選用SEDEST>0.1,RCVEST>0.1和EST>0.16的鏈路質(zhì)量,這樣不至于鏈路質(zhì)量過低而不穩(wěn)定。然后在相鄰節(jié)點(diǎn)中先判斷跳數(shù)最小,再判斷鏈路通信質(zhì)量選擇父節(jié)點(diǎn)。

          結(jié)語(yǔ)

          本系統(tǒng)采用的STM32L152主控芯片和SI4432無線收發(fā)芯片都屬于低功耗高集成芯片,降低了系統(tǒng)的功耗。其中STM32L152是Cortex-M3微控制器,提高了系統(tǒng)的性能;主節(jié)點(diǎn)帶有硬件備份提高了系統(tǒng)的可靠性;LPES路由協(xié)議技術(shù)提高系統(tǒng)的通信效率,使系統(tǒng)拓展方便。本系統(tǒng)適合于工業(yè)現(xiàn)場(chǎng)數(shù)據(jù)采集、小區(qū)數(shù)據(jù)采集、醫(yī)院病房監(jiān)控、農(nóng)業(yè)現(xiàn)場(chǎng)數(shù)據(jù)采集等一些短距離的通信應(yīng)用。功能模塊化和網(wǎng)絡(luò)可拓展化,使系統(tǒng)便于功能的更新和節(jié)點(diǎn)的拓展。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();