TI中文支持网
TI专业的中文技术问题搜集分享网站

28335CAN问题,未初始化帧ID,使能邮箱

系统有两个28335.互相收发数据通过CAN总线。标准帧。

交互过程为,CPU1发送帧ID为0x55,CPU2收到0x55之后发送0x56,.然后CPU1收到0x56之后发送帧ID为0x57,CPU2收到0x57之后发送0x58.

CPU1使能了邮箱1和0为接收邮箱(实际上只使用邮箱0接收,配置了邮箱0的帧ID和屏蔽寄存器,可以接收0x56和0x58,邮箱1只是配置为接收并使能,没有初始化和它相关的寄存器,相当于误使能了这个邮箱) ,CPU2也使能了邮箱1和0.为接收邮箱(配置了邮箱0的帧ID和屏蔽寄存器,可以接收0x55和0x57,邮箱1使能,做了其它配置,接收别的信息) 。

刚开始发现一个板子,CAN总线只出现了0x55,和0x56.没有0x57,0x58.更换CPU1后正常。没有引起注意。

现在发现,在小批量生产(前后共生产了200块)时,约有2.5~3.5%的CPU1接收不到0x56这帧,总线只出现了0x55,和0x56.没有0x57,0x58.

通过仿真发现,CPU2发送的0x56帧被CPU1的邮箱1给接收了。邮箱0接收不到数据,所以后两帧发送不了。

查看CAN的寄存器,未配置时邮箱的一些寄存器上电后是x,怀疑是只使能和配置为接收(邮箱1的MD,ME这两位置为1,其它的没有配置)时,上电时可能邮箱1

变为和邮箱0一样的帧ID,由于邮箱1的优先级高,则数据被邮箱1接收,邮箱0收不到数据。

现在的疑问是,这些不能正常工作的CPU都是一上电就是好像邮箱1变为和邮箱0一样的帧ID。并不是随机的出现。然后其他的好的板子都是一次也没有出现这种情况。

想问问,是否28335的邮箱只使能和配置为接收(邮箱1的MD,ME这两位置为1,其它的没有配置)时就是会固定和自己相邻的邮箱ID一致?还是说只要使能和 配置为接收,不一定邮箱ID一样,也会直接接收?(但是好多板子又没有出现,也许和使用的时间有关系?) 

如果不修改程序,是否这些目前正常的板子在以后的使用中会必然出现这类问题??

另外由于发送时,再修改邮箱时需要禁止和使能邮箱,因此在配置的发送函数驱动中,每次也都使能了一次邮箱。

请求高手解答!谢谢

目前想到的解决办法 : 修改程序,初始化时CPU1不在使能邮箱1.同时再发送函数驱动中,通过与和或的方式只禁止用到的发送邮箱。修改后板子工作正常。

xiangtian zhang:

我也遇到了相同的问题,两个解决办法,第一 关闭没有用到的邮箱。第二,没有用到的邮箱全部配置不同的ID号。

赞(0)
未经允许不得转载:TI中文支持网 » 28335CAN问题,未初始化帧ID,使能邮箱
分享到: 更多 (0)