内部使用-严禁用于商业用途 by aaa1982
NRF24L01 使用文档
基于 c8051f330 单片机
1
内部使用-严禁用于商业用途 by aaa1982
目 录
芯片简介........................................................................................................................3
1 NRF24L01 功能框图 .................................................................................................4
2 NRF24L01 状态机 .....................................................................................................5
3 Tx 与 Rx 的配置过程 ................................................................................................7
3.1 Tx 模式初始化过程 ........................................................................................7
3.2 Rx 模式初始化过程.........................................................................................8
4 控制程序详解.............................................................................................................9
4.1 函数介绍..........................................................................................................9
4.1.1 uchar SPI_RW(uchar byte) .....................................................................9
4.1.2 uchar SPI_RW_Reg (uchar reg, uchar value).......................................10
4.1.3 uchar SPI_Read (uchar reg);.................................................................10
4.1.4 uchar SPI_Read_Buf (uchar reg, uchar *pBuf, uchar bytes);...............11
4.1.5 uchar SPI_Write_Buf (uchar reg, uchar *pBuf, uchar bytes);..............11
4.1.6 void RX_Mode(void)............................................................................12
4.1.7 void TX_Mode(void)............................................................................13
4.2 NRF24L01 相关命令的宏定义 .....................................................................13
4.3 NRF24L01 相关寄存器地址的宏定义 .........................................................14
5 实际通信过程示波器图..........................................................................................16
1)发射节点 CE 与 IRQ 信号.............................................................................17
2)SCK 与 IRQ 信号(发送成功)...................................................................18
3)SCK 与 IRQ 信号(发送不成功)...............................................................19
2
内部使用-严禁用于商业用途 by aaa1982
芯片简介
NRF24L01 是 NORDIC 公司最近生产的一款无线通信通信芯片,采用 FSK 调制,内部
集成 NORDIC 自己的 Enhanced Short Burst 协议。可以实现点对点或是 1 对 6 的无线通信。
无线通信速度可以达到 2M(bps)。NORDIC 公司提供通信模块的 GERBER 文件,可以直
接加工生产。嵌入式工程师或是单片机爱好者只需要为单片机系统预留 5 个 GPIO,1 个中
断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为 MCU 系统构建无线通信
功能。
3
内部使用-严禁用于商业用途 by aaa1982
1 NRF24L01 功能框图
Fig.1 NRF24L01 BLOCK DIAGRAM
NRF24L01 的框图如 Fig.1 所示,从单片机控制的角度来看,我们只需要关注 Fig.1 右面
的六个控制和数据信号,分别为 CSN、SCK、MISO、MOSI、IRQ、CE。
CSN:芯片的片选线,CSN 为低电平芯片工作。
SCK:芯片控制的时钟线(SPI 时钟)
MISO:芯片控制数据线(Master input slave output)
MOSI:芯片控制数据线(Master output slave input)
IRQ:中断信号。无线通信过程中 MCU 主要是通过 IRQ 与 NRF24L01 进行通信。
CE: 芯片的模式控制线。 在 CSN 为低的情况下,CE 协同 NRF24L01 的 CONFIG 寄
存器共同决定 NRF24L01 的状态(参照 NRF24L01 的状态机)。
4
内部使用-严禁用于商业用途 by aaa1982
2 NRF24L01 状态机
NRF24L01 的状态机见 Fig.2 所示,对于 NRF24L01 的固件编程工作主要是参照
NRF24L01 的状态机。主要有以下几个状态
Power Down Mode:掉电模式
Tx Mode:发射模式
Rx Mode:接收模式
Standby-1Mode:待机 1 模式
Standby-2 Mode:待机 2 模式
上面五种模式之间的相互切换方法以及切换所需要的时间参照 Fig.2。
Fig.2 NRF24L01 State Machine
5
内部使用-严禁用于商业用途 by aaa1982
对 24L01 的固件编程的基本思路如下:
1) 置 CSN 为低,使能芯片,配置芯片各个参数。(过程见 3.Tx 与 Rx 的配置过程)
配置参数在 Power Down 状态中完成。
2) 如果是 Tx 模式,填充 Tx FIFO。
3) 配置完成以后,通过 CE 与 CONFIG 中的 PWR_UP 与 PRIM_RX 参数确定 24L01
要切换到的状态。
Tx Mode:PWR_UP=1; PRIM_RX=0; CE=1 (保持超过 10us 就可以);
Rx Mode: PWR_UP=1; PRIM_RX=1; CE=1;
4) IRQ 引脚会在以下三种情况变低:
Tx FIFO 发完并且收到 ACK(使能 ACK 情况下)
Rx FIFO 收到数据
达到最大重发次数
将 IRQ 接到外部中断输入引脚,通过中断程序进行处理。
6
内部使用-严禁用于商业用途 by aaa1982
3 Tx 与 Rx 的配置过程
本节只是叙述了采用 ENHANCED SHORT BURST 通信方式的 Tx 与 Rx 的配置及通信
过程,熟悉了 24L01 以后可以采用别的通信方式。
3.1 Tx 模式初始化过程
初始化步骤
1)写 Tx 节点的地址
2)写 Rx 节点的地址(主要是为了使能 Auto Ack)
3)使能 AUTO ACK
4)使能 PIPE 0
5)配置自动重发次数
6)选择通信频率
7)配置发射参数(低噪放大器增益、发射功率、无线速率)
8 ) 选择通道 0 有效数据宽度
9)配置 24L01 的基本参数以及切换工作模式
Tx 模式初始化过程
1)写 Tx 节点的地址 TX_ADDR
24L01 相关寄存器
TX_ADDR
RX_ADDR_P0
EN_AA
EN_RXADDR
SETUP_RETR
RF_CH
RF_SETUP
Rx_Pw_P0
CONFIG
2)写 Rx 节点的地址(主要是为了使能 Auto Ack)
RX_ADDR_P0
3)使能 AUTO ACK EN_AA
4)使能 PIPE 0 EN_RXADDR
5)配置自动重发次数 SETUP_RETR
6)选择通信频率 RF_CH
7)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP
8 ) 选择通道 0 有效数据宽度 Rx_Pw_P0
9)配置 24L01 的基本参数以及切换工作模式 CONFIG。
7
内部使用-严禁用于商业用途 by aaa1982
3.2 Rx 模式初始化过程
初始化步骤
1)写 Rx 节点的地址
2)使能 AUTO ACK
3)使能 PIPE 0
4)选择通信频率
5) 选择通道 0 有效数据宽度
24L01 相关寄存器
RX_ADDR_P0
EN_AA
EN_RXADDR
RF_CH
Rx_Pw_P0
6)配置发射参数(低噪放大器增益、发射功率、无线速率)
RF_SETUP
7)配置 24L01 的基本参数以及切换工作模式
CONFIG
Rx 模式初始化过程:
初始化步骤 24L01 相关寄存器
1)写 Rx 节点的地址 RX_ADDR_P0
2)使能 AUTO ACK EN_AA
3)使能 PIPE 0 EN_RXADDR
4)选择通信频率 RF_CH
5) 选择通道 0 有效数据宽度 Rx_Pw_P0
6)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP
7)配置 24L01 的基本参数以及切换工作模式 CONFIG。
8