引脚定义:1.GND 2.VCC 3.CE 4.CSN 5.SCK 6.MOSI7.MISO 8.IRQ
具体说明:
3.CE 芯片的模式控制线。在 CSN 为低的情况下,CE 协同NRF24L01 的CONFIG 寄存器共同决定NRF24L01 的状态(参照NRF24L01 的状态机)。
4.CSN 为芯片的片选线 CSN 为低电平芯片工作
5.SCK 为芯片控制的时钟线(SPI时钟)
6.MOSI 为芯片控制数据线(Master output slave input) 主输出 从输入
7.MISO 芯片控制数据线 (Master input slave output) master 硕士 主人 船长 slave 从属奴隶 主输入 从输出
8.IRQ 中断信号引脚。中断时变为低电平,即NRF24L01内部发生中断时IRQ 引脚从高电平变为低电平。引脚会在以下三种情况变低:Tx FIFO 发完并且收到ACK(使能ACK情况下)、Rx FIFO 收到数据、达到最大重发次数。
中断:nRF24L01 的中断引脚(IRQ)为低电平触发,当状态寄存器中TX_DS(数据发送完成中断位)、RX_DR(接收数据中断位) 或MAX_RT(达到最多次重发中断位)为高时触发中断。当MCU 给中断源写‘1’时,中断引脚被禁止。可屏蔽中断可以被IRQ 中断屏蔽。通过设置可屏蔽中断位为高,则中断响应被禁止。默认状态下所有的中断源是被禁止的。
在写寄存器之前一定要进入待机模式或掉电模式
其工作模式又CE和寄存器内部PWR_UP、PRIM_RX共同控制,见下表:
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收发模式、ShockBurstTM收
发模式和直接收发模式三种,收发模式由器件配置字决定,具体配置
将在器件配置部分详细介绍。
NRF24L01 Rx 和Tx 初始化配置说明
Tx 模式初始化过程
1)写Tx 节点的地址 TX_ADDR
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。
详细说明:
1. 写Tx 节点的地址 TX_ADDR SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);
2. 写Rx 节点的地址(主要是为了使能Auto Ack) RX_ADDR_P0 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); 为了应答接收设备,接收通道0地址和发送地址相 同
3. 使能AUTO ACK EN_AA SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
该函数为写寄存器函数有两个参数 第一个参数是写寄存器 指令 EN_AA是自动应 答 功能寄存器地址 该寄存器为8位可读写寄存器0-5为 ENAA_P0-ENAA_P5 数 据通道 自动应答允许 1 为允许 0为不 允许 6-7位 为保留位未用 默认为0 第二个参数即 是 要向寄存器写入的数值 此处为0x01 即 是 允许 接收通道0 自 动应答 其他的都不 能
4.使能PIPE 0 EN_RXADDR
Tx 模式初始化过程
1)写Tx 节点的地址 TX_ADDR
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。
详细说明:
1.写Tx 节点的地址 TX_ADDR 用函数 SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); 函数有三个参数 第一个是寄存器指令参数 给出 写寄存器指令 并且向 TX_ADDR 寄存器写入 TX_ADDR寄存器是 发送地址寄存器 四十位寄存器 装入发送地址的 在增 强型ShockBurstTM 模式下RX_ADDR_P0 与此地址相等。 TX_ADDRESS 是一个要写入的发送地址 通常设置为一个数组 其长度即是地址的长度 长度指定又 TX_ADR_WIDTH 指定 通常为 40 位地址 即 5个 16进制数组成
2. 写Rx 节点的地址(主要是为了使能Auto Ack) RX_ADDR_P0 用函数SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); 该函数有三个参数 第一个WRITE_REG + RX_ADDR_P0 是 写寄存器命令然后就是 频道0接收数据地址 (RX_ADDR_P0)
3.使能AUTO ACK EN_AA 用函数 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
该函数为写寄存器函数有两个参数 第一个参数是写寄存器 指令 EN_AA是自动应 答 功能寄存器地址 该寄存器为8位可读写寄存器0-5为 ENAA_P0-ENAA_P5 数 据通道 自动应答允许 1 为允许 0为不 允许 6-7位 为保留位未用 默认为0 第二个参数即 是 要向寄存器写入的数值 此处为0x01 即 是 允许 接收通道0 自 动应答 其他的都不 能
4.使能PIPE 0 EN_RXADDR 用函数 Write_Reg(WRITE_REG + EN_RXADDR, 0x01); 该函数为写寄存器函数 EN_RXADDR 为接收地址允许寄存器 是8位的可读写寄存器 0-5为 ERX_P0-ERX_P5接收数据通道 允许 1 为允许 0为不允许 6-7位 为保留位未用 默认为0 复 位值 0、1 通道为1 即允许 此处为0x01 即允许通道 0 接收地址 即允许那个通道接收数据
5.配置自动重发次数 SETUP_RETR 用函数 SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a); 主要操 作 自动重发配置寄存器 SETUP_RETR 该寄存器为 8位 寄存器 0—3位 为自动重发数值设置 位 自动重发计数‘0000’-禁止自动重发 ‘0000’-自动重发一次 …… ‘0000’-自动重发15 次 4—7 位 为 自动重发延时 设置位 各位 逻辑关系如下自动重发延时 ‘0000’-等待250+86us ‘0001’- 等待500+86us ‘0010’-等待750+86us …… ‘1111’-等待4000+86us(延时时间是指一包数据发送 完成到下一包数据开始发射之间的时间间隔)
6.选择通信频率 RF_CH 函数Write_Reg(WRITE_REG + RF_CH, 40); RF_CH 工 作频率设置寄存器 8位 0--6位可用 第八位 为保留位 7位值可以设置 128 个 频段 实际是125个频段 从 2400MH到 2525MH 值可以任意设定但是接收发送必 须一致
7.配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP 函数
Write_Reg(WRITE_REG + RF_SETUP, 0x07); RF_SETUP 为发射参数设置寄 存器 8位 5—7位 保留未用 默认为000 0—4位 分别是 0 位为低噪声放大增 益1—2位 为发射功率设置 00--11发 射功率分别是‘00’—-18dBm ‘01’—-12dBm
‘10’—-6dBm ‘11’—0dBm 第3 位 为数据传输速率设置位 ‘0’ – 1Mbps ‘1’—2 Mbps 第四位为 PLL_LOCK 允许,仅应用于测试模式
8.选择接收通道 有效数据宽度 Rx_Pw_P0 函数Write_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); Rx_Pw_P0 为数据通道0 数据宽度设置寄存 器 8位6—7位保留未用 0—5 位 0 为设置不合法 1.为一字节宽度 32 为32字 节有效宽度 相应有 Rx_Pw_P1—Rx_Pw_P5 数据通道宽度寄存器 设置方法类似
9.配置24L01 的基本参数以及切换工作模式 CONFIG 函数 Write_Reg(WRITE_REG + CONFIG, 0x0f); CONFIG 为NRF24L01 的基本参数设置寄存器 8位 第0位 为 接收模式和发射模式选择位 1 为接 收模式 0 为发射模式 。 第1位 为 上电 掉电 模式设置位 1 为上电模式 0为 掉电模式 。第 2位 为CRC校验模式设置 位 ‘0’-8 位CRC 校验‘1’-16 位CRC 校验。 第3位 为 CRC校验使 能位 1 为使能。如果EN_AA 中任意一位为高则EN_CRC 强迫为高。第4位 为可屏蔽中 断 MAX_RT 位 1:IRQ 引脚不显示TX_DS 中断 0:MAX_RT 中断产生时IRQ 引脚电平为低 (此处是该中断介绍 保留) 。第5位 为可屏蔽中断TX_DS位 1:IRQ 引脚不显示TX_DS 中断 0:TX_DS 中断产生时IRQ 引脚电平为低 第 6位 为可屏蔽中断RX_RD 位 1:IRQ 引脚不显示 RX_RD 中断 0:RX_RD 中 断产生时IRQ 引脚电平为低 第7位 保留 未用
至此 接收模式设置 完毕
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。
详细说明:
1.写RX节点地址,用函数SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); 该函数有三个参数 第一个WRITE_REG + RX_ADDR_P0 是 写寄存器命令然后就是 频道0接收数据地址 (RX_ADDR_P0)
数据通道0 接收地址。最大长度:5 个字节(先写低字节,所写字节数量由 TX_ADR_WIDTH 设定)
2.使能AUTO ACK EN_AA 用函数 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);
该函数为写寄存器函数有两个参数 第一个参数是写寄存器 指令 EN_AA是自动应 答 功能寄存器地址 该寄存器为8位可读写寄存器0-5为 ENAA_P0-ENAA_P5 数 据通道 自动应答允许 1 为允许 0为不 允许 6-7位 为保留位未用 默认为0 第二个参数即 是 要向寄存器写入的数值 此处为0x01 即 是 允许 接收通道0 自 动应答 其他的都不 能
3.使能PIPE 0 EN_RXADDR 用函数 Write_Reg(WRITE_REG + EN_RXADDR, 0x01); 该函数为写寄存器函数 EN_RXADDR 为接收地址允许寄存器 是8位的可读写寄存器 0-5为 ERX_P0-ERX_P5接收数据通道 允许 1 为允许 0为不允许 6-7位 为保留位未用 默认为0 复 位值 0、1 通道为1 即允许 此处为0x01 即允许通道 0 接收地址 即允许那个通道接收数据
4.选择通信频率 RF_CH 函数Write_Reg(WRITE_REG + RF_CH, 40); RF_CH 工 作频率设置寄存器 8位 0--6位可用 第八位 为保留位 7位值可以设置 128 个 频段 实际是125个频段 从 2400MH到 2525MH 值可以任意设定但是接收发送必 须一致
5.选择接收通道 有效数据宽度 Rx_Pw_P0 函数Write_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); Rx_Pw_P0 为数据通道0 数据宽度设置寄存 器 8位6—7位保留未用 0—5 位 0 为设置不合法 1.为一字节宽度 32 为32字 节有效宽度 相应有 Rx_Pw_P1—Rx_Pw_P5 数据通道宽度寄存器 设置方法类似
6.配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP 函数
Write_Reg(WRITE_REG + RF_SETUP, 0x07); RF_SETUP 为发射参数设置寄 存器 8位 5—7位 保留未用 默认为000 0—4位 分别是 0 位为低噪声放大增 益1—2位 为发射功率设置 00--11发 射功率分别是‘00’—-18dBm ‘01’—-12dBm
‘10’—-6dBm ‘11’—0dBm 第3 位 为数据传输速率设置位 ‘0’ – 1Mbps ‘1’—2 Mbps 第四位为 PLL_LOCK 允许,仅应用于测试模式
7.配置24L01 的基本参数以及切换工作模式 CONFIG 函数 Write_Reg(WRITE_REG + CONFIG, 0x0f); CONFIG 为NRF24L01 的基本参数设置寄存器 8位 第0位 为 接收模式和发射模式选择位 1 为接 收模式 0 为发射模式 。 第1位 为 上电 掉电 模式设置位 1 为上电模式 0为 掉电模式 。第 2位 为CRC校验模式设置 位 ‘0’-8 位CRC 校验‘1’-16 位CRC 校验。 第3位 为 CRC校验使 能位 1 为使能。如果EN_AA 中任意一位为高则EN_CRC 强迫为高。第4位 为可屏蔽中 断 MAX_RT 位 1:IRQ 引脚不显示TX_DS 中断 0:MAX_RT 中断产生时IRQ 引脚电平为低 (此处是该中断介绍 保留) 。第5位 为可屏蔽中断TX_DS位 1:IRQ 引脚不显示TX_DS 中断 0:TX_DS 中断产生时IRQ 引脚电平为低 第 6位 为可屏蔽中断RX_RD 位 1:IRQ 引脚不显示 RX_RD 中断 0:RX_RD 中 断产生时IRQ 引脚电平为低 第7位 保留 未用
至此 接收模式设置 完毕
其中软件代码参考之前的帖子就可以,有详细的数据发送解析指令。