|
背景
FSK调制数据收发信号时需要从接收到的模拟数据信号中判断数据是0还是1,但过长的连续0或1位流会造成问题。原因是在接收到的模拟数据信号中并不存在象直流信号中那样的参考点,所以必须依靠接收到的最后几个传输信号进行校正。连续的0或1的长序列位流串都可能导致校正失败。因此需要采用数据白化技术对信号进行扰码处理,以大大降低出现长序列0或1位流串的可能性。说的白话点,数据白化就是一种硬件加密编码,把0x000000000000000000000000000000000000这种数据变成不是连续0的数据发哦出去,接收端收到这个连续0的数据再解码回原始的全是0的数据。白化就是一种硬件加密编码,发的时候把原来的000000变成非000000的数据发出去,接收方收到这个非000000的数据再把它还原成0000000放到bubff里,等待使用者去读取。
说到这里顺便提一下无线数据为什么会有前导码,前导码就是BIT101010101010这样的BIT1和BIT0交错的数据,其实就是在给接收端发送一个时钟参考信号。
过程
一、现象
某客户使用2X717N10模组时发送比较常规的数据包时接收都时正常的。
但是当发送的数据如下图红框内的这钟连续多个0x00的数据时接收到的数据包就时错误的。
这中情况当发送如下图红框中这中连续多个0xFF时也会出现。
二、处理
2X717N20解决这钟异常的一种方法就是打开模组的硬件数据白化功能。
该功能在0x37寄存器RegPacketConfig1的BIT6-5的DcFree中,只要把DcFree的值写入BIT:10即可
如下图所示
对应的软件代码修改如下图这里即可:
三、结果
按照打开数据白化功能后在发送连续多个字节全是0x00或者0xFF的数据包再进行测试,收到的数据包就都正常了。
结论
1、数据白化可以解决负载中连续多个字节都是0x00或者0xFF时,接收到的数据容易出错的问题。
2、2X717N10类似的SX1208芯片的模组,数据白化功能在0x37寄存器中配置是否使能。
3、硬件数据白化用起来比较方便,但是不觉得麻烦的话,模组使用者,自己在收发过程中自己做个软件数据白化的编码和解码算法加进去也能和硬件数据白化起到同样的效果。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|