您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>無線通信>無線局域網(wǎng)>

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

2011年08月20日 16:02 單片機(jī)與嵌入式系統(tǒng) 作者:肖 星 用戶評(píng)論(0
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ù)包的格式如下:

  

d.jpg

?

  數(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)如下:

  

f.jpg

?

  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所示。

  

h.jpg

?

  

非常好我支持^.^

(5) 100%

不好我反對(duì)

(0) 0%

( 發(fā)表人:葉子 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?