NRF24L01 无线通信(一、理论篇)

一、NRF24L01 简介

NRF24L01 是一款 2.4GHz 的无线收发芯片,工作在 2.4~2.5GHz 世界通用 ISM 频段的单片无线收发器芯片。特点:

1.1 工作频段

频率范围:2.400 GHz ~ 2.525 GHz(ISM 免授权频段)
频率通道:共 125 个通道,每个通道间隔 1 MHz

频率(MHz) = 2400 + Channel
例如:
    通道 0 → 2.400 GHz
    通道 1 → 2.401 GHz
    通道 76 → 2.476 GHz(最常用的默认通道)
    …
    通道 124 → 2.524 GHz

寄存器章节 → “RF_CH – RF Channel”,Reset value: 0x4C

地址(Hex) 寄存器名 位域 复位值 类型 描述
0x05 RF_CH - - - 射频信道
保留位 7 0 RW 仅允许写入 “0”
RF_CH 6:0 0000010 RW 设置 nRF24L01 + 工作的射频信道频率

RF_CH寄存器的bit6~bit0(即RF_CH[6:0])用于配置nRF24L01+的工作频率频道,寄存器默认值为0x4C(十进制76),对应工作频率2.476 GHz。

相关参数可参考官方手册:nRF24L01P_Product_Specification_v1_0.pdf

1.2 数据速率

nRF24L01 在空中无线传输数据的速度,就像网速一样,决定了一秒钟最多发多少位(bit)传输一个包需要多少时间、传输距离和抗干扰能力

速率越低,每一位的数据在空中“停留时间越长”,接收端更容易分辨出来。

nRF24L01 支持三种空中数据速率(RF 数据速率):

250 kbps(传输速率最慢、用于远距离通信或更强的抗干扰能力)
1 Mbps(默认、稳定性最好)
2 Mbps (传输速率最快,但距离最短、对干扰敏感)

注意与UART 波特率区分开来,nRF24L01 不支持任意速率,它不是串口模块

提示:速率越高,通信距离可能越短

  • 250 kbps 模式下,通信距离最长且抗干扰能力最好
  • 2 Mbps 模式下,数据传输最快,但对障碍物和干扰敏感
//只能选这三种无线速率,没有第四种。
radio.setDataRate(RF24_250KBPS);
// 或
radio.setDataRate(RF24_1MBPS);
// 或
radio.setDataRate(RF24_2MBPS);

1.3 发射功率

nRF24L01 提供四档可调发射功率:

0 dBm(最大功率)
-6 dBm
-12 dBm
-18 dBm(最低功率,最省电)

功率越大,通信距离越远,但耗电也越高。

// 设置发射功率
  // RF24_PA_MIN        = -18 dBm
  // RF24_PA_LOW        = -12 dBm
  // RF24_PA_HIGH       = -6 dBm
  // RF24_PA_MAX        = 0 dBm
  radio.setPALevel(RF24_PA_MAX);   // 设置为 0 dBm 最大功率

二、nRF24L01+ 的基本通信概念

频段/通道(Frequency Channel)

(类比对讲机频率,比如 462.5625 MHz)

  • nRF24L01+ 工作在 2.4 GHz ISM 频段

  • 可选择 0~125 的 信道编号,每个信道对应不同的中心频率:

    频率(MHz) = 2400 + Channel
    // RF24 库官方示例
    radio.setChannel(76);     // RF 通道
    //76 → 2476MHz(不与 WiFi 直冲)
    //2476MHz经验值,避免干扰、通信稳定性更好
    //不手动设置,RF24 库会使用芯片默认值:
    //通道 = 2 (2.402GHz)在 WiFi 环境里可能容易受到干扰。
  • 作用:决定无线信号在空中的“频道”,不同频道之间相互干扰小。

  • 注意:不同频道的设备 不能直接通信

地址(Address) ↔ 对讲机的呼号或小组码( CTCSS/DCS)

  • 每个收发器都有一个 接收地址 RX_ADDR(发射器用 TX_ADDR)

  • 地址长度 3~5 字节,可区分多个节点

  • 作用:同一频道内,收发器通过地址区分谁能接收这条数据

  • 地址和频道是 互相独立的,即:

    频道决定频率,地址决定接收目标

③ 地址(Address)和 6 个管道接收数据管道(RX Data Pipe)

  • nRF24L01+ 有 6 个接收管道(PIPE0 ~ PIPE5)
  • 每个管道可以配置一个不同的 地址
  • PIPE0 特殊:
    • 通常用于自动应答(ACK)
    • 可以绑定发射器的 TX_ADDR,实现可靠通信
  • PIPE1~PIPE5 可以配置不同地址
  • 所以理论上,一个接收器最多可以同时监听 6 个不同地址 的发射器数据

每个管道的特点:

数据管道 地址宽度可配置 主要用途 是否支持 Auto ACK
Pipe 0 可单独配置 主要用于接收 + 发送 ACK(默认开启自动应答)
Pipe 1 可单独配置 主要用于接收 + 发送 ACK
Pipe 2~5 只用最低 1 字节可单独配置 主要用于接收(共用高 4 字节地址)
Pipe 0~5 所有 最多可以同时监听 6 个不同的地址

image-20251125235948310

注意:

所有发射器必须 **在同一 Channel**

每个发射器必须有 **唯一地址** 对应接收器的管道

nRF24L01+ **一次只能接收一个数据包**,但硬件会快速轮询各个管道

如果多个发射器几乎同时发送,可能出现冲突,需要软件处理重发机制

总结

特性 频道(Channel) 地址(Address)
定义 RF 频率 收发器的标识
范围 0~125 3~5 字节
作用 决定信号空中频率 决定哪个设备接收
是否共享 不同频道互相独立 同频道内地址区分设备
多设备通信 必须相同频道才能互相通信 可设置不同地址实现多目标通信

三、几种通信模式

①多接收器模式

假设有 一个发射器 + 多个接收器

  • 单发射器广播给多个接收器
    • 发射器设置一个 TX_ADDR
    • 每个接收器设置 相同的 RX_ADDR
    • 所有接收器在 相同频道
    • 优点:简单广播
    • 缺点:没有确认机制,每个接收器独立接收,无法保证所有接收器都收到
  • 单发射器定向发给多个接收器
    • 发射器根据目标接收器切换 TX_ADDR
    • 每个接收器有自己 RX_ADDR
    • 可以利用 自动应答/ACK 来保证可靠传输
    • 优点:可靠性高
    • 缺点:需要发射器管理不同目标的地址

②多发射器 + 单接收器特点

接收器可以启用 6 个接收管道(PIPE0~PIPE5)

  • 每个管道可以有不同的地址
  • 接收器只需一个频道就能接收来自多个发射器的数据

优点:单接收器可以监听多个发射器

注意:

  • 所有发射器必须 同一频道
  • 地址必须不同,否则接收器无法区分