SI4463 发送与接收不同步的问题

更新时间:2024-05-18 00:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SI4463 发送与接收不同步的问题

SI4463配置为使用变长度包传送模式,主机发送数据,从机接收数据,然后从机回传数据至主机。

发现,主机数据发送完毕后,从机并不是立即接收到,而是经过一个延迟(该延迟不固定,与包长度有关)。在此,将主机和从机的SI4463上的NIRQ信号接至示波器观察(使能包传送完毕和接收完毕中断)。

这里,通信前导字为8个字节,同步字为2个字节,包长度位为1个字节,包数据为8个字节,无CRC。数据串行速率为1kbps,主机理论上发送完毕需时间(8+2+1+8)*8/1k=0.152s,实际测试为160ms。而示波器显示,从机经过0.12s后,NIRQ才变低。

读取RX FIFO的状态,在从机接收完毕后,RX FIFO中的个数理论上应该是(1个字节的包长度+8个字节的数据=9),而在从机NIRQ变低后,读取的RX FIFO个数为0x18,即24个,多读取了15个,理论上多耗时15*8/1k=0.12s,与实测相吻合。

因为读取时是按包读取,即RX FIFO第一个值为8(包长度),然后接下来只读取8个数据,并且在下次接收数据之前,会重新reset RX FIFO,所以并不会出错(倘若在进行下次操作之前不重新reset RX FIFO,则下次接收会出错)。但仍然存在的问题是带来的延迟较大。

奇怪现象:若从机只是接收,不进行发送操作,则主机发送完毕后,从机也同时收到,RX FIFO中的个数与主机发送的个数相吻合。一旦进行发送操作后,则从机的接收就会出现延迟现象,RX FIFO中的个数也异常。所以,自然想到若在从机发送完毕后,重新对SI4463进行初始化操作(像上电初始化那样),则一定可以保证下次接收会与主机的发送同步。事实也是如此。但如果全部重新初始化,也耗费时间。进一步发现,只须对RF_PKT_LEN_12部分进行初始化(由WDS自动生成的头文件)。

即在每次发送完毕后,重新配置下RF_PKT_LEN_12部分的寄存器(进一步发现是PKT_FIELD_1_LENGTH_12_8、7_0),然后可保证从机下次接收与主机的发送同步。

本文来源:https://www.bwwdw.com/article/dxe7.html

Top