打印
[射频芯片]

求证Si4438长数据包收发bug

[复制链接]
2257|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vistajian|  楼主 | 2016-3-9 00:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在用si4438实现了固定长度包(小于64字节)发送没问题,但实际数据包大于64字节,所以想用长数据包收发功能,也就是FIFO中断,移植了官方的长数据包收发代码后测试发现两个问题:
1、FIFO即将空中断有时候失效。本该是FIFO即将空中断,但先来的是发送完成中断,这样的话永远进入不到即将空中断。导致数据不能完全发送。
2、FIFO即将空阈值设置不起作用。
后来实在没办法,参看了官方的文档,在官方是勘误手册上,明确提到了这两个bug是si4438 B1版本的bug,将在C2版本中修正。

我现在纳闷的是,在解决这个问题中,我百度了好久,都没发现网上有人提到这个bug,有提到用FIFO即将空中断实现大于64字节包发送的**,但是没提到芯片有bug,现在C2版的芯片不好买,不知其他人是怎样实现大于64字节包一次性发送的?

请高手赐教

相关帖子

沙发
vistajian|  楼主 | 2016-3-9 10:13 | 只看该作者
下面是官方勘误手册上对这两个bug的描述,我现在想知道的是怎么用变通的方法规避这个bug而不换芯片

FIFO_INFO command does not update TX_FIFO_ALMOST_EMPTY status properly  
Description:  If the TX FIFO is reset by the FIFO_INFO command, the chip does not update the TX_FIFO_ALMOST_EMPTY status bit correctly. It gets updated only by the next TX FIFO fill that causes the TX_FIFO_ALMOST_EMPTY interrupt to occur later than expected.  
Impact:        TX_FIFO_ALMOST_EMPTY interrupt occurs later than expected.   
Workaround:  Write one dummy byte into the TX_FIFO to fire the TX_FIFO_ALMOST_EMPTY interrupt and reset the TX_FIFO again. A fix has been identified and will be included in the next revision of the device.     
FIFO Threshold Limitations

Description: Threshold of TX_FIFO_ALMOST_EMPTY interrupt can only be set to as high as 58 bytes for reliable interrupt generation when the threshold is reached. If the payload length of the transmitted packet is less than 7 bytes, the user can rely on the PACKET_SENT interrupt which indicates the end of packet transmission. Threshold of RX_FIFO_ALMOST_FULL interrupt can only be set to as low as 12 bytes for reliable interrupt generation when the threshold is reached. If the payload length of the received packet is less than 12 bytes, the user can rely on the PACKET_RX interrupt which indicates the end of packet.  
Impact:  User should not rely on FIFO threshold interrupts for greater than 58 bytes on the TX side and less than 12 bytes on the RX side.   
Workaround:  Rely on PACKET_SENT and PACKET_RX interrupts for very small payload lengths as described above. A fix has been identified and will be included in the next revision of the device.

使用特权

评论回复
板凳
vistajian|  楼主 | 2016-3-9 11:57 | 只看该作者
在线等答案,求指教

使用特权

评论回复
地板
vistajian|  楼主 | 2016-4-6 16:36 | 只看该作者
发大于64字节数据时,FIFO即将空中断bug,官方规避方法是先发一个无效字节,谁遇到了同样问题?
我找了两周的C2A版本的芯片,都没货源,不可思议

使用特权

评论回复
5
vistajian|  楼主 | 2016-4-6 16:38 | 只看该作者
先发无效字符,那接收端也会收到无效字符,这种处理方式太奇葩

使用特权

评论回复
6
ss1969| | 2016-4-11 21:12 | 只看该作者
我直接是自己把数据包拆成64byte一个了。。
好在我这里要发送长段数据的时候不多。

我想请问一下楼主,中断方式处理是怎么做的?中断里面直接一个信号量让别的task来处理呢?还是中断里面直接判断出是tx还是rx然后分别用不同的信号量让其他task处理呢?

使用特权

评论回复
7
wyz6| | 2016-4-13 08:44 | 只看该作者
SI4463的通讯一直调不通,希望哪位高人指点,QQ:373716870

使用特权

评论回复
8
游击士g| | 2016-7-8 17:10 | 只看该作者
或者楼主告知一下官方例程怎么找也可以

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝