在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

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

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

            主要接口函數(shù)如下:
            //寫CC2420的命令選通寄存器
            async command uint8_t HPLCC2420.cmd(uint8_t addr)
            //寫寄存器
            async command result_t HPLCC2420.write(uint8_t addr, uint16_t data)
            //CC2420內(nèi)部RAM讀寫接口函數(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);
            //讀寫完成向上調(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模塊文件實現(xiàn)了HPLCC2420Interrupt、HPLCC2420Capture接口,主要完成中斷捕捉功能。CC2420使用SFD、FIFO、FIFOP和CCA四個引腳表示收發(fā)數(shù)據(jù)狀態(tài),當(dāng)引腳電平變化時,觸發(fā)ATmega128L硬件中斷。平臺下,根據(jù)事件驅(qū)動機制,向上調(diào)用HPLCC2420Interrupt(類似HPLCC24240Capture)接口中的事件通告函數(shù) result_t fired (void)進行上層處理。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ǔ)上進一步抽象,形成CC2420初始化、設(shè)備地址設(shè)置、收發(fā)模式設(shè)置、發(fā)送接收消息等復(fù)雜功能,同時以組件接口的形式進行封裝供上層HIL組件調(diào)用。HAL體系結(jié)構(gòu)如圖4所示。HAL組件包括兩個模塊文件CC2420RadioM.nc和CC2420Control.nc,最后由配置文件CC2420RadioC.nc裝配起來。

            CC2420ControlM模塊文件使用SplitControl接口完成CC2420的寄存器初始化、啟動等工作,主要函數(shù)如下:
            command result_t SplitControl.init();//CC2420寄存器初始化
            command result_t SplitControl.start();//開啟1.8 V穩(wěn)壓源供電,將復(fù)位RSTN引腳置為高電平,啟動CC2420晶振
            CC2420ControlM模塊文件還實現(xiàn)了CC2420Control接口,實現(xiàn)對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();//開啟晶振
            async command result_t CC2420Control.enableAutoAck();//自動應(yīng)答幀功能使能
            async command result_t CC2420Control.enableAddrDecode();//地址識別功能使能
            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)平臺TinyOS下CC2420驅(qū)動組件的設(shè)計
            圖4 HAL體系結(jié)構(gòu)

            結(jié)語

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


            上一頁 1 2 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉