使用的是官方数据手册的章节编号,原文截图方便对照,部分翻译(标蓝)、个人理解(标紫),关键信息(标红)。
6.1 Operational Modes操作模式
6.1.1 State diagram状态机图
6.1.2 Power Down Mode关机模式
断电模式,消耗的电流最少。
此模式下,寄存器的数据仍然被保持,SPI功能可用。(任何一种模式,SPI功能都是可用的)
关机模式由CONFIG寄存器的PWR_UP字段控制。
6.1.3 Standby Modes 待机模式
6.1.3.1 Standby-I mode 待机1模式
待机1模式,最小化平均电流且保持快速的开启时间。(比关机模式耗电多,属于在省电和快速进入收发数据之间找到的一个平衡)
CONFIG寄存器的PWR_UP字段为1后,NRF24L01进入待机1模式。(此时CE=0)
当CE=1,NRF24L01会从待机模式1转到激活模式(激活模式指的就是发送/接收模式,待机2模式属于存在但不推荐的状态);
当CE=0,NRF24L01从发送TX/接收RX模式回到待机1模式。(从图中可以看到不包括待机2模式,所以比如想从待机2转到接收,是需要PWR_UP=0断电后重新配置的)
6.1.3.2 Standby-II mode 待机2模式
待机2比待机1消耗更多的电流;
此模式下,寄存器的数据仍然被保持,SPI功能可用。
如果CE保持高且TX FIFO为空,NRF24L01进入待机2模式。(所以如果从待机1模式想进入发送模式,需要TX FIFO不为空,再设置CE=1;且进入发送模式后CE不能一直为高,否则发送完TX FIFO为空会自动进入待机2模式)
如果一个新的包填充到TX FIFO,在130us后进入发送TX模式。
6.1.4 RX mode 接收模式
PWR_UP=1,PRIM_RX=1,CE=1,NRF24L01进入接收模式。(这里默认是从待机1模式进入接收模式)
在接收模式下,NRF24L01从相应的RF频道解析数据给基带协议,检测到有效包(匹配地址和CRC)后,将数据放在RX FIFO中。
如果RX FIFO已满,则丢弃该数据。(切换为接收模式前,先把RX FIFO清空;收到数据后,也要把RX FIFO清空;)
通常,NRF24L01保持接收模式,除非MCU通过SPI接口控制进入待机1或关机模式。
但是,如果使能了Enhanced ShockBurst协议,NRF24L01会自动进入别的模式去执行协议。(比如自动应答,会转为发送模式,去发送ACK包)
在接收模式下,在RF频道检测到大于-64dBm的信号且持续40us,RPD置高。
6.1.5 TX mode 发送模式
PWR_UP=1,PRIM_RX=0,TX FIFO有数据,CE有大于10us的高电平脉冲,NRF24L01进入发送模式。(这里默认是从待机1模式进入发送模式)
NRF24L01保持在TX模式直到当前包发送完。
如果发送完后CE=0,NRF24L01回到待机1模式;
如果CE=1,TX FIFO决定下一个的状态:
TX FIFO非空,NRF24L01保持TX模式继续发送数据包。
TX FIFO空,NRF24L01进入待机2模式。
(根据状态机图中推荐的方式,给CE一个10us高电平脉冲后CE拉低,这样在发送完后NRF24L01会回到待机1模式,不进入待机2模式)
绝对不要让TX模式持续超过4ms。
如果使能了Enhanced ShockBurst协议,NRF24L01不会再TX模式持续超过4ms。
(如果没有使能Enhanced ShockBurst协议,有两种方式避免TX模式持续超过4ms:1是CE给脉冲,2是TX FIFO不要一直给数据)