关于STM32 CAN 发送失败问题解释
程序员文章站
2022-06-16 16:59:47
首先解释一下CAN几个配置的功能:1.CAN_InitStruct.CAN_TTCM = DISABLE;这个只在某些CAN标准中使用,就设置为DISABLE。2.CAN_InitStruct.CAN_ABOM = ENABLE;这个位我们使能该功能,使用该功能可以在节点出错离线后适时的自动恢复,不需要软件干预。3.CAN_InitStruct.CAN_AWUM = ENABLE;这个位我们使能该功能,使用该功能可以在监测到总线活动后自动唤醒。4.CAN_InitStru....
首先解释一下CAN几个配置的功能:
1. CAN_InitStruct.CAN_TTCM = DISABLE;
这个只在某些CAN标准中使用,就设置为DISABLE。
2.CAN_InitStruct.CAN_ABOM = ENABLE;
这个位我们使能该功能,使用该功能可以在节点出错离线后适时的自动恢复,不需要软件干预。
3.CAN_InitStruct.CAN_AWUM = ENABLE;
这个位我们使能该功能,使用该功能可以在监测到总线活动后自动唤醒。
4.CAN_InitStruct.CAN_NART = DISABLE;
注意这个功能,这里DISABLE代表的是使用自动重传的功能,DISABLE是代表不使用自动重传的功能,我看了好多书籍上注释都写错了。
5.CAN_InitStruct.CAN_RFLM = DISABLE;
是否锁定FIFO,如果锁定,FIFO溢出会丢弃新数据;如果不锁定,FIFO溢出时,新数据会覆盖旧数据。
6.CAN_InitStruct.CAN_TXFP = DISABLE;
使能时会以存入发送邮箱的顺序进行发送,失能时,以报文ID的优先级发送。
这里遇到的问题是,发现在不使用自动重传的功能时,如果由于总线竞争导致发送失败,数据就丢掉了。所以在不是一应一答的环境中使用CAN的时候,建议开启自动重传功能。
本文地址:https://blog.csdn.net/qq_37868856/article/details/110122390