當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于Cortex-M3內(nèi)核處理器的嵌入式Web服務(wù)器設(shè)計(jì)

引言

  目前,網(wǎng)絡(luò)化控制己成為遠(yuǎn)程控制的主要研究方向,利用網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)局域乃至全球范圍內(nèi)設(shè)備的監(jiān)控是工業(yè)控制系統(tǒng)的發(fā)展趨勢(shì)[1]。嵌入式Internet遠(yuǎn)程監(jiān)控技術(shù)作為網(wǎng)絡(luò)化控制的代表,它解決了工業(yè)控制領(lǐng)域中異構(gòu)網(wǎng)絡(luò)互聯(lián)問(wèn)題,提高了傳統(tǒng)裝備的智能化水平,促進(jìn)了傳統(tǒng)產(chǎn)業(yè)結(jié)構(gòu)的調(diào)整。嵌入式Web服務(wù)器尤其適用于嵌入式Internet應(yīng)用,它通過(guò)Ethernet或Modem的連接可以輕松連接到任何網(wǎng)絡(luò),真正實(shí)現(xiàn)對(duì)設(shè)備的遠(yuǎn)程管理和控制。

  實(shí)現(xiàn)方案

  嵌入式Web服務(wù)器必須具備的基本功能包括:可控制與其連接的設(shè)備并獲取設(shè)備的狀態(tài)和數(shù)據(jù);現(xiàn)場(chǎng)信息可以網(wǎng)頁(yè)形式發(fā)布;可及時(shí)響應(yīng)遠(yuǎn)程用戶的控制命令。此外,嵌入式設(shè)備應(yīng)具有功能簡(jiǎn)單、功耗低和便攜等特點(diǎn)。為此,筆者設(shè)計(jì)的系統(tǒng)如圖1所示。

圖1 系統(tǒng)框圖

  本系統(tǒng)采用了ST公司的Cortex-M3內(nèi)核的STM32微處理器STM32F103RB。該芯片屬于STM32系列的增強(qiáng)型,提供多達(dá)128KB的片內(nèi)Flah、20KB的RAM和豐富的外設(shè)接口。Cortex-M3內(nèi)核在設(shè)計(jì)上專門考慮了滿足集功耗低、實(shí)時(shí)性強(qiáng)的工業(yè)級(jí)嵌入式產(chǎn)品領(lǐng)域的特點(diǎn)。在性能相同的條件下,STM32產(chǎn)品功耗比同級(jí)別產(chǎn)品要低75%,工作環(huán)境溫度達(dá)105℃。因?yàn)榧啥群芨撸粋€(gè)電源外,LQFP100封裝芯片的最小系統(tǒng)只需要外接7個(gè)電容即可。

  TCP/IP協(xié)議棧由W5100來(lái)支持,它集TCP/IP協(xié)議棧、以太網(wǎng)MAC和PHY為一體,其內(nèi)部16KB的發(fā)送/接收緩沖區(qū)可快速進(jìn)行數(shù)據(jù)交換,最大通信速率達(dá)到25Mbps;內(nèi)嵌10BaseT/100BaseTX以太網(wǎng)物理層,支持自動(dòng)應(yīng)答;提供多種總線接口方式,可以很方便地與各種MCU連接,簡(jiǎn)化了硬件電路設(shè)計(jì),使嵌入式系統(tǒng)在沒(méi)有操作系統(tǒng)的支持下,真正實(shí)現(xiàn)單芯片接入因特網(wǎng)的理想。

  為減少PCB板面積和布線復(fù)雜性,考慮到系統(tǒng)的數(shù)據(jù)傳輸率要求不高,選擇SPI接口作為STM32F103RB和W5100的連接方式。STM32F103RB、W5100和RJ45接口構(gòu)成一個(gè)典型的嵌入式Web服務(wù)器。

  作為一個(gè)應(yīng)用實(shí)例,本設(shè)計(jì)利用STM32F103RB的片上ADC和GPIO,將服務(wù)器與LED和壓力傳感器相連,一旦服務(wù)器接收到來(lái)自瀏覽器端的連接請(qǐng)求,服務(wù)器將及時(shí)響應(yīng),將當(dāng)前的壓力參數(shù)、LED狀態(tài)和溫度等信息嵌入到Web頁(yè)面并發(fā)布到網(wǎng)上,這樣現(xiàn)場(chǎng)的各種信息就呈現(xiàn)在瀏覽器。此外,用戶通過(guò)網(wǎng)頁(yè)上的控制按鈕可以遠(yuǎn)程控制LED狀態(tài),操作結(jié)果能及時(shí)反饋在網(wǎng)頁(yè)上。

  硬件設(shè)計(jì)

  圖2為嵌入式Web服務(wù)器的簡(jiǎn)化電路圖,主要顯示了構(gòu)成服務(wù)器的三個(gè)核心器件的連接方式。RJ45接口是帶有網(wǎng)絡(luò)變壓器的物理層接口。在W5100中,通過(guò)將SEN引腳經(jīng)10KΩ電阻上拉到高電平以使能其處于SPI從模式。CS為片選,MISO和MOSI為兩條數(shù)據(jù)傳輸線。W5100的SPI工作時(shí)鐘由處于主模式的STM32F103RB提供。為方便STM32F103RB判斷W5100的工作狀態(tài),必須將W5100的中斷引腳INT與STM32F103RB的外部中斷線相連接。W5100的第5、6、8和9引腳是PHY信號(hào)線,用于與RJ45接口相連接。除電源相關(guān)引腳外,W5100的其它引腳可以選擇置空。

圖2 嵌入式Web服務(wù)器的簡(jiǎn)化電路圖

  軟件設(shè)計(jì)

  主程序

  主程序流程圖如圖3所示。

圖3 主程序流程圖

  當(dāng)程序開始啟動(dòng)時(shí),程序首先初始化STM32和W5100,配置STM32工作在SPI主模式,而W5100工作在從模式,啟動(dòng)STM32的A/D和片上的溫度傳感器,配置W5100工作于TCP服務(wù)器模式,在TCP服務(wù)器模式下,端口的狀態(tài)轉(zhuǎn)換如圖4所示。

圖4 W5100處于TCP服務(wù)器模式的端口狀態(tài)轉(zhuǎn)換圖
[!--empirenews.page--]在使用內(nèi)部溫度傳感器時(shí)要注意:溫度傳感器在從調(diào)電模式喚醒后到它能以正常水平輸出采樣電壓前有一段建立時(shí)間;ADC喚醒后同樣需要一段建立時(shí)間,為使延遲最小,ADON位(用于啟動(dòng)A/D轉(zhuǎn)換)和TSVREFE位(用于將溫度傳感器從調(diào)電模式中喚醒)應(yīng)該同時(shí)置位。另外,對(duì)溫度傳感器的采樣時(shí)間要大于2.2μs。接下來(lái)是一個(gè)無(wú)限循環(huán)體,程序開始不斷檢查外部中斷狀態(tài)標(biāo)志(WInterFlag)和Socket接收數(shù)據(jù)狀態(tài)標(biāo)志(SockRecvFlag)是否改變,同時(shí)開始處理A/D轉(zhuǎn)換的數(shù)據(jù),以保證服務(wù)器在產(chǎn)生網(wǎng)頁(yè)時(shí)能得到當(dāng)前的各種數(shù)據(jù)。一旦W5100的Socket端口有中斷事件產(chǎn)生時(shí),W5100將通過(guò)其中斷引腳INT觸發(fā)STM32的外部中斷,使STM32進(jìn)入外部中斷處理函數(shù)改變WInterFlag,程序接著進(jìn)入處理W5100中斷事件函數(shù),在此函數(shù)中,STM32通過(guò)訪問(wèn)W5100的中斷寄存器(IR)和端口0中斷寄存器(S0_IR)判斷出W5100的端口0產(chǎn)生何種中斷事件,若Socket接收到數(shù)據(jù),則改變SockRecvFlag。

  程序檢測(cè)到SockRecvFlag發(fā)生改變,立即進(jìn)入處理接收數(shù)據(jù)函數(shù)。處理接收數(shù)據(jù)函數(shù)是整個(gè)程序的核心,它主要負(fù)責(zé)收發(fā)數(shù)據(jù)、解析HTTP協(xié)議和響應(yīng)用戶的不同請(qǐng)求。圖5為該過(guò)程的程序流程圖。

  數(shù)據(jù)處理程序

  HTTP協(xié)議是一種請(qǐng)求/響應(yīng)協(xié)議。在基于HTTP的客戶/服務(wù)器數(shù)據(jù)交換時(shí),當(dāng)HTTP請(qǐng)求產(chǎn)生時(shí),就開始一次HTTP通信。過(guò)程如下:瀏覽器提取出URL中的主機(jī)后,向DNS發(fā)出請(qǐng)求,解析主機(jī)名的IP地址;DNS解析地址并將結(jié)果返回給瀏覽器;瀏覽器向該地址請(qǐng)求建立TCP連接;瀏覽器發(fā)出請(qǐng)求報(bào)文;服務(wù)器向?yàn)g覽器發(fā)送響應(yīng)報(bào)文,并將指定數(shù)據(jù)發(fā)送給瀏覽器;斷開連接。

  根據(jù)HTTP協(xié)議規(guī)定,如果客戶端沒(méi)有發(fā)出請(qǐng)求,則服務(wù)器不會(huì)自動(dòng)發(fā)送頁(yè)面。因此通過(guò)在網(wǎng)頁(yè)程序中加入 標(biāo)記,使瀏覽器在無(wú)用戶干預(yù)下周期性地刷新頁(yè)面,從而保證用戶及時(shí)地獲得遠(yuǎn)程現(xiàn)場(chǎng)的信息。

  HTTP消息包括一個(gè)起始行、零個(gè)或多個(gè)消息頭域、一個(gè)標(biāo)示頭域結(jié)束的實(shí)體行和一個(gè)可能存在的消息體。本程序主要解析消息的起始行,而忽略其它內(nèi)容,這種處理思路也符合嵌入式系統(tǒng)硬件對(duì)軟件實(shí)現(xiàn)的復(fù)雜度要求。請(qǐng)求方法決定了對(duì)請(qǐng)求URI所指定的資源進(jìn)行操作的方式,GET方法讀取URL指定的資源,一般用來(lái)向服務(wù)器傳輸少量且透明的數(shù)據(jù),數(shù)據(jù)總量被限制在255個(gè)字符以內(nèi),而POST方法可傳輸大量數(shù)據(jù),與HTML的表單特性相配合以實(shí)現(xiàn)遠(yuǎn)程動(dòng)態(tài)交互控制。

  當(dāng)連接開始時(shí),客戶端發(fā)送GET方法請(qǐng)求給服務(wù)器,以訪問(wèn)服務(wù)器網(wǎng)頁(yè),為限定特定用戶訪問(wèn),增加數(shù)據(jù)安全性,在網(wǎng)頁(yè)中加入基本認(rèn)證機(jī)制。當(dāng)客戶端請(qǐng)求受基本認(rèn)證機(jī)制保護(hù)的網(wǎng)頁(yè)時(shí),服務(wù)器即要求用戶認(rèn)證,服務(wù)器端對(duì)用戶的登陸信息按Base64碼解碼,只有認(rèn)證成功,瀏覽器才能獲得正確的網(wǎng)頁(yè)數(shù)據(jù)。正確的控制網(wǎng)頁(yè)如圖6所示,若用戶信息有誤,服務(wù)器返回以狀態(tài)碼401為起始行的響應(yīng)消息。

圖5 數(shù)據(jù)處理程序流程圖

由于服務(wù)器端檢測(cè)的數(shù)據(jù)處在不停的變化之中,為使網(wǎng)頁(yè)的數(shù)據(jù)也能及時(shí)地更新,網(wǎng)頁(yè)程序初始化時(shí),要顯示的數(shù)據(jù)都使用字符串標(biāo)記暫時(shí)表示,在每次發(fā)送響應(yīng)消息到端口前,再將網(wǎng)頁(yè)中定義字符串標(biāo)記用當(dāng)前設(shè)備的實(shí)際值替換。

  對(duì)LED的控制,網(wǎng)頁(yè)程序采用HTML語(yǔ)言的表單,HTTP協(xié)議請(qǐng)求方法采用POST。POST作為請(qǐng)求方法時(shí),首先和Web服務(wù)器建立連接,成功后瀏覽器將HTML表單中的值發(fā)送給Web服務(wù)器。這種方式?jīng)]有字符長(zhǎng)度的限制,表單數(shù)據(jù)是作為附加的文檔發(fā)送而不是作為URL的一部分發(fā)送。服務(wù)器程序通過(guò)判斷客戶的不同控制命令即時(shí)做出LED燈的開關(guān)響應(yīng)。

  在每次連接成功后,服務(wù)器端程序會(huì)返回以狀態(tài)碼200開頭的響應(yīng)消息,消息的起始行為:HTTP/1.1 200 OK。當(dāng)用戶請(qǐng)求一個(gè)服務(wù)器端不存在的文件時(shí),服務(wù)器返回以狀態(tài)碼404開頭的響應(yīng)消息。

圖6 控制網(wǎng)頁(yè)

  結(jié)語(yǔ)

  這種利用硬件實(shí)現(xiàn)TCP/IP協(xié)議的網(wǎng)絡(luò)芯片W5100及具有Cotex-M3內(nèi)核的STM32處理器構(gòu)成嵌入式Web服務(wù)器的方案性價(jià)比高。通過(guò)網(wǎng)絡(luò),用戶在瀏覽器端可及時(shí)收到遠(yuǎn)程現(xiàn)場(chǎng)傳感器采集的數(shù)據(jù),遠(yuǎn)程現(xiàn)場(chǎng)的開關(guān)狀態(tài)指示燈可實(shí)時(shí)地響應(yīng)用戶的開關(guān)信號(hào)操作請(qǐng)求。測(cè)試表明該系統(tǒng)傳輸大塊數(shù)據(jù)文件的速率可達(dá)到100KBPS。為提高網(wǎng)絡(luò)資源的安全性,可采用AES(Advanced Encryption Standard,先進(jìn)加密標(biāo)準(zhǔn))等編碼機(jī)制來(lái)加密必須保護(hù)的私有數(shù)據(jù)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉