周 瑋,董全德,宋啟祥
(宿州學(xué)院 信息工程學(xué)院,安徽 宿州 234000)
基于STM32的物聯(lián)網(wǎng)底層平臺(tái)研究與測(cè)試
周 瑋,董全德,宋啟祥
(宿州學(xué)院 信息工程學(xué)院,安徽 宿州 234000)
為了解決物聯(lián)網(wǎng)底層的數(shù)據(jù)收發(fā)問題,以STM32增強(qiáng)型系列控制器為基礎(chǔ),結(jié)合CC2541低功耗片載系統(tǒng)設(shè)計(jì)了物聯(lián)網(wǎng)底層無線數(shù)據(jù)收發(fā)系統(tǒng)。該系統(tǒng)可以與手機(jī)一樣進(jìn)行短信編輯操作,機(jī)器能夠通過自定義用戶名來區(qū)別其他用戶,實(shí)現(xiàn)了任意兩節(jié)點(diǎn)之間的短信數(shù)據(jù)通信以及串口對(duì)PC的數(shù)據(jù)通信。設(shè)計(jì)了數(shù)據(jù)收發(fā)的硬件結(jié)構(gòu)、CC2541片載通信、PC通信的USART驅(qū)動(dòng)和連接MCU與CC2541的SPI驅(qū)動(dòng)。經(jīng)測(cè)試,該系統(tǒng)能夠?qū)崿F(xiàn)物聯(lián)網(wǎng)底層數(shù)據(jù)通信需求,有一定應(yīng)用價(jià)值。
STM32;底層平臺(tái);物聯(lián)網(wǎng)
隨著社會(huì)經(jīng)濟(jì)的發(fā)展,物聯(lián)網(wǎng)(Internet of things)[1]已經(jīng)在人們的日常生活中扮演著越來越重要的作用。目前,物聯(lián)網(wǎng)研究的熱點(diǎn)主要在WSN、協(xié)議棧、無線射頻識(shí)別和無線短距離通訊上,而對(duì)于基礎(chǔ)平臺(tái)的無線傳感器網(wǎng)絡(luò)操作系統(tǒng)研究很少,因此相關(guān)研究亟待進(jìn)行。
STM32增強(qiáng)型系列控制器[2]采用ARM Cortex-M3內(nèi)核設(shè)計(jì),可提供72 MHz時(shí)鐘頻率,配置512 kB 存儲(chǔ),控制器運(yùn)行功耗低,可靠性高。片載通信系統(tǒng)采用CC2541的SoC[3]系統(tǒng),CC2541具有低功耗、高傳輸率的特性,并且支持多個(gè)頻段的數(shù)據(jù)通信速率。
該系統(tǒng)采用增強(qiáng)型的STM32F103C8控制器,設(shè)計(jì)并實(shí)現(xiàn)物聯(lián)網(wǎng)底層平臺(tái)數(shù)據(jù)收發(fā)功能。
物聯(lián)網(wǎng)(IoT)技術(shù)是從傳統(tǒng)的傳感器網(wǎng)絡(luò)發(fā)展而來,采用RFID射頻識(shí)別,采集到物體的數(shù)據(jù)并進(jìn)行處理的技術(shù)。IoT采用面向服務(wù)的體系架構(gòu),各上層應(yīng)用的開發(fā)可不涉及底層的驅(qū)動(dòng)和接口,因此對(duì)物聯(lián)網(wǎng)底層數(shù)據(jù)通信模塊接口的設(shè)計(jì)能對(duì)上層應(yīng)用提供有效的支持。
圖1是物聯(lián)網(wǎng)體系架構(gòu)圖,整個(gè)物聯(lián)網(wǎng)體系結(jié)構(gòu)采用ISO/IEC標(biāo)準(zhǔn),從上到下分成服務(wù)層、網(wǎng)絡(luò)層和感知層。
服務(wù)層將網(wǎng)絡(luò)采集到的數(shù)據(jù)經(jīng)過數(shù)據(jù)處理、數(shù)據(jù)挖掘和數(shù)據(jù)融合等技術(shù)提供給用戶使用,包括對(duì)物聯(lián)網(wǎng)用戶的設(shè)備管理、服務(wù)管理、業(yè)務(wù)管理和安全管理等。服務(wù)層是用戶開發(fā)應(yīng)用最多的一層。
圖1 物聯(lián)網(wǎng)體系結(jié)構(gòu)
網(wǎng)絡(luò)層將底層硬件采集到的數(shù)據(jù)經(jīng)由本地局域網(wǎng)絡(luò)或廣域網(wǎng)絡(luò)通過數(shù)據(jù)通信發(fā)送給服務(wù)層。廣域網(wǎng)的接入可以采用公用電話網(wǎng)、核心接入網(wǎng)和無線傳感網(wǎng)等實(shí)現(xiàn)數(shù)據(jù)交換和路由。對(duì)網(wǎng)絡(luò)層的安全管理和網(wǎng)絡(luò)服務(wù)的提供也是物聯(lián)網(wǎng)架構(gòu)的研究重點(diǎn)。
感知層通過傳感器節(jié)點(diǎn)、RFID射頻等從物體中采集數(shù)據(jù),根據(jù)用戶的需要將數(shù)據(jù)進(jìn)行處理和識(shí)別,通過特征提取、數(shù)據(jù)匯聚等技術(shù)將采集到的數(shù)據(jù)匯聚到中心節(jié)點(diǎn),并進(jìn)一步交付上層使用。無線通信采用的技術(shù)主要有ZigBee、802.11b等。
2.1 底層平臺(tái)定時(shí)器設(shè)計(jì)
高性能總線AHB將STM32F103C8控制器系統(tǒng)時(shí)鐘分成多個(gè)頻段,該系統(tǒng)采用預(yù)先分頻的APB1和APB2兩個(gè)時(shí)段,片上外設(shè)總線APB1和APB2競(jìng)爭(zhēng)頻段號(hào),預(yù)留1,2,4,8,16的時(shí)隙,STM32F103C8控制器定時(shí)時(shí)鐘設(shè)計(jì)如圖2所示。
對(duì)于片上外設(shè)總線定時(shí)器T1,當(dāng)預(yù)分頻等于1時(shí),原樣輸出信號(hào)參數(shù),最高能夠產(chǎn)生36 MHz信號(hào),與電路上20個(gè)外設(shè)時(shí)鐘使能后經(jīng)PCLK1時(shí)鐘接入APB總線外設(shè);否則,如果片上外設(shè)總線1得到大于1的時(shí)隙時(shí),將信號(hào)放大2倍輸出,產(chǎn)生T2~T7的TIMXCLK時(shí)鐘接入APB總線外設(shè)。對(duì)于片上外設(shè)總線定時(shí)器T2來說,如果片上外設(shè)總線定時(shí)器T2使用其他預(yù)留分頻,則將信號(hào)放大2倍,會(huì)產(chǎn)生最大72 MHz信號(hào),與電路上15個(gè)外設(shè)時(shí)鐘使能后經(jīng)PCLK2時(shí)鐘接入APB總線外設(shè);否則,放大2倍信號(hào)產(chǎn)生T1~T8的TIMXCLK時(shí)鐘接入APB總線外設(shè)。
通過以上設(shè)置STM32F103C8控制器使能通道,能夠根據(jù)普通定時(shí)器產(chǎn)生多路相同周期,根據(jù)預(yù)先分頻的APB1和APB2兩個(gè)時(shí)段,計(jì)算向上計(jì)數(shù)溢出參數(shù),得到定時(shí)時(shí)鐘。
圖2 STM32F103C8控制器定時(shí)時(shí)鐘設(shè)計(jì)
2.2 USART模塊電路設(shè)計(jì)
USART模塊采用串行通信模式進(jìn)行數(shù)據(jù)收發(fā)。模塊通常分為三個(gè)部分:數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊和時(shí)鐘模塊。所有的模塊共享控制寄存器。時(shí)鐘模塊包括PWB波形生成器和同步信號(hào)發(fā)生器,在同步模式下由外部時(shí)鐘輸入驅(qū)動(dòng)。
USART模塊工作時(shí)與波特率存儲(chǔ)器USARTDRR同步連接,當(dāng)計(jì)時(shí)器到時(shí)或有信息載入到USARTDRR存儲(chǔ)器時(shí),信號(hào)自動(dòng)載入到波特率存儲(chǔ)器USARTDRR中。系統(tǒng)時(shí)鐘由內(nèi)部模式和外部模式共同驅(qū)動(dòng),為了防止數(shù)據(jù)漂移,提高系統(tǒng)的穩(wěn)定性采用1個(gè)CPU時(shí)鐘時(shí)延。使用同步時(shí)鐘時(shí), 將USM置為使能,外接引腳XCK可用于數(shù)據(jù)發(fā)送和接收。
信號(hào)發(fā)送器部分由寫入緩存SEDBFF、信號(hào)校驗(yàn)?zāi)K、串行移位寄存器和幀模塊產(chǎn)生器等部分組成,對(duì)要發(fā)送的幀數(shù)據(jù)先保存在SEDBFF緩存中,支持9個(gè)數(shù)據(jù)位并從上位機(jī)獲取時(shí)鐘同步信息,能夠?qū)崿F(xiàn)連續(xù)數(shù)據(jù)發(fā)送。支持?jǐn)?shù)據(jù)檢測(cè)和幀錯(cuò)誤校驗(yàn),對(duì)發(fā)送結(jié)束采用中斷響應(yīng)。
信號(hào)接收器部分由接收模塊、數(shù)據(jù)通信模塊和存儲(chǔ)模塊組成,當(dāng)系統(tǒng)檢測(cè)到信號(hào)位時(shí),啟動(dòng)數(shù)據(jù)接收模塊。信號(hào)位以先前設(shè)置的時(shí)鐘PCLK進(jìn)行接收,并載入接收緩存RECBUFF,當(dāng)收到停止位RXC后產(chǎn)生中斷停止數(shù)據(jù)接收。讀取數(shù)據(jù)時(shí)從寄存器高位進(jìn)行讀取,當(dāng)接收緩存數(shù)據(jù)為空時(shí),更新接收緩存直到中斷產(chǎn)生或讀取到緩存數(shù)據(jù)。對(duì)于STM32F103C8控制器定時(shí)時(shí)鐘設(shè)計(jì)如圖3所示。
圖3 USART模塊電路設(shè)計(jì)
3.1 SPI設(shè)計(jì)
CC2541通過串行外設(shè)接口USART模塊微處理單元進(jìn)行通信。SPI有三種寄存器:控制寄存器(SPI_CR)、狀態(tài)寄存器(SPI_SR)、數(shù)據(jù)寄存器(SPI _DR)。該系統(tǒng)采用SPI環(huán)形總線結(jié)構(gòu),雙向寄存器控制數(shù)據(jù)收發(fā)。當(dāng)系統(tǒng)檢測(cè)到上升信號(hào)時(shí),置位sdo電壓,準(zhǔn)備數(shù)據(jù)發(fā)送;當(dāng)系統(tǒng)檢測(cè)到下行信號(hào)時(shí),置位sdi電壓,準(zhǔn)備數(shù)據(jù)接收,進(jìn)行雙向數(shù)據(jù)通信。
系統(tǒng)設(shè)計(jì)SPI設(shè)置為同步收發(fā)模式,時(shí)鐘頻率CLK置位,當(dāng)系統(tǒng)檢測(cè)到MOSI標(biāo)志位,系統(tǒng)從外設(shè)進(jìn)行數(shù)據(jù)的輸入;當(dāng)收到MISO標(biāo)志位時(shí),系統(tǒng)輸出數(shù)據(jù)到外設(shè)。SPI上電后初始化參數(shù):設(shè)置標(biāo)志位CPHA使能,當(dāng)系統(tǒng)檢測(cè)到數(shù)據(jù)時(shí)檢測(cè)時(shí)鐘信號(hào)。配置SPI接口定時(shí)信息,由于該系統(tǒng)采用同步模式進(jìn)行數(shù)據(jù)收發(fā),設(shè)備間是對(duì)等的關(guān)系,對(duì)等設(shè)備SDO接口與SDI接口進(jìn)行互聯(lián),P1的SDO接收P2設(shè)備SDI傳送過來的信號(hào),在進(jìn)行時(shí)鐘配置時(shí),反方向設(shè)置設(shè)備P1和P2的時(shí)序。SPI通信設(shè)計(jì)如圖4所示。
圖4 SPI通信設(shè)計(jì)
3.2 數(shù)據(jù)收發(fā)設(shè)計(jì)
CC2541上電后同步時(shí)鐘信號(hào),初始化各參數(shù)信息,配置參數(shù)CPOL=0并設(shè)置同步通信模式進(jìn)行通信。調(diào)用函數(shù)init()完成各參數(shù)配置,設(shè)置CPU延遲時(shí)間和電頻模式,設(shè)置發(fā)射功率和接收功率。設(shè)置初始連接信息,設(shè)置RSTN為輸出模式,設(shè)置CCA進(jìn)入接收模式。
CC2541片上系統(tǒng)數(shù)據(jù)發(fā)送流程如圖5所示。
1)在準(zhǔn)備發(fā)送數(shù)據(jù)前檢測(cè)發(fā)送前導(dǎo)工作是否完成,判斷TX-FRM-DONE標(biāo)志位,如果沒有進(jìn)入發(fā)送周期,則停止數(shù)據(jù)發(fā)送,進(jìn)入準(zhǔn)備狀態(tài),檢測(cè)發(fā)送緩存直到系統(tǒng)異常排除。
2)進(jìn)入發(fā)送狀態(tài),關(guān)閉接收數(shù)據(jù)中斷并封裝數(shù)據(jù)包,將要發(fā)送的數(shù)據(jù)寫入TXFIFO,并打開接收數(shù)據(jù)中斷,等待數(shù)據(jù)發(fā)送。
3)讀取SEDBFF中的數(shù)據(jù)發(fā)送,進(jìn)入等待狀態(tài)。如果在規(guī)定時(shí)間內(nèi)接收方發(fā)來的ACK確認(rèn),在basicRfRxFrmDoneIsr中處理接收ACK包。如果沒有收到ACK確認(rèn),超時(shí)重傳,當(dāng)重傳次數(shù)超過門限值時(shí),退避一段時(shí)間后再次進(jìn)入準(zhǔn)備發(fā)送狀態(tài),準(zhǔn)備發(fā)送數(shù)據(jù),直到數(shù)據(jù)發(fā)送成功。
圖5 數(shù)據(jù)發(fā)送流程
系統(tǒng)采用串口通信測(cè)試,CC2541收發(fā)模塊發(fā)送數(shù)據(jù),由主機(jī)接收數(shù)據(jù)并返回消息由收發(fā)模塊接收。配置通信模塊和主機(jī)的IP地址,封裝幀數(shù)據(jù)包括節(jié)點(diǎn)的DSN信息。在廣播和單播兩種模式下測(cè)試片上系統(tǒng)數(shù)據(jù)收發(fā)性能,能夠進(jìn)行很好的數(shù)據(jù)通信。
針對(duì)物聯(lián)網(wǎng)感知層對(duì)節(jié)點(diǎn)數(shù)據(jù)收發(fā)通信的需求設(shè)計(jì)了基于CC2541片載系統(tǒng)的無線通信收發(fā)模塊。為了實(shí)現(xiàn)系統(tǒng)功能,給出底層硬件平臺(tái)電路設(shè)計(jì)和USART模塊電路設(shè)計(jì),USART模塊和SPI通信同步的設(shè)計(jì),并實(shí)現(xiàn)了數(shù)據(jù)收發(fā)的流程。由于CC2541片載系統(tǒng)具有可靠性高、能耗低的特點(diǎn),基于CC2541的物聯(lián)網(wǎng)底層通信系統(tǒng)更加節(jié)能可靠,有一定的實(shí)際應(yīng)用價(jià)值。
[1] 朱近康.無線傳感器網(wǎng)絡(luò)技術(shù)[J].中興通信技術(shù),2004(S1):14-15,20.
[2] 張 樂,邵峰晶,孫仁誠(chéng).嵌入式系統(tǒng)開發(fā)平臺(tái)硬件抽象層的研究與設(shè)計(jì)[J].青島大學(xué)學(xué)報(bào):工程技術(shù)版,2007,22(01):20-25.
[3] 韓 立,郭永偉,羅佳偉.基于ATmega88的USART多處理機(jī)通信[J].電腦與信息技術(shù),2010,18(6):49-51.
[3] 陳宇恒,肖 竹,王 洪.LTE協(xié)議棧與信令分析[M].北京:人民郵電出版社,2013.
[4] ELBERS J P,AUTENRIETH A.From static to software-defined optical networks [C]//2012 16th International Conference on Optical Network Design and Modeling(ONDM),Colchester,2012:1-4.
[5] 林一多.基于IEEE 802.15.4的無線傳感器網(wǎng)絡(luò)MAC協(xié)議機(jī)制的改進(jìn)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2011.
[6] 陳 杰.基于ZigBee的家居安防系統(tǒng)的設(shè)計(jì)[D].武漢:華中科技大學(xué),2010.
[7] 李佳旭.基于ARM7的嵌入式μC/TCP-IP協(xié)議棧的研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2010.
[8] 喻琪家,王艷秋.基于STM32的降壓型直流開關(guān)穩(wěn)壓電源的設(shè)計(jì)[J].沈陽工程學(xué)院學(xué)報(bào):自然科學(xué)版:2016,12(4):349-352.
[9] Zhao Z,Lee W C,Shin Y,et al.An optimal power scheduling method for demand response in home energy management system[J].IEEE Transactions on Smart Grid,2013,4(3):1391-1400.
[10]Kau LJ,Dai BL,Chen C,et al.A cloud network-based power management technology for smart home systems[C]//Proc.of IEEE International Conference on Systems,Man and Cybernetics,SMC,2012,2(1):2527-2532.
ResearchandTestonLowLevelPlatformofInternetofThingsBasedonSTM32
ZHOUWei,DONGQuan-de,SONGQi-xiang
(CollegeofInformationEngineering,SuzhouUniversity,Suzhou234000,AnhuiProvince)
In order to solve the data sending and receiving at the bottom of Internet of things,this paper designed an underlying wireless data transceiver system based on the STM32 enhanced series controller,combined with the CC2541 low-power consumption chip system. The system can be operated like the mobile phone SMS edit operation and the machine can customize the user name to distinguish other users to achieve the technology between any two nodes of message data communication and serial data communication of PC. The hardware structure of data receiving and sending,CC2541 chip communication,USART drive and connection of PC communication and the design of SPI driver for MCU and CC2541 were designed. Test results showed that the system could realize the data communication requirements of the Internet of things and had certain application value.
STM32;Low level platform;Internet of things
TP393.2
A
1673-1603(2017)04-0370-06
(責(zé)任編輯魏靜敏校對(duì)張凱)
2017-07-01
安徽省教育廳自然科學(xué)項(xiàng)目(KJ2016A769);2016宿州學(xué)院重點(diǎn)科研項(xiàng)目(2016yzd10)
周 瑋(1985-),女(土家族),湖南永順人,助教,碩士。
10.13888/j.cnki.jsie(ns).2017.04.014