这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 无线模块NRF24L01资料分享及调试心得

共4条 1/1 1 跳转至

无线模块NRF24L01资料分享及调试心得

助工
2024-09-20 16:33:31     打赏

引脚定义: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_UPPRIM_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位 保留 未用

至此 接收模式设置  完毕

其中软件代码参考之前的帖子就可以,有详细的数据发送解析指令。





关键词: NRF24L01     无线模块    

专家
2024-09-22 17:10:09     打赏
2楼

谢谢分享


院士
2024-09-22 18:31:15     打赏
3楼

谢谢分享这么详细的应用资料。


专家
2024-09-23 19:54:27     打赏
4楼

谢谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]