SI4438系列不同于之前的SI4432,在很多地方都发生了改变。
主要的寄存器配置都是在官方的WDS软件中可以进行配置,基本满足大部分应用。碰到一些复杂的应用,就必须手动对具体寄存器进行配置,具体寄存器配置可以参考官方的API文档。
该芯片分为包模式和直通模式,包模式就是芯片进行打包,解包操作,在收到有效数据的时候会以中断的形式通知MCU。这些包是按照一定格式进行打包的,首先是前导码,一般都是按0101或者1010,大于5bytes。前导码有两个用处,一个是方便芯片检测识别,二是用于频率校正。因为发送和接收的频率并总是一致的,这时可以通过前导码进行校正。
然后是同步字,加上同步字可以使得数据的有效性进一步提高。有好多遥控器厂商将同步字作为设备的ID,使得收发一一对应。一般这些一一对应的设备的通常做法是在被控制设备上点的时候,遥控器和被控制设备需要进行一次对码。被控制设备将ID传给遥控器,当然此时的同步字是预先厂商规定好的,是固定的。对过一次码之后,只要不重新对码,这个遥控器就只能控制对应ID的被控制设备。同步字最多4bytes。
之后是数据,在WDS设置数据的时候,可以选择固定长度和非固定长度,固定长度就可以省去数据包前面的一个字节的长度值。非固定长度就必须要有长度值,可以通过选项将长度放入FIFO或者不放入。
在包模式下接收、发送数据的时候,在传递传输的时候要注意,如果预计的接收、发送长度比实际的要短,那么数据多出来的部分就会被截去。
直通模式就是最原始的高低电平输出,这个模式主要用于和其它不同厂家的芯片进行通信的时候。不过它需要MCU处理打包,解包任务。就我实际调试看来,虽然WDS中nIRQ和SDO脚可以选择发送数据输入,但是实际调试起来,我发现这两个脚是无效的。发送数据输入的脚必须是GPIO那4个脚才可以。
另外不知道是什么缘故,当OOK调到5k以上后,接收输出的芯片就很乱。在没有信号的时候也是上下上下的连续的。FSK在直通模式下接收的话就完全都是上下电平连续的,只有在收到FSK信号的时候,电平才会表现出接收到信号的波形,这让解析FSK变得十分麻烦。尤其是在不知道数据什么时候会过来的情况下。
就目前来看,大部分433传感器都是采用OOK的调制方式,FSK是少数。而且传感器厂商基本上采用的都是430系列单片机以达到低功耗的目的。
原文地址:http://www.cnblogs.com/shouchengcheng/p/3831761.html