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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版