何 濤
(常州輕工職業(yè)技術(shù)學(xué)院,常州 213000)
WiFi在應(yīng)用編程技術(shù)的控制系統(tǒng)維護(hù)
何 濤
(常州輕工職業(yè)技術(shù)學(xué)院,常州 213000)
將低成本的WiFi通信模塊與控制系統(tǒng)中微控制單元的在應(yīng)用編程技術(shù)結(jié)合,可以實(shí)現(xiàn)無(wú)線系統(tǒng)維護(hù),解決了傳統(tǒng)控制系統(tǒng)維護(hù)時(shí)需要連接電纜的缺點(diǎn),尤其適用于難于拆裝的控制系統(tǒng)。
WiFi;MCU;IAP;STM32F103;ESP8266
當(dāng)前MCU廣泛應(yīng)用于各種控制系統(tǒng)中,MCU固件的更新也成為了控制系統(tǒng)維護(hù)的一個(gè)重要項(xiàng)目,但固件更新一般需要電纜連接。因此,維護(hù)控制系統(tǒng)往往需要將整個(gè)電路板拆下,或到現(xiàn)場(chǎng)連接電纜后操作,但很多實(shí)際應(yīng)用中,控制系統(tǒng)往往難以拆裝。本文提供了一種無(wú)線MCU固件更新方式,能讓控制系統(tǒng)的維護(hù)變得更加方便靈活。
很多MCU提供多種編程方式,最普遍的是電纜連接特定編程器更新固件;在系統(tǒng)編程(ISP)方式是芯片廠商在MCU中寫(xiě)入特定的程序,用戶可使用串行接口對(duì)系統(tǒng)進(jìn)行維護(hù),省去了編程器;在應(yīng)用編程(IAP)方式則提供了用戶程序直接讀寫(xiě)內(nèi)部存儲(chǔ)區(qū)域的功能。
ISP編程方式雖然省去了編程器,但廠家在實(shí)現(xiàn)時(shí)往往使用串行接口,無(wú)法避免連接電纜;而IAP則可以讓用戶自行設(shè)計(jì)程序來(lái)配合外圍無(wú)線模塊通信,實(shí)現(xiàn)無(wú)線編程。
無(wú)線模塊有很多類型,如ZigBee、WiFi、Bluetooth等,考慮使用WiFi能有更好的應(yīng)用擴(kuò)展,ESP8266模塊成本較低,這里選擇WiFi作為無(wú)線更新MCU的外圍通信模塊。
2.1 硬件電路
這里使用STM32F103C8T6作為控制系統(tǒng)的MCU,無(wú)線模塊選用ESP8266。無(wú)線模塊接入MCU的電路如圖1所示。
圖1 電路原理圖
WiFi模塊的接入只使用了MCU的三個(gè)I/O口,占用的資源比較少。PA3和PA2是MCU的串口接口;PA4用于關(guān)斷ESP8266,有利于降低系統(tǒng)功耗。
2.2 存儲(chǔ)空間
為了能利用IAP技術(shù)對(duì)MCU進(jìn)行程序更新,需要對(duì)MCU中的存儲(chǔ)空間進(jìn)行合理的規(guī)劃。這里把STM32F103C8T6中的存儲(chǔ)空間設(shè)計(jì)成如下所示的結(jié)構(gòu):
BootLoader0x080x000x320x00用戶應(yīng)用程序用戶數(shù)據(jù)0x080000000x080028000x080032000x0800F0000x08010000
MCU中存儲(chǔ)空間地址從0x0800 0000開(kāi)始,共有64K,地址空間到0x0800 FFFF結(jié)束。
這里將引導(dǎo)程序BootLoader放在開(kāi)始位置,系統(tǒng)上電啟動(dòng)時(shí),引導(dǎo)程序會(huì)判斷是否需要更新維護(hù)。如果需要?jiǎng)t調(diào)用ESP8266模塊進(jìn)行維護(hù)通信;否則嘗試讀取用戶應(yīng)用程序地址并跳轉(zhuǎn)到該地址運(yùn)行,系統(tǒng)進(jìn)入正常工作模式。
在0x0800 2800的位置存放用戶應(yīng)用程序的首地址,該地址占用4字節(jié),該位置同時(shí)也作為用戶應(yīng)用程序可用的標(biāo)志。系統(tǒng)更新維護(hù)時(shí),在更新用戶應(yīng)用程序之前會(huì)先清除此處保存的地址,而在更新完成并校驗(yàn)成功后,再重新寫(xiě)入最新的用戶應(yīng)用程序入口地址。如果引導(dǎo)程序啟動(dòng)時(shí)沒(méi)能在此處獲得有效地址,則系統(tǒng)自動(dòng)進(jìn)入維護(hù)模式。
用戶應(yīng)用程序的開(kāi)始地址設(shè)為0x0800 3200,用戶可以根據(jù)需要調(diào)整此地址,每次通過(guò)IAP更新用戶應(yīng)用程序后,要把開(kāi)始地址寫(xiě)入0x0800 2800的位置。
0x0800 F000開(kāi)始的位置,通??梢源娣乓恍┫到y(tǒng)運(yùn)行的參數(shù)等數(shù)據(jù),用戶將一些系統(tǒng)配置參數(shù)放在此處,可保證系統(tǒng)掉電后不會(huì)丟失。
2.3 通信協(xié)議
WiFi模塊在工作時(shí),通常有兩種模式:一種是作為無(wú)線熱點(diǎn)(AP)存在;另一種是作為station存在。這里采用AP模式,這樣在進(jìn)行系統(tǒng)維護(hù)時(shí),控制系統(tǒng)本身就作為AP熱點(diǎn),維護(hù)者可以使用帶WiFi的設(shè)備直接接入控制系統(tǒng)進(jìn)行維護(hù),無(wú)需配置額外的網(wǎng)絡(luò)設(shè)備。
系統(tǒng)進(jìn)行無(wú)線維護(hù)時(shí),需要維護(hù)軟件和MCU無(wú)線通信,這里設(shè)計(jì)了一個(gè)簡(jiǎn)單通信協(xié)議,基本命令有5個(gè):
① 讀取命令,由上位機(jī)發(fā)出指令,MCU返回需要讀取的數(shù)據(jù);
②寫(xiě)入命令,由上位機(jī)發(fā)出指令,MCU再接收數(shù)據(jù)并寫(xiě)入內(nèi)部存儲(chǔ)器,返回應(yīng)答;
③ 更新啟動(dòng)地址命令,由上位機(jī)發(fā)出,MCU收到新地址后,更新0x0800 2800中存放的用戶應(yīng)用程序入口地址,返回應(yīng)答;
④ 加載命令,由上位機(jī)發(fā)出,MCU收到指令后,根據(jù)指令跳轉(zhuǎn)到指令指定位置運(yùn)行;
⑤ 查詢命令,由上位機(jī)發(fā)出指令,MCU返回當(dāng)前引導(dǎo)程序的版本號(hào)。
2.4 維護(hù)軟件
上位機(jī)可以是帶有WiFi連接的PC機(jī),也可以是手機(jī)等帶有WiFi的手持設(shè)備,由于通信協(xié)議是基于存儲(chǔ)空間讀寫(xiě)設(shè)計(jì)的,所以維護(hù)軟件除了有更新應(yīng)用程序的功能,同時(shí)也有更新用戶數(shù)據(jù)的功能,這里用Java設(shè)計(jì)了一款維護(hù)軟件,如圖2所示。
圖2 維護(hù)軟件
與現(xiàn)有控制系統(tǒng)的維護(hù)形式相比,無(wú)線方式讓控制系統(tǒng)的部署更加靈活。在后續(xù)的開(kāi)發(fā)維護(hù)中,可進(jìn)一步加強(qiáng)無(wú)線通信的功能,目前的維護(hù)只能支持程序更新、參數(shù)更新,以后可以將系統(tǒng)運(yùn)行狀態(tài)的捕捉納入無(wú)線維護(hù)的支持范圍,使控制系統(tǒng)的維護(hù)更加靈活、方便。
[1] 范興隆.ESP8266在智能家居監(jiān)控系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(9).
[2] ST.使用STM32F10xxx的USART實(shí)現(xiàn)在應(yīng)用中編程,2008.
[3] ST.STM32F10xxx閃存編程,2008.
[4] 顏秋男,胡毅.STM32F103VB的SD卡在應(yīng)用編程設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(2).
何濤,主要研究方向?yàn)槲锫?lián)網(wǎng)應(yīng)用技術(shù)。
Control System Maintenance of WiFi In-application Programming Technology
He Tao
(Changzhou Vocational Institute of Light Industry,Changzhou 213000,China)
Using the low-cost WiFi module and the in-application programming technology of the microcontroller unit,the control system can be maintained in the wireless environment.It solves the trouble that the control system should be connected with the cable when it is maintained.Especially it is suitable for the control system which is difficult to be disassembled.
WiFi;MCU;IAP;STM32F103;ESP8266
TP273
A
士然
2016-11-14)