wangjiahao88 发表于 2023-5-29 19:10:13

CAN连续发送,会卡死或者数据发不出去,大家有解决方案吗?

CAN连续发送,会卡死或者数据发不出去,大家有解决方案吗?


例如 以20ms一个发送周期,连续发送多个设备的CAN报文,

if(TIM6.CAN_SEND_FLAG)
{
   TIM6.CAN_SEND_FLAG=0;
   can1_tx(&MOTOR1);
   can1_tx(&MOTOR2);
   can1_tx(&MOTOR3);
   can1_tx(&MOTOR4);
}
加了delayms(10),就会好了。
如果不加延时,就会有数据丢失,请问这种情况,不加延时,大家是如何处理的啊?

另外希望硬汉哥也会给予指点!
万分感谢!


xz733 发表于 2023-5-29 22:57:14

连续两帧发布,中间需插入CAN的帧间隔,连续3个以上隐性电平即可

morning_enr6U 发表于 2023-5-30 08:58:12

你硬件邮箱FIFO不就能容纳三帧吗?

TRX 发表于 2023-5-30 10:00:09

HAL_CAN_IsTxMessagePending()这个函数是用来检查邮箱的挂起状态的

TRX 发表于 2023-5-30 10:02:52

HAL_CAN_GetTxMailboxesFreeLevel()这个是用来检查邮箱是否可用的

我这样用是可以连续发送的,你可以参考下

旮旯旭 发表于 2023-6-2 10:52:37

if(HAL_CAN_GetTxMailboxesFreeLevel(phcanx->hcan) != 0)   HAL库的这个函数可以查询是否有可用的邮箱

爱好嵌入式小白 发表于 2024-4-23 13:49:34

TRX 发表于 2023-5-30 10:02
HAL_CAN_GetTxMailboxesFreeLevel()这个是用来检查邮箱是否可用的

我这样用是可以连续发送的,你可以参 ...

大佬牛逼,谢谢你
页: [1]
查看完整版本: CAN连续发送,会卡死或者数据发不出去,大家有解决方案吗?