请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L471 CAN通信中TEC计数器到了250逼近255,为何突然CAN_ESR寄存器全部清空了?

[复制链接]
Starryamber 提问时间:2021-9-24 10:41 / 未解决
测试环境:多个CAN节点连接在CAN总线上,A设备向B设备发起数据传输,B会根据A的数据进行响应。期间没有其他节点发送数据帧。

LOG说明:
[CAN-1-rx-tx-lx-fx]表示A设备发送的数据(其中的x表示任意数值)
[CRNR]表示A设备接收到的CAN总线上的数据
eg:
[CANR-1-r0-t27-l0-f0] 表示: r0 表示REC错误计数器为0, t27表示TEC错误计数器为27, l0表示LEC为0,f0表示
BOFF EPVF EWGF
这三个bit的数值 为0
寄存器.jpg

LOG图例:
log.jpg


结果现象:
从log中可以看到,TEC一直在累加,当然后面也有减小的趋势,但是突然TEC就清空了,然后EPVF EWGF也变为了0.
这是为什么呢?难道有什么自动清空机制吗?
按照ISO协议的标准,我理解他应该是慢慢递减的。是STM32内部有什么特殊处理吗?
收藏 评论4 发布时间:2021-9-24 10:41

举报

4个回答
xmshao 回答时间:2021-9-24 11:15:59
当节点的发送错误计数器TEC大于255时节点会进入离线状态。当离线节点再次回到主动错误状态时,TEC/LEC会被清零。这些都是CAN协议约定的,你可以看看CAN协议相关内容。
Starryamber 回答时间:2021-9-24 11:27:46
xmshao 发表于 2021-9-24 11:15
当节点的发送错误计数器TEC大于255时节点会进入离线状态。当离线节点再次回到主动错误状态时,TEC/LEC会被 ...

但是你也看到了,我监听的寄存器BUS OFF标志位没有被set呢。而且你说的离线节点 再次回到主动错误状态,也需要一定时间吧,但是我后面发现他是很快就恢复了,你可以看LOG前面的时间戳,精确到ms的,后面B设备也是很快响应A发的数据的
Starryamber 回答时间:2021-9-24 13:50:46
xmshao 发表于 2021-9-24 11:15
当节点的发送错误计数器TEC大于255时节点会进入离线状态。当离线节点再次回到主动错误状态时,TEC/LEC会被 ...

我想应该是进入了BUS OFF,可能没有捕获到。
xmshao 回答时间:2021-9-25 15:21:13
Starryamber 发表于 2021-9-24 13:50
我想应该是进入了BUS OFF,可能没有捕获到。

认同你的看法。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版