<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 傳感器網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)TinyOS下CC2420驅(qū)動(dòng)組件的設(shè)計(jì)

          傳感器網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)TinyOS下CC2420驅(qū)動(dòng)組件的設(shè)計(jì)

          作者: 時(shí)間:2013-10-21 來(lái)源:網(wǎng)絡(luò) 收藏

          傳感器網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)TinyOS下CC2420驅(qū)動(dòng)組件的設(shè)計(jì)
          圖3 HPL體系結(jié)構(gòu)

          HPLCC2420FIFOM模塊文件實(shí)現(xiàn)了HPLCC2420FIFO接口,完成了對(duì)發(fā)送、接收數(shù)據(jù)緩存區(qū)的讀寫(xiě)控制工作,主要接口函數(shù)如下:

          //將一串?dāng)?shù)據(jù)寫(xiě)入發(fā)送緩存區(qū)TXFIFO, 完成后告知TXFIFODone()函數(shù)
          async command result_t HPLCC2420FIFO.writeTXFIFO(uint8_t len,uint8_t *msg);
          //讀取接收緩存區(qū)RXFIFO中的數(shù)據(jù),完成后告知RXFIFODone()函數(shù)
          async command result_t HPLCC2420FIFO.readRXFIFO(uint8_t len,uint8_t *msg);

          HPLCC2420M模塊文件實(shí)現(xiàn)了3個(gè)接口:
          ① StdControl接口,完成ATmega128L中與CC2420相連的硬件引腳端口電平設(shè)置及硬件SPI接口相關(guān)寄存器的初始化工作。
          ② HPLCC2420接口,實(shí)現(xiàn)CC2420內(nèi)部寄存器的讀寫(xiě)功能。CC2420有33個(gè)控制/狀態(tài)寄存器、15個(gè)命令選通寄存器和2個(gè)訪問(wèn)FIFO緩存區(qū)的寄存器。
          ③ HPLCC2420RAM接口,實(shí)現(xiàn)對(duì)CC2420內(nèi)部RAM的讀寫(xiě)功能。CC2420的內(nèi)部RAM分為3塊--128字節(jié)的發(fā)送FIFO緩存區(qū)、128字節(jié)的接收FIFO緩存區(qū)以及112字節(jié)的用于保存設(shè)備地址、密鑰等信息的存儲(chǔ)區(qū)。

          主要接口函數(shù)如下:
          //寫(xiě)CC2420的命令選通寄存器
          async command uint8_t HPLCC2420.cmd(uint8_t addr)
          //寫(xiě)寄存器
          async command result_t HPLCC2420.write(uint8_t addr, uint16_t data)
          //CC2420內(nèi)部RAM讀寫(xiě)接口函數(shù)
          async command result_t HPLCC2420RAM.write(uint16_t addr, uint8_t length, uint8_t* buffer);
          async command result_t HPLCC2420RAM.read(uint16_t addr, uint8_t length, uint8_t* buffer);
          //讀寫(xiě)完成向上調(diào)用的事件通知
          async event result_t writeDone(uint16_t addr, uint8_t length, uint8_t* buffer);
          async event result_t readDone(uint16_t addr, uint8_t length, uint8_t* buffer);

          HPLCC2420InterruptM模塊文件實(shí)現(xiàn)了HPLCC2420Interrupt、HPLCC2420Capture接口,主要完成中斷捕捉功能。CC2420使用SFD、FIFO、FIFOP和CCA四個(gè)引腳表示收發(fā)數(shù)據(jù)狀態(tài),當(dāng)引腳電平變化時(shí),觸發(fā)ATmega128L硬件中斷。平臺(tái)下,根據(jù)事件驅(qū)動(dòng)機(jī)制,向上調(diào)用HPLCC2420Interrupt(類(lèi)似HPLCC24240Capture)接口中的事件通告函數(shù) result_t fired (void)進(jìn)行上層處理。HPLCC2420Interrupt接口中使用result_t startWait(bool low_to high)函數(shù)設(shè)置觸發(fā)方式(上升沿還是下降沿),使用result_t disable(void)函數(shù)禁止中斷使能。HPLCC2420InterruptM模塊文件還調(diào)用了HPLTimer1M.nc和TimerC.nc文件中的Timer接口函數(shù),完成相關(guān)的底層中斷處理。

          3.2 HAL組件

          HAL組件使用HPL組件HPLCC2420C提供的源接口,在CC2420所提供的基本功能的基礎(chǔ)上進(jìn)一步抽象,形成CC2420初始化、設(shè)備地址設(shè)置、收發(fā)模式設(shè)置、發(fā)送接收消息等復(fù)雜功能,同時(shí)以組件接口的形式進(jìn)行封裝供上層HIL組件調(diào)用。HAL體系結(jié)構(gòu)如圖4所示。HAL組件包括兩個(gè)模塊文件CC2420RadioM.nc和CC2420Control.nc,最后由配置文件CC2420RadioC.nc裝配起來(lái)。

          CC2420ControlM模塊文件使用SplitControl接口完成CC2420的寄存器初始化、啟動(dòng)等工作,主要函數(shù)如下:
          command result_t SplitControl.init();//CC2420寄存器初始化
          command result_t SplitControl.start();//開(kāi)啟1.8 V穩(wěn)壓源供電,將復(fù)位RSTN引腳置為高電平,啟動(dòng)CC2420晶振
          CC2420ControlM模塊文件還實(shí)現(xiàn)了CC2420Control接口,實(shí)現(xiàn)對(duì)CC2420的一些控制功能:
          command result_t CC2420Control.TunePreset(uint8_t chnl);//通信頻道設(shè)置
          async command result_t CC2420Control.TxMode();//設(shè)為發(fā)送模式
          async command result_t CC2420Control.RxMode();//設(shè)為接收模式
          async command result_t CC2420Control.OscillatorOn();//開(kāi)啟晶振
          async command result_t CC2420Control.enableAutoAck();//自動(dòng)應(yīng)答幀功能使能
          async command result_t CC2420Control.enableAddrDecode();//地址識(shí)別功能使能
          command result_t CC2420Control.setShortAddress(uint16_t addr);//設(shè)置設(shè)備地址
          CC2420RadioM使用BareSendMsg接口發(fā)送消息,使用ReceiveMsg接口接收消息:
          command result_t BareSendMsg.Send(TOS_MsgPtr msg);//發(fā)送消息
          event result_t BareSendMsg.sendDone(TOS_MsgPtr msg,result_t success);//發(fā)送完成
          event TOS_MsgPtr ReceiveMsg.receive(TOS_MsgPtr m);//接收消息事件通告
          傳感器網(wǎng)絡(luò)操作系統(tǒng)平臺(tái)TinyOS下CC2420驅(qū)動(dòng)組件的設(shè)計(jì)
          圖4 HAL體系結(jié)構(gòu)

          結(jié)語(yǔ)

          首先以操作系統(tǒng)為軟件平臺(tái),根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)的硬件模塊功能及其接口電路的特點(diǎn),在硬件抽象體系結(jié)構(gòu)的原則下,對(duì)CC2420 平臺(tái)下的驅(qū)動(dòng)組件設(shè)計(jì)作了深入的研究。實(shí)驗(yàn)表明,節(jié)點(diǎn)在滿足指標(biāo)要求的同時(shí)運(yùn)行穩(wěn)定可靠。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();