基于體感網(wǎng)的可穿戴運(yùn)動(dòng)監(jiān)測(cè)系統(tǒng)
3.2 終端節(jié)點(diǎn)軟件設(shè)計(jì)
本文引用地址:http://2s4d.com/article/267435.htm3.2.1 主程序
上電,進(jìn)行時(shí)鐘模塊、定時(shí)器模塊、SPI接口、IIC接口以及無(wú)線通信模塊的初始化配置,將無(wú)線通信模塊配置為接收模式,然后進(jìn)入主循環(huán)。在主循環(huán)中通過(guò)判斷標(biāo)志位“ComFlag”來(lái)執(zhí)行相應(yīng)的操作。當(dāng)ComFlag為“1”時(shí),打開(kāi)定時(shí)器中斷,讀取傳感器數(shù)據(jù)并將數(shù)據(jù)寫(xiě)入Flash。當(dāng)ComFlag為“2”時(shí),關(guān)閉定時(shí)器中斷,停止數(shù)據(jù)采集。當(dāng)ComFlag為“3”時(shí)將Flash數(shù)據(jù)全部擦除。當(dāng)ComFlag為“4”時(shí)進(jìn)入無(wú)線發(fā)送狀態(tài),將數(shù)據(jù)從Flash讀出并發(fā)送。詳見(jiàn)圖6。
3.2.2 無(wú)線接收中斷服務(wù)程序
當(dāng)接收無(wú)線數(shù)據(jù)時(shí),通過(guò)“IRQ”引腳可觸發(fā)單片機(jī)外部中斷。在中斷服務(wù)程序中進(jìn)行無(wú)線命令字符串的匹配,并給標(biāo)志位ComFlag賦值。當(dāng)接收到上傳命令后會(huì)進(jìn)行ID匹配,與本機(jī)地址一致時(shí),將ComFlag賦值。此部分的程序流程與網(wǎng)關(guān)節(jié)點(diǎn)的中斷服務(wù)程序流程基本一樣,請(qǐng)參考圖5。
3.2.3 定時(shí)器中斷服務(wù)程序
當(dāng)收到“開(kāi)始”命令后,打開(kāi)定時(shí)器中斷,開(kāi)始讀取傳感器數(shù)據(jù),每次讀取為12字節(jié)數(shù)據(jù),在讀取后將數(shù)據(jù)寫(xiě)入Flash,記錄Flash地址。用Flash寫(xiě)入的最終地址減去初始地址進(jìn)行數(shù)據(jù)的統(tǒng)計(jì)。具體見(jiàn)圖7。
3.2.4 無(wú)線數(shù)據(jù)發(fā)送流程
與網(wǎng)關(guān)節(jié)點(diǎn)的接收流程對(duì)應(yīng),終端節(jié)點(diǎn)進(jìn)入無(wú)線發(fā)送狀態(tài)后,從Flash中讀取30字節(jié)數(shù)據(jù),按位相加,將和的奇偶性作為校驗(yàn)標(biāo)志,添加至每幀數(shù)據(jù)尾部,打包發(fā)送一幀數(shù)據(jù)。進(jìn)入無(wú)線接收狀態(tài),等待網(wǎng)關(guān)節(jié)點(diǎn)應(yīng)答信號(hào),若收到“Success”則表示當(dāng)前幀發(fā)送成功,繼續(xù)發(fā)送下一幀數(shù)據(jù),若收到“Fail”則需重新發(fā)送當(dāng)前數(shù)據(jù)幀。每幀數(shù)據(jù)發(fā)送成功后Flash地址增加。當(dāng)Flash讀取到記錄的最終地址時(shí)候表示數(shù)據(jù)發(fā)送完畢。詳見(jiàn)圖8。
3.3 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)
無(wú)線通信模塊負(fù)責(zé)網(wǎng)關(guān)節(jié)點(diǎn)和終端節(jié)點(diǎn)間命令的廣播和數(shù)據(jù)的傳輸,是本系統(tǒng)設(shè)計(jì)的核心內(nèi)容,網(wǎng)絡(luò)結(jié)構(gòu)的配置是體感網(wǎng)的設(shè)計(jì)的關(guān)鍵。
加速度計(jì)相關(guān)文章:加速度計(jì)原理
評(píng)論