- CE: 模块控制线,CSN为低时,CE协同CONFIG寄存器共同决定NRF24L01状态
- CSN: SPI片选线
- SCK: SPI时钟线
- MOSI:SPI数据线(主机输出从机输入)
- MISO:SPI数据线(主机输入从机输出)
- IRQ: 中断信号线。中断时变为低电平,在以下三种情况变低:Tx FIFO发完并且收到ACK(使能ACK情况下)、Rx FIFO收到数据、达到最大重发次数
空闲状态SCK为0,CPOL=0;数据在时钟第一个跳变沿采集,CPHA=0;
- Cn:SPI命令位
- Sn:STATUS寄存器位
- Dn:数据位(MSB,多字节传输时,低字节在前)
3、工作模式
NRF24L01工作模式,由CE和CONFIG寄存器(0x00)的PWR_UP(第1位)和PRIM_RX(第0位)共同控制:
NRF24L01工作模式 | PWR_UP位状态 | PRIM_RX位状态 | CE引脚电平 | FIFO寄存器状态 |
---|---|---|---|---|
接收模式 | 1 | 1 | 1 | - |
发送模式 | 1 | 0 | 1 | 数据在TX FIFO寄存器中 |
发送模式 | 1 | 0 | 1 ----> 0 | 停留在发送模式,直至发送完 |
待机模式II | 1 | 0 | 1 | TX FIFO为空 |
待机模式I | 1 | - | 0 | 无数据传输 |
掉电模式 | 0 | - | - | - |
- Enhanced ShockBurstTM收发模式
在 接收端,确认收到数据后记录地址,并以此地址为目标地址发送应答信号。在 发送端,通道0被用作接收应答信号,故 通道0的接收地址与发送地址端地址相等,以确保接收到正确应答信号。
Enhanced ShockBurstTM发送流程:
A. 把地址和要发送的数据按时序送入NRF24L01;
B. 配置CONFIG寄存器,使之进入发送模式;
C. MCU把CE置高(至少10us),激发Enhanced ShockBurstTM发射;
D. Enhanced ShockBurstTM发射:a)给射频前端供电;
b)射频数据打包(加字头、CRC校验码);
c)高速发射数据包;
d)发射完成,NRF24L01进入空闲状态
Enhanced ShockBurstTM接收流程:
A. 配置接收地址和要接收的数据包大小;
B. 配置CONFIG寄存器,使之进入接收模式,把CE置高;
C. 130us后,NRF24L01进入监视状态,等待数据包的到来;
D. 当接收到正确的数据包(正确的地址和CRC校验码),NRF24L01自动移去字头、地址和CRC校验位
E. NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起MCU中断)通知MCU;
F. MCU把数据从FIFO读出(0x61指令);
G. 所有数据读取完毕后,可清除STATUS寄存器;NRF24L01可以进入四中主要的模式之一。
4、SPI指令
指令名称 | 指令格式 | 操作 |
---|---|---|
R_REGISTER | 000A AAAA | 读寄存器。AAAAA为要读取的寄存器地址 |
W_REGISTER | 001A AAAA | 写寄存器。AAAAA为要写入的寄存器地址 |
R__RX_PAYLOAD | 0110 0001 | 读 RX 有效数据,1-32字节。 读操作从字节0开始,当读RX有效数 据完成后,FIFO寄存器中的使有效数据将被清除。接收模式下用。 |
W_TX_PAYLOAD | 1010 0000 | 写TX有效数据,1-32字节。写操作从0字节开始,发送模式下用。 |
FLUSH_TX | 1110 0001 | 清除TX FIFO寄存器。发送模式下用 |
FLUSH_RX | 1110 0010 | 清除RX FIFO寄存器。接收模式下用 |