This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570 CAN总线发送偶尔丢帧

Other Parts Discussed in Thread: TMS570LS3137

我公司正研制一套车载控制设备,核心处理器使用的是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数据发送丢失的原因还有什么?有什么好的建议?