当前位置: 首页 > news >正文

STM32F103_HAL库+寄存器学习笔记15 - 梳理CAN发送失败时,涉及哪些寄存器

导言


《STM32F103_LL库+寄存器学习笔记14 - CAN发送完成中断》上一章节完成CAN发送完成中断,在梳理二级发送缓存之前,先梳理怎样监控CAN发送失败。
在这里插入图片描述
如上所示:

  1. 当我关掉CAN分析仪的CAN通道1,CAN错误状态寄存器CAN_ESR的TEC(发送错误计数器)持续递增,且最终递增至最大值0x80(十进制128)。此时,EPVF(错误被动标志)与EWGF(错误警告标志)都被置1。
  2. 当我关掉CAN分析仪的CAN通道1,CAN错误状态寄存器CAN_ESR的TEC(发送错误计数器)开始递增时,LEC(上次错误代码)等于0x03(ACK错误)。
  3. 当我重新开启CAN分析仪的CAN通道1,CAN错误状态寄存器CAN_ESR的TEC(发送错误计数器)持续递减,且最终递减至0。此时,EPVF(错误被动标志)与EWGF(错误警告标志)与LEC(上次错误代码)都被置0。

项目地址:

  • 寄存器方式:https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_ll_library14_Can_Send_Interrupt
  • HAL库方式:https://github.com/q164129345/MCU_Develop/tree/main/stm32f103_hal_library14_Can_Send_Interrupt

一、梳理寄存器


1.1、CAN错误状态寄存器CAN_ESR

在这里插入图片描述
在这里插入图片描述

如上所示:

  1. 跟CAN发送相关的是TEC(9位发送错误计数器)。正如上面的gif动图所示,发送失败一次,TEC会快速+8。发送成功一次,TEC会减1。
  2. LEC(上次错误代码)、EPVF(错误被动标志)、EWGF(错误警告标志)跟CAN接收与CAN发送都有关系。

1.2、TEC递增至128,不再递增

在这里插入图片描述
如上所示,让CAN分析仪关闭,总线只有STM32F103一个CAN节点。此时,STM32F103往CAN总线上发送CAN消息时,会触发确认ACK错误(TEC=0x03)。因为没有另外的CAN节点回复ACK。
在这里插入图片描述
如上所示,因为确认ACK错误(TEC = 0x03)导致的发送失败,TEC递增至十六进制的0x80(十进制128)。此时,不会再递增了。

1.3、TEC会在什么情况下突破128,递增至200多?触发Bus-off离线?

在这里插入图片描述
在这里插入图片描述
如上所示,当我用杜邦线将CANH、CANL短接后,TEC很快递增至0xF8(十进制248)。此时,寄存器CAN_ESR的BOFF(Bus-off离线标志)置1。CAN分析仪不再收到STM32F103开发板发出来的CAN消息,因为STM32F103开发板进入了离线模式。因为自身的问题(CANH与CANL出现了短路),不能干扰CAN总线,以免影响到其他CAN节点通讯。

1.4、触发Bus-off离线后,怎样恢复?

在这里插入图片描述
如上所示,从《STM32F1中文参考手册》的22.7.6章节看到,在进入Bus-off状态后,可以在自动或者在软件的请求下,从离线状态恢复。在下一章节,我会尝试用代码方式,解除离线状态恢复至正常工作状态。

相关文章:

  • Linux:Ext系列文件系统
  • Python网络爬虫设计(一)
  • 牛客月赛114
  • DDS函数信号发生器设计
  • Redis之RedLock算法以及底层原理
  • YOLOv2学习笔记
  • 实战指南:封装Whisper为FastAPI接口并实现高并发处理-附整合包
  • 案例驱动的 IT 团队管理:创新与突破之路:第四章 危机应对:从风险预见到创新破局-4.2 人才流失危机-4.2.3梯队建设的“洋葱模型“
  • 【MySQL】
  • 阿里FPGA XCKU3P开箱- 25G 光纤
  • 鸿蒙NEXT开发全局上下文管理类(ArkTs)
  • 进程的查看与属性
  • java分页实例
  • Python + Playwright:编写自动化测试的避坑策略
  • Typora更改快捷键 markdown语法大全
  • 关闭谷歌浏览器(Google Chrome)的自动更新可以通过以下方法实现。具体操作步骤取决于你的操作系统。
  • C#VIN 码识别接口:汽车后市场的智能数据管理利器
  • 微服务即时通信系统---(四)框架学习
  • 体系结构论文(七十一):Quantifying the Impact of Data Encoding on DNN Fault Tolerance
  • 从JSON到SQL:基于业务场景的SQL生成器实战
  • 云南一季度GDP为7490.99亿元,同比增长4.3%
  • 尹锡悦涉嫌发动内乱案第二次庭审举行
  • 清华成立教育学院:加快高层次人才培养、加强教育学科建设
  • 世界读书日|全城书香,上海“全民阅读”正在进行时
  • 上海这台人形机器人完成半马:无故障、无摔倒,冲过终点不忘挥手致意
  • 加快从数量增长向品质跃升转变,促进生态空间与城市功能有机共生!龚正调研公园城市建设工作