查看: 933|回复: 0

[技术交流] SX1208 大数据包通信详解

[复制链接]

67

主题

100

帖子

570

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
570
发表于 2020-6-30 19:49:58 | 显示全部楼层 |阅读模式
      SX1208的FIFO大小为66字节,理论上一包数据最大长度是FIFO的大小,但是这两款芯片都有其传输大数据包的方式。
首先我们来讲一下SX1208的大数据包通信发送,我们先来看一下SX1208芯片手册上对于数据包结构的描述。

      从数据包结构看出,数据长度长达255个字节,但是实际FIFO大小只有66字节,显然不可能简单的一次性填充FIFO来
实现255字节的传输。其方法是在发射的过程中,去不断的填充FIFO来实现发射大于FIFO大小的数据包。在发射过程中,
每发射一个字节,FIFO则空出一个字节,故只要在FIFO空前去填充FIFO那边可以实现大于FIFO的数据。需要注意的是,
该方法依旧是packet mode下,数据包规则依旧遵循上图所示,因此需要设定好数据长度字节,已经填入FIFO的数据
加上后续在发射过程中填入FIFO的数据和要等于设定好的数据长度字节,这样才能正常产生发射完成中断。
       那么便会有另一个疑问,如果我需要发射大于255字节怎么办,除了正常的拆包外,还有其他方式吗?答案是当然有。
当PacketFormat和PayloadLength都被设置0时,则启用无限长度数据模式,该模式下只要在FIFO清空之前一直不断地
填入数据,便会一直发射数据,这个模式下不会有数据字节长度的限制。但需要注意的是,该模式下需要手动向FIFO
中填入前导码、同步字、地址(可选)和payload,模块在该模式下不会自动生成前导码同步字和地址,故再发射payload
前需要发射这些信息,就需要用户手动写入发射,但是接收端只要寄存器配置正确,能依旧自动解析过滤前导码、同步字
和地址,并将其剥离出来不会放进FIFO中。而对于接受端来讲需要手动判断什么时候停止接收,这就需要和发射端越好,
比如将数据长度放在payload的首字节,这个长度字节是双方约定的,在芯片寄存器端是不会生效的。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表