NRF52 2.4G Radio 模块

1. 2.4 GHz无线电收发器

   使用2.4G Radio模块,一般是为了使用自定义的协议通讯,相比于BLE等规范协议,可以一定程度上自由的设定通讯间隔、数据包大小、私有的加密等,但也需要自己解决多连接、无线干扰等问题

Radio模块框图
在这里插入图片描述

1. 速率 1Mbps 2Mbps (125K 500Kbps 长距离),   2Mbps: 4us/Byte
2. 半双工, 不能同时发送和接收
3. EasyDMA让射频模块可以直接从RAM读写数据而不需要CPU的参与,但用户需要在开启START任务收发无线数据之前,将内存的地址和长度填入Radio的PACKETPTR寄存器和PCNF1.MAXLEN寄存器中
4. 1个发送通道, 8个接收通道
5. 支持Whitening和CRC校验
6. 支持获取RSSI(接收的数据信号强度指示)
7. 自动低功耗管理

空中包格式
在这里插入图片描述

  • PREAMBLE是前导码,除了在BLE模式2Mbps情况下是2个字节,其他情况通常是用1个字节。当ADDRESS的第一个bit是0时PREAMBLE会被设为0xAA,否则为0x55

  • 空中包里,ADDRESS 和 PAYLOAD部分总是LSB,CRC部分总是MSB,S0,LENTH,S1的大小端受PCN1.ENDIAN寄存器控制。

  • ADDRESS是无线的收发地址,它由BASE和PREFIX两部分组成,只有接收端与发射端的地址匹配,才能成功通信。BASE部分的长度由FCNF1.BALEN控制,内容由BASE0和BASE1两个寄存器控制,PREFIX的内容由PREFIX0和PREFIX1两个寄存器控制,通过这两个部分的排列搭配,可以搭配出8种逻辑地址。用户在配置发送的地址时从这8个逻辑地址中挑选一个,由TXADDRESS寄存器控制,设置接收地址的时候根据需要将这写逻辑地址配置给8个接收通道,由RXADDRESSES寄存器控制,用户可以根据需要打开接收地址通道的个数,可同时打开8个接收通道。

在这里插入图片描述
TXADDRESS寄存器:设置值为0-7,对应选择上图中的一个逻辑地址作为发射地址
RXADDRESSES寄存器:设置值为bit0-bit7,使能对应逻辑地址作为接收地址

  • S0+LENGTH+S1+PAYLOAD+static add-on 是存储在RAM中的数据包,PACKETPTR寄存器指向的RAM空间分布应该也是这样的

  • CI、TERM1和TERM2字段仅存在于BLE远距离模式中,这里忽略

  • S0,LENGTH,S1是可选部分,它们的长度分别由PCNF0.S0LEN,PCNF0.LFLEN ,PCNF0.S1LEN决定,大小端由PCNF1.ENDIAN控制,这里S0 S1都可以设置为0,就不用管它们,LENGTH是4bit的,但也会占用一个Byte的RAM空间,所以PACKETPTR指向的发送或接收RAM对应Byte[0]即为这一包数据包的长度(STATLEN = 0下的情况)

  • 上图中未显示static add-on(其长度在STATLEN中定义,标准BLE数据包中的长度为0字节)。static add-on在payload和CRC之间发送,在需求每包都为固定值,可以设置STATLEN为此固定值,否则设置0,可以让每个数据包实现动态的长度

  • PAYLOAD的最大长度由LENGTH决定,实际的长度由PACKETPTR指向的RAM Byte[0]设置

  • PCNF1.MAXLEN定义了Radio收发数据包最大字节数,限制了PAYLOAD加上static add-on的总长度,可以防止超出EasyDMA定义的RAM范围被读写

  • S0、LENGTH、S1、PAYLOAD的组合长度不能超过258字节

  • CRC是校验字段,CRC可以校验除了PREAMBLE之外的整个数据包,CRC校验的配置通过CRCCNF CRCPOLY CRCINIT寄存器完成

2. Radio工作状态机

状态 具体描述
DISABLE Radio模块没有进行任何操作,功耗最低
TXRU Disable状态下TXEN = 1 进入TXRU,Radio正在启动
TXIDLE 要发送的数据已准备好,Radio准备开始发送
TX Radio正在发送数据包
TXDISABLE Radio正在关闭发射机
RXRU Disable状态下RXEN = 1 进入RXRU,Radio正在启动
RXIDLE Radio已经准备好接收数据
RX Radio处于接收数据状态
RXDISABLE Radio正在关闭接收机

在这里插入图片描述

3. TX 发送状态

发送一包数据
在这里插入图片描述
发送一包数据,使用NRF快捷方式(shortcuts),READY事件后立即START,END事件立即DISABLE,可节省发送时间和程序判断
在这里插入图片描述
连续发送数据,END事件再次START
在这里插入图片描述

4. RX 接收状态

接收一包数据
在这里插入图片描述
接收一包数据,使用快捷方式
在这里插入图片描述
接收多包数据,END事件再次START
在这里插入图片描述

5. 示例代码

TX端初始化

#define RADIO_PACKET0_S1_SIZE                0       // S1 size in bits
#define RADIO_PACKET0_S0_SIZE                0       // S0 size in bits
#define RADIO_PACKET0_PAYLOAD_SIZE           5       //8   // payload size in bits

#define RADIO_PACKET1_BASE_ADDRESS_LENGTH    3       // base address length in bytes
#define RADIO_PACKET1_STATIC_LENGTH          0       // Static length in number of bytes
#define RADIO_PACKET1_MAX_PAYLOAD_LENGTH     32      // Maximum length of packet payload

void 
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值