我公司正研制一套车载控制设备,核心处理器使用的是TMS570LS3137芯片。目前测试中发现该处理器使用CAN总线发送数据时偶尔出现发送不出去情况,情况较严重,很容易通过CAN调试器监测出来。具体情况如下:
1) 总线波特率设置为500K(1M也试过,存在相同问题),每秒钟整个系统大约发送300帧数据。
2) 整个系统CAN通信板卡总共10个,其中使用570芯片做处理器的有4个板卡。
3) CAN帧ID使用扩展帧方式,即29Bits帧ID编码。数据使用8Bytes的短帧结构。
4) 发送方式采用中断方式:
A) CAN数据发送函数,首先将发送数据存入缓存区。
B) 发送周期处理函数(约5ms循环一次)周期检测CAN发送缓存中是否存在待发送数据,若存在,则使用CAN_SendMsg(后附该函数定义)函数启动发送第一帧数据。
C) 第一帧数据发送后,程序响应“Status Change Interrupts”中断函数,若ES寄存器中TxOK有效,则启动发送下一帧数据,直至将数据发送完毕。(注:在测试中没有发现ES中PER、BOff、EWarn、EPass出现错误)。
求助问题:
1) 该种CAN数据发送方式是否存在问题?如何解决?
2) 导致TMS570CAN数据发送丢失的原因还有什么?有什么好的建议?
gaoyang9992006:
http://embed.21ic.com/hardware/can/201706/46432.html
看看有没有这个文章中提到的情况。你也可以去bbs.21ic.com发帖咨询一下看看。