查看: 810|回复: 0

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

[复制链接]

67

主题

100

帖子

570

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
570
发表于 2020-7-23 11:42:29 | 显示全部楼层 |阅读模式
      上回我们已经介绍了SX1208的大数据包通信的内容介绍,这次,我们再来讲解SX1212大数据包通信的相关内容。
       首先,SX1212有三种模式,packet mode、continue mode和buffe rmode。packet和continue mode之前有过一篇
帖子的详解,如果还没看过或者想要了解的小伙伴可以去看看。这次我们重点来讲buffer mode。
       buffer mode其实就是用来应用于大数据包通信的。还记得SX1208的无限长数据包吗,buffer mode的应用和那个
非常类似。首先,该模式下,发射不准从packet mode的发射逻辑,芯片并不会发射前导码同步字等数据,因此
该部分的数据需要用户自己写入FIFO,将前导码和同步字当做payload的一部分。由于是大数据包,数据长度大于
FIFO,不可能一次性填入FIFO,故和SX1208一样,需要边发边填。

      上图为buffer mode下TX的过程,切入TX后,有两种条件决定发射,一是当FIFO非空时发射,即只要FIFO中有任何一个
直接就会发射,二是FIFO阈值发射,当FIFO里的数据字节达到设定的阈值就会发射。当最后一个字节发射玩后,便会产生
TX_done,在发射开始到产生TX_done这个过程就是上面我们提到的向FIFO中不断填充数据的过程,只要保证FIFO非空,
那么发射就不会结束直到FIFO空为止。

      既然发射是边发边填,接收自然是边收边读,FIFO大小同样只有那么大,一旦FIFO填充满,后续溢出的数据都会被丢掉。

       上图为buffer mode下RX的过程,需要注意的是,该模式下的RX是会去识别前导码和同步字的,所以上面我们提到过TX
状态下需要手动写入前导码同步字,否则接收端并不会接收数据。在前导码同步字识别完后,便开始接收数据,当FIFO满后
后续的数据便会溢出丢掉。所以用户需要在FIFO满之前将数据读出,这样后续的数据便能继续存放至FIFO中。
       TX当FIFO全部发射完后会产生TX_done,但RX并不会产生接收完成的标志,如果一直没有退出RX,芯片会继续从空中抓取
噪声来解析数据。因此,这种模式下双方需要约定好数据长度,或者将数据长度放置包头,一遍接收端能知道何时接收完毕。


本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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