用户登录
用户注册

分享至

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

  • 作者: 老公说我比较长
  • 来源: 51数据库
  • 2021-07-12

首先解释一下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的时候,建议开启自动重传功能。

软件
前端设计
程序设计
Java相关