欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于STM32 CAN 发送失败问题解释

程序员文章站 2022-03-06 08:15:02
首先解释一下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

相关标签: STM32