nrf52 ESB通信协议底层探讨

nrf52 ESB通信协议底层分析

此文主要探讨nrf52832 2.4G RADIO数据传输过程,以及esb协议的实现。
以下讨论可能有理解偏差,同时本着共同学习共同进步的想法,欢迎大家指出并纠正。qq::2013462220

RADIO 数据包配置

无线电传输数据包的字段:前导码-地址-数据单元-crc。数据包长度不能超过258字节。
广播包构造
PREAMBLE:前导码或者说帧头,一个字节长度(除了2M/s 蓝牙模式),前导码自动配置的,用户不用设置。
ADDRESS:广播地址由基地址(base)+前缀地址(prefix )两部分组成。基地址长度:2-4字节,其长度可以通过寄存器PCNF1的BALEN位配置。
前导码+地址
数据单元: 由S0,LENGTH,S1,PAYLOAD组成,这些字段可以通过寄存器配置用用户自定义数据发送方式。(1)通过PCF1寄存器ENDIAN位小端大端存储,(2)通过PCF0寄存器设置S0,S1,LENGTH字节长度,当字节长度配置成0字节的时候,S0,S1,LENGTH 字段在内存中不申请内存,相当于不使用,这时只有PAYLOAD字段。
CRC: 校验码,通过CRCCNF寄存器设置其字节数以及生成方式。

ESB向导

这里不做过多的探讨,因为网上资料不少,写的也不错。这里我们主要探讨一下esb协议与radio之间的协议驱动方式。
(1)实现一个接收端多个发送端同时通信过程
esb网络拓扑
支持星状网络拓扑实现一拖多的双向链路是nrf52的一个特点,nrf52一个接收端能最多支持8个发送端。
8个逻辑通道(pipe)拥有单独特定的传输物理地址,所以保证了数据不会错乱。8个逻辑地址是如何和物理地址对应呢,如下图逻辑地址的定义,第一章我们说了物理地址由base+prefix组成,所以通道0的地址是BASE0+prefix[0],其他的地址是BASE1+prefix[1]~[7]。然后发送端发送自己逻辑地址,接收端接收判断收到数据包逻辑通道。

逻辑地址定义
(2)数据发送最大字节数252,第一章说过包总长度最大258字节,前导码和地址占6字节。
(3)占用资源:
Radio (NRF_RADIO)
Timer: NRF_TIMER2 //这里用到了发送数据的时候等待应答以及延时重发过程(具体流程下一章写)
PPI channels 10, 11, 12, and 13 //与NRF_TIMER2联合用到发送数据的时候等待应答以及延时重发
Software interrupt 0

(4)数据包识别与鉴定
tx发送数据包的时候通过crc和pid进行验证。这里说一下数据包前面的识别码。
动态数据长度发送协议:用户的数据打包过程中在底层是从m_tx_payload_buffer[2]开始的,m_tx_payload_buffer[0]用来存储字节长度,m_tx_payload_buffer[1]后两位用来存pid和应答标识,pid用来区分包是否为重发的包,如果不是重传的包存入RX缓存,如果是重发的包丢掉。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值