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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ANT無(wú)線收發(fā)器nRF24AP1及其應(yīng)用

          ANT無(wú)線收發(fā)器nRF24AP1及其應(yīng)用

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

          根據(jù)硬件電路設(shè)計(jì),硬件驅(qū)動(dòng)實(shí)現(xiàn)系統(tǒng)各模塊的初始化以及MCU與之間的通信程序。系統(tǒng)在初始化時(shí)除了要注意根據(jù)硬件連接設(shè)置ATmega16L各通用I/O端口為所需的狀態(tài),還要根據(jù)所選的工作模式,利用ATmega16L的I/O端口設(shè)置的控制端口狀態(tài)。MCU與nRF24AP1之間采用異步串口方式進(jìn)行通信,ATmega16L片內(nèi)集成有USART,簡(jiǎn)單設(shè)置后即可在異步模式下工作。異步數(shù)據(jù)以1個(gè)起始比特、8個(gè)數(shù)據(jù)比特、1個(gè)停止比特以及無(wú)奇偶校驗(yàn)的方式進(jìn)行傳輸。

          串口接收與發(fā)送均采用中斷方式,同時(shí)為發(fā)送和接收分別設(shè)置一個(gè)長(zhǎng)度為16字節(jié)的緩沖區(qū)(buffer),緩沖區(qū)設(shè)有單獨(dú)讀/寫指針,并與緩沖計(jì)數(shù)器相關(guān)聯(lián)。串口發(fā)送的數(shù)據(jù)首先通過(guò)調(diào)用函數(shù)putchar()寫入tx_buffer,再由串口發(fā)出。接收數(shù)據(jù)時(shí),先將接收到的數(shù)據(jù)寫入rx_buffer,再根據(jù)應(yīng)用需要調(diào)用函數(shù)getchar()從緩沖區(qū)中取得相應(yīng)的數(shù)據(jù),AVR串口接收中斷服務(wù)程序及函數(shù)getchar()的流程圖如圖4所示。

          ANT無(wú)線收發(fā)器nRF24AP1及其應(yīng)用

          6結(jié)束語(yǔ)

          nRF24AP1內(nèi)嵌協(xié)議,該協(xié)議結(jié)構(gòu)簡(jiǎn)單,使用方便,加快開發(fā)進(jìn)程,同時(shí)內(nèi)嵌協(xié)議還減少了用戶開發(fā)成本。利用技術(shù)可使系統(tǒng)具有待機(jī)和休眠兩種狀態(tài),節(jié)省電能,而且ANT的時(shí)延短,反應(yīng)快,系統(tǒng)根據(jù)需要能快速蘇醒并在最短時(shí)間內(nèi)完成傳輸,并快速回到休眠模式。而競(jìng)爭(zhēng)者的"低功耗"技術(shù)在類似應(yīng)用中采用相同的工作模式僅僅可以支持?jǐn)?shù)月或更短的時(shí)間。因此,nRF24AP1功耗超低,適用于傳感器網(wǎng)絡(luò)、遠(yuǎn)程控制系統(tǒng)、智能家居等應(yīng)用的數(shù)據(jù)采集、分析處理,具有廣闊的市場(chǎng)前景。


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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(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); })();