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

CAN(三)——过载帧

目录

为什么说过载帧不需要MCU(CPU核心)参与?

1. 过载帧的触发条件

2. 过载帧的发送过程(硬件自动完成)

MCU(软件)的角色是什么?

类比理解

总结


过载帧的发送和协调完全由MCU内部的CAN控制器硬件自动完成,无需CPU核心的干预。

下面进行详细解释。

为什么说过载帧不需要MCU(CPU核心)参与?

过载帧是CAN控制器硬件级别的一种流量控制机制。它的触发条件要求响应速度极快,必须在几个位时间内完成,如果等待相对缓慢的软件(MCU核心)来响应和处理,是根本来不及的。整个过程就像身体遇到烫伤会立即缩手(硬件反射)而不是等大脑下命令(软件处理)一样。

1. 过载帧的触发条件

协议规定了三种情况,CAN控制器会发送过载帧:

  • 接收器内部繁忙:这是最常见的原因。比如,CPU还没有来得及从上一个接收邮箱中读取数据,下一个数据帧又来了。此时,CAN控制器硬件会自动发出过载帧来延迟新数据的到达。

  • 在间歇场的第一或第二位检测到显性位:间歇场应该是隐性位,出现显性位是非法的,硬件会将其解释为一个过载条件。

  • 在错误界定符或过载界定符的最后一个位检测到显性位:这表示有节点未能正确同步到错误/过载过程的结束,硬件会再次触发过载帧来同步所有节点。

所有这些条件都由CAN控制器的硬件逻辑电路实时监控和判断。

2. 过载帧的发送过程(硬件自动完成)

一旦上述任一条件被检测到,硬件会立即行动:

  1. 发送过载标志:CAN控制器会发出一个连续6个显性位的过载标志。这个标志与主动错误标志的格式完全相同。

  2. 众裁同步:总线上其他节点检测到这个过载标志后,也会同步地发出自己的过载标志。最终在总线上形成一个由多个节点标志叠加的、长度至少为6位的显性位序列。

  3. 发送过载界定符:在过载标志之后,所有节点会发送一个由8个隐性位组成的过载界定符。这个过程与错误界定符完全一样。

完成这个过程后,总线会尝试恢复正常通信。


MCU(软件)的角色是什么?

虽然过载帧的发送是硬件自动的,但导致过载发生的原因可能与软件有关。因此,软件的角色是事后处理和根本原因解决

  • 诊断与状态监控

    • 软件可以通过读取CAN控制器的状态寄存器中断标志来发现过载事件的发生。例如,一个“过载中断”会被触发。

    • 当软件检测到过载发生时,它就知道系统出现了问题。

  • 解决问题

    • 如果过载是由于“接收器内部繁忙”(这是最常见的原因),那么根本问题在于软件处理CAN数据的效率跟不上总线负载

    • 软件需要采取的行动可能包括

      • 优化中断服务程序:让CAN接收中断的处理例程更短、更高效。

      • 使用DMA:配置CAN控制器直接使用DMA将接收到的数据存入内存,完全绕过CPU,这是解决该问题的最有效方法。

      • 提高软件优先级:如果使用了RTOS,可以提高CAN处理任务的优先级。

      • 降低总线负载:如果可能,与系统架构师沟通,看是否能减少总线上不必要的数据流量。

类比理解

  • CAN控制器硬件:就像一个高效的邮差分拣员

  • MCU核心(CPU):就像办公室里的工作人员

  • 过载帧:就像邮差分拣员发现工作人员的收件箱已经满了,这时他又拿到一封新信。他不会去叫醒正在开会的工作人员,而是会自动地在分拣中心发出一个“暂停送货”的信号,让发送方稍微等一下。等他清空了一些位置(或工作人员终于来取信了),他再取消这个信号,恢复正常送货。

总结

特性错误帧过载帧
目的通知错误(如CRC错误、格式错误),确保数据正确性。流量控制,为接收节点争取更多处理时间。
触发原因总线上的电气、格式或数据错误。接收节点内部繁忙或特定的协议违规。
实现方式硬件自动完成硬件自动完成
MCU软件角色通过中断或寄存器事后感知错误,进行计数、诊断或进入降级模式。通过中断或寄存器事后感知过载,并优化自身代码以解决导致过载的根本原因。

因此,过载帧的发送本身是纯硬件行为,但由过载帧所暴露出的系统性能瓶颈,则需要MCU上的软件来负责解决。

http://www.dtcms.com/a/570126.html

相关文章:

  • vscode编辑arduino项目
  • 哪些网站的做的好看的设计网站定制公司
  • 架构负债不仅仅是技术负债
  • 建设网站的规划书wordpress 评论已关闭
  • BPC合并流程(持续更新中)
  • Python中常用内置函数上【含代码理解】
  • 第29章 光源的涅槃(秀秀)
  • 影像测量仪是什么?有哪些功能用途
  • Gemini国内怎么使用(2025/11/04)
  • 用vs做网站教程策略网页游戏大全
  • 你知道什么是实时分账吗?
  • Prim 算法
  • 网站开发售后服务承诺高端品牌网站建设兴田德润可信赖
  • 带数据库的网站怎么建品牌建设和品牌打造对企业的意义
  • 仿建网站WordPress切换标记
  • 正规的网站制作电话多少120救护车收费价格表
  • orcal中的连接问题
  • ESP32事件组替代全局变量:高效控制任务循环
  • Go内存管理最佳实践:提升性能的Do‘s与Don‘ts|Go语言进阶(17)
  • MiniEngine学习笔记 : CommandAllocatorPool
  • 常见的数据库测试工具有哪些?
  • 长沙市制作企业网站公司企业网站模板建站流程
  • 建立网站的程序大连网站建设dl zw
  • 小迪安全v2023学习笔记(一百四十四天)—— Webshell篇静态查杀行为拦截流量监控代码混淆内存加载工具魔改
  • 【仓颉纪元】仓颉语言特性深度解析:鸿蒙原生开发的新引擎
  • 团购网站模板免费下载wordpress导航小图标
  • 企业网站建设的意义做米业的企业网站
  • MySQL系列之数据类型(String)
  • Janet 介绍
  • 有关于网站开发的参考文献订阅号可以做网站么