Part Number:TMS570LC4357
我使用的是can1的回环测试功能(邮箱1发送,邮箱2接收),can正常发送和中断接收都是没有问题的
目前我想用can发送24个字节的数据,我将24个字节分成了三份,分别用can1的邮箱1发送3次,中间延时100us,目前的问题的是第一次发送的数据和第三次发送的数据可以进中断并且被接收,第二次数据却进不去中断,导致第二次发送的数据丢失。
我用逻辑分析仪观察了can的发送引脚,发现三组数据都是被发送出来的(并且数据都是正常的),但是第二组数据却接收不到,图如下
发送的第二组数据
于是我尝试加大这三组数据中间的间隔,当我加大到1ms的时候,我发现数据可以被接收,但是还是会有丢包的现象,平均每4次丢1次包
于是我再次加大三组数据之间的间隔,但我加大到2ms的时候,我发现数据可以被正常接收了,并且不会出现丢包的现象,但是发送一帧(即三组数据)的时间达到了4ms左右
问题:我现在想知道怎样可以减少一帧数据(三组数据)的传输时间,并且不会出现丢包的现象,最好可以将三组数据的传输时间控制在1ms左右
PS:开发板接外置CAN收发器已经测试过(CAN1发送,CAN2接收),传输速率改为1M也测试过,问题均和上述描述一模一样,CAN配置参数如下:
Susan Yang:
我会在确认后给您回复。您可以先参考下
https://www.ti.com/lit/an/spna131/spna131.pdf
中 Sample Bit Timing Calculation for 500 kb 的配置
,
Susan Yang:
应该直到第一条消息成功传输才能发送第二条消息。您可以使用 TX 中断来决定何时传输第二条消息。
丢失的包是否在接收端产生中断?如果没有读出,第 3 个包可能会被第 4 个包覆盖。请为您的 4 条消息使用不同的消息 ID 以检查是否收到所有消息。
,
fengaov:
好的,谢谢回复,我马上去试一下
,
fengaov:
找到问题了,我把can发送放在了rti的通道0中断里面,它的优先级比can接收的优先级高,导致数据过来不能被及时处理,从而导致第二包数据被第三包数据覆盖