久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4679|回復: 0
打印 上一主題 下一主題
收起左側

NRF24L01 使用小結/自動應答/通道地址

[復制鏈接]
跳轉到指定樓層
樓主
ID:91350 發表于 2015-10-29 19:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
nrf24L01被設置為接收模式后,可通過6個不同的數據通道(data pipe)接收數據。
每個數據通道都有一個唯一的地址但是各數據通道的頻率是相同的。這意味著可以有6個被配置成發送狀態的nRF24L01可以和一個配置成接收狀態的nRF24L01通信,并且接收方可以區分(通過判斷狀態寄存器的1-3位即可達到區分的目的)。
數據通道0有一個唯一的40bit的可設置的地址。其余的通道1到通道5則地址前32位相同,而后8位不同。所有的數據通道都可以實現EnhancedShockBurst模式。
在發送端,數據通道0被用來接收確認信息,因此發送端的數據通道0的地址必須等于發送地址,這樣才能收到應答信息。
當一個24L01發送結束后,它會打開接收器并等待確認。如果沒有收到確認,則重發,直到收到確認。當重發超過一定次數則發出中斷并改變狀態寄存器。重發次數的限制在SETUP_RETR_ARC寄存器中設置。
無論何時收到確認,都會認為上一個數據包發送成功,這個數據包將被從發送緩沖區清除,并且把TX_DS IRQ置為高。
每次開始spi寫,讀回來的都是狀態字。

增強型ShockBurst包格式
前置域1byte
地址域3-5byte
包控制域9bit
載荷0-32字節
CRC1-2字節
地址域是接收機地址
包控制域
載荷長度6bit
Pid2bit
NO_ACK1bit
載荷長度:6bit說明最多32字節
Pid:用于包編號,用于確定是重發包還是新包
NO_ACK:用于表示是否自動應答,如為1則表示無需自動應答
自動應答的延時和重發次數是可編程的。

24L01的工作模式和寄存器及IO口的關系如下
CE引腳的作用
一個ESB(Enhanced ShockBurst)周期,發送一個字節連帶收到ACK大約339us
從powerdown狀態需要先進入standyby狀態,該狀態轉換需要1.5ms延遲,從standyby狀態進入rx/tx狀態,需要130us
置高CE維持最少10us,啟動Enhanced ShockBurst發送。

Enhanced ShockBurst™模式下發送數據流程
1.配置config寄存器,將PRIM_RX置為0,表示發送模式
2. 當需要發送數據時,首先需要配置地址TX_ADDR,這個地址應該是接收端地址(即應該是接收端6個datapipe地址中的一個即可保證對方收到)。如果要使用自動應答,因為應答消息由發送端的datapipe0接收,所以發送的datapipe0的地址應等于TX_ADDR(若是和上一次發送是相同地址,則可不用重寫地址)。
3.配置數據負載長度TX_PLD,將需要發送的數據送入nrf24L01,通過SPI連續寫入數據載荷時,nrf24L01將自動對字節數計數。(數據載荷必須在cs為低的時候連續寫入)
4.將CE置高并維持最少10us,這個脈沖將啟動ShockBurst發送
5.NRF24L01:
    a)打開射頻
    b)啟動晶振
    c)數據打包
    d)發送數據
6.如果啟動了自動應答(且重傳次數未達到最大值),NRF24L01將自動轉入接收狀態。
  1:若在規定時間內收到了應答包,則這是一次成功的發送,TXFIFO中的數據被清除,同時置高status寄存器中的TX_DS位。
2:如果在規定時間內未收到應答包則自動重傳(當啟用自動重傳時,由SETUP_RETR寄存器中的ARC位指定重傳次數)。
  3:當重傳次數到達最大值依然沒有收到應答,則status寄存器中的MAX_RT被置高,TXFIFO緩沖區中的數據并不被移除。
MAX_RT或TX_DS被置高都會在IRQ引腳上引起中斷(低電平有效,重寫status寄存器中的對應位可清除)。在到達最大重傳次數并引發中斷后,在沒有清除MAX_RT之前,任何數據都不能發送。每次發生MAX_RT中斷,PLOS_CNT計數器都會加1,用于統計丟包數。
7.CE置低以后,設備進入STANDBY_I狀態。否則TXFIFO緩沖區中的下一個數據載荷將被發送。如果數據緩沖區空,而CE仍然為高,設備將進入STANDBY-II模式。
8.如果設備處于STANDBY-II模式,當CE置低后,設備將進入STANDBY-I模式。
(STANDBY模式可減少電流的消耗,在該模式下,SPI通信仍然可以完成)

Enhanced ShockBurst™模式下接收數據流程
1.設置config寄存器中的PRIM_RX為1,且置CE為高
2.130us之后,NRF24L01開始監視射頻信號
3. 當合法的包被接收到(地址匹配),數據被存儲到RX-FIFO緩沖區中,status寄存器中的RX_DR被置高,IRQ引腳同時發出中斷信號(如果未屏蔽該信號)。Status寄存器中的RX_P_NO指示這個應該接收該數據的DATAPIPE號。
4.如果自動應答啟用的話,一個應答信號將被發出
5.MCU將CE置為低將進入STANDBY-I模式
6.MCU可通過SPI讀出接收到的數據

另外:關于24L01組網想說明幾點應注意的地方:
(1)注意地址的分配
文檔中明確說明只有通道0具有5個字節的可配置地址,其他的5個節點都只有1字節可自由配置地址,
比如可以在接收節點這樣配置:uint const RXADR0[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};   //接收地址
uint const RXADR1[RX_ADR_WIDTH]={0xc2,0xc2,0xc2,0xc2,0xc1};     //通道1地址
uint const RXADR2[1]={0xc2};         //通道2地址
uint const RXADR3[1]={0xc3};         //通道3地址
uint const RXADR4[1]={0xc4};         //通道4地址
uint const RXADR5[1]={0xc5};         //通道5地址
然后將各發送節點地址與接收端相應通道地址設置相同即可
(2)接收節點對各發送節點進行區分
這個就是判斷狀態寄存器的1-3位即可達到區分的目的


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天综合日日夜夜 | 99国产精品视频免费观看一公开 | 国产精品a一区二区三区网址 | 国产精品久久久久久久久免费桃花 | 观看av| 午夜精品久久久久久久99黑人 | 日韩精品一区二区三区第95 | 久草日韩 | 亚洲精品一区国语对白 | 亚洲日本免费 | 99国内精品久久久久久久 | 一区二区三区在线看 | 亚洲天天干 | 亚洲精品乱码久久久久v最新版 | 久久另类| 亚洲精品乱 | 91av在线免费看 | 午夜影视免费片在线观看 | 精品亚洲一区二区三区四区五区 | 中文字幕国产精品 | 美女爽到呻吟久久久久 | 国外成人在线视频 | 美女视频h| 亚洲日本免费 | 亚洲一区视频在线 | 久草视频2 | 精品国产18久久久久久二百 | 国产欧美在线 | 久久久高清 | 日韩中文在线视频 | 亚洲欧美国产精品一区二区 | 五月天国产视频 | 96国产精品久久久久aⅴ四区 | 性一交一乱一伦视频免费观看 | 欧美一级毛片免费观看 | av国产精品 | 欧美在线一区二区视频 | 欧美一区二区免费 | 国产精品片aa在线观看 | 九九热在线免费视频 | 久久亚洲精品国产精品紫薇 |