AnsweredAssumed Answered

SJA1000T接收缓存区RXB,RXFIFO数据处理问题

Question asked by 小丹 袁 on Jun 1, 2018

1.在使用SJA1000T芯片过程中,已经配置了验收滤波器,在CPU读取SJA1000T接收的信息时,是应该读取RXB寄存器的数据还是直接读取RXFIFO中的数据?如果是RXB中的数据,那在SJA1000T的RX引脚正在接收过程中,CPU读到的数据是已经通过滤波并保存在RXFIFO中的数据还是RX引脚刚接收到的数据?如果直接读取RXFIFO则如果RXFIFO中存有多条信息,怎样判断最早的那条信息的地址范围。

2.采用循环检查SR.0,当SR.0=1时,将RXB(can地址16-28)中的数据读出到CPU中,之后设置清空接收缓冲区命令(CMR.2)的方式读取CAN接收信息,当CAN回路连接的模块较多导致数据信息量大时,会出现丢包现象,应该怎样解决?有没有更好的设计方案?

3.清空接收缓存区指令,是讲RXFIFO中所有的信息都清除?还是只是将当前有效的信息清除,从而可以直接访问下一条存在RXFIFO中的信息?

4.在发送信息时,如果出现发送错误的情况,是否有重发机制?如果有怎样设置?SJA1000数据手册6.4.4CMR   note2中有提到:设置CMR.0和CMR.1会产生一次发送请求,并且为单次发送。如果只设置CMR.0会是什么情况?是否是单次发送?

Outcomes