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

嵌入式科普(41)通过对比深刻理解CAN总线协议特性

一、概述

1、网上众多CAN总线教程过于复杂,不利于初学者抓住关键点
2、通过对比嵌入式常见通信协议,让初学者深入理解CAN总线特性
3、横向对比可以发现各个协议的都具有不可替代性

二、嵌入式通信协议全方位对比表

图片

三、协议核心机制详细对比

3.1 抗干扰能力对比

协议

支持情况

具体实现方式

CAN优秀 (硬件级)1. 差分信号 (CAN_H/CAN_L)


2. 15位CRC校验
3. 位监控机制

UART

单端信号传输,无内置抗干扰机制

SPI

单端信号,短距离板内通信

I2C

单端信号,上拉电阻设计

RS485

良好

差分信号传输,物理层抗干扰能力良好

USB优秀差分信号 + 数据包CRC校验
以太网优秀差分信号 + 32位CRC校验 + 复杂的编码机制

3.2 自动重发机制对比

协议

支持情况

具体实现方式

CAN硬件自动重发控制器硬件自动检测错误并重发

UART

软件实现

需在应用层实现超时重传逻辑

SPI

不支持

无任何自动重发机制

I2C

不支持

无任何自动重发机制

RS485

协议层实现

依赖上层协议(如Modbus)实现软件重传

USB

协议层重发

通过NAK握手协议请求主机重发

以太网

传输层重发

TCP协议通过序列号和ACK实现可靠传输

3.3 故障节点隔离对比

协议

支持情况

具体实现方式

CAN硬件自动隔离TEC > 255时自动进入Bus-Off状态

UART

不支持

故障节点可能阻塞整个通信

SPI

有限支持

主机可通过禁用片选(CS)隔离从设备

I2C

不支持

故障节点可能拉死整个总线

RS485

不支持

需要额外硬件实现故障隔离

USB

主机控制隔离

主机检测到设备异常后可禁用该设备

以太网

网络层隔离

交换机通过MAC地址学习实现逻辑隔离

3.4 断线检测对比

协议

支持情况

具体实现方式

CAN

间接检测

通过TEC增长和Bus-Off状态推断断线

UART

软件超时检测

应用层心跳包和超时机制

SPI

无法检测

无任何断线检测机制

I2C

无法检测

无任何断线检测机制

RS485

软件检测

Modbus等协议的心跳机制

USB硬件链路检测PHY芯片直接检测物理连接状态
以太网硬件链路检测PHY芯片检测链路脉冲,自动报告Link状态

3.5 诊断系统对比

协议

支持情况

具体实现方式

CAN标准化诊断UDS协议,完整的诊断服务

UART

自定义协议

需要自行定义诊断命令格式

SPI

无标准

无标准化诊断协议

I2C

无标准

无标准化诊断协议

RS485

工业协议

Modbus等协议提供基本诊断功能

USB

设备枚举

通过描述符识别设备状态和能力

以太网

网络诊断

ICMP、SNMP等网络层诊断工具

综合评级总结

协议

抗干扰

自动重发

故障隔离

断线检测

诊断系统

适用场景

CAN

✓✓✓

✓✓✓

✓✓✓

✓✓

✓✓✓

汽车、工业控制

UART

调试、简单通信

SPI

板内高速通信

I2C

板内低速设备

RS485

✓✓

✓✓

工业自动化

USB

✓✓✓

✓✓

✓✓

✓✓✓

✓✓✓

外设连接

以太网

✓✓✓

✓✓

✓✓

✓✓✓

✓✓✓

网络通信

图例说明:

  • ✓✓✓:优秀/硬件级支持

  • ✓✓:良好/协议级支持

  • ✓:基本/软件实现支持

  • ✗:不支持/效果差

关键结论:

  1. CAN总线

    在可靠性相关机制上全面领先,特别适合高可靠性要求的控制场景

  2. USB

    以太网在数据传输和连接性方面表现优异,但在实时控制方面不如CAN

  3. RS485

    物理层优秀,但缺少智能的错误管理功能

  4. UART/SPI/I2C

    简单易用,但在可靠性和错误处理方面较弱

  5. 协议选择需要根据具体应用场景在可靠性、成本和复杂度之间权衡

四、CAN总线协议几个特征

4.1 回环模式

图片

图片

  1. 工作原理
    在该模式下,CAN控制器内部将TX引脚和RX引脚短接。当你发送一帧报文时,这帧报文不会(或即使发出也同时)被自己的接收器收到。它自己给自己发送ACK应答位,因此总能发送“成功”。

  2. 为何需要回环模式?
    硬件验证:在生产或开发初期,验证MCU的CAN控制器硬件及驱动程序是否正常工作。

    软件调试:在只有单个节点或没有CAN分析仪的情况下,开发者可以调试应用程序的通信逻辑,例如验证数据打包/解包程序是否正确。

    孤立测试:测试工作完全在芯片内部进行,与外部环境隔离,非常安全可靠。

  3. 注意事项
    与总线关系:在回环模式下,节点通常无法接收到总线上其他节点发送的真实报文。

    常见模式:许多控制器还提供 “回环静默模式(Silent Loopback Mode)” ,它结合了回环和静默模式的特点,主要用于监听总线 activity 而不影响总线,同时内部可以进行自发自收测试。

4.2 接收滤波器

  1. 工作原理
    CAN总线是广播式的,所有节点都能“听到”所有报文。如果每帧报文都让CPU处理,其负载将不可承受。接收滤波器就是为解决此问题而设计的硬件“门卫”。

    它包含两个核心概念:

    标识符 (ID):你想要接收的报文ID。   掩码 (Mask):决定ID中哪些位必须严格匹配,哪些位可以忽略(不关心)。

    掩码规则:

    掩码位 = 1:对应的ID位必须严格匹配。   掩码位 = 0:对应的ID位不关心(可以是1也可以是0)。
  2. 滤波器配置示例
    假设你只想接收ID为 0x123 的报文:

    设置 滤波器ID = 0x123

    设置 掩码 = 0x7FF (所有11位标准ID位都需匹配)

    结果:只有ID恰好为 0x123 的报文才能通过。

    假设你想接收ID在 0x120 到 0x12F 范围内的所有报文:

    分析:这个范围的特征是前8位(高8位)相同 (0x12),最后4位变化。

    设置 滤波器ID = 0x120

    设置 掩码 = 0x7F0 (高8位必须匹配,低4位不关心)

    结果:所有ID符合 0x12X 的报文都能通过,实现了对一组ID的过滤。

  3. 为何需要接收滤波器?
    极大降低CPU中断负载:这是最主要的目的。总线可能充斥大量无关报文,滤波器确保CPU只处理它关心的数据。

    实现协议分离:例如,在一个复杂的系统中,动力系统报文、车身控制报文、诊断报文都有不同的ID段。可以通过设置多个滤波器,将它们分别路由到不同的软件模块进行处理。

    提高系统实时性:CPU免于处理大量无用中断,可以更及时地响应关键任务。

4.3 邮箱Mailbox和FIFO

Mailbox和FIFO是CAN控制器的资源,不同的芯片是有不同的,让你可以将不同过滤器灵活地映射到不同的FIFO上,从而在成本和性能之间取得平衡。

4.4 CAN和CANFD兼容

CAN FD(Flexible Data-rate)作为CAN的升级版,设计上是向下兼容经典CAN的

  1. 若进行小规模升级或过渡,可优先考虑使用带CAN FD屏蔽功能的收发器。

  2. 若需在经典CAN和CAN FD网络段间建立可靠通信,CAN网桥/网关更合适。

  3. 若为全新项目或追求最佳性能和未来性,且预算允许,全部采用CAN FD节点是长远之选

4.5 其他

图片

图片

图片

图片

图片

五、总结

  • CAN是一种基于差分信号的中高速总线协议,其多种硬件错误检测机制赋予它极强的抗干扰能力。

  • 该协议无需中间件或协议栈,可直接操作寄存器,从而实现了高实时性。

  • 内置的邮箱和FIFO等缓冲结构有效降低了CPU负载。

  • 可使用逻辑分析仪、CAN盒、wireshark、UDS等多种诊断方法。

  • CAN在汽车工业和工业控制等领域具有不可替代的地位。

  • 随着成本降低和速度要求越来越高,是否有一种新协议,既有CAN总线的实时性,又有以太网的高吞吐量的,我想可能就是工业以太网的EtherCAT和profinet了。

图片

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

相关文章:

  • 外综服网站开发专业设计网站公司
  • excel数据处理
  • 淄博网站建设 招聘对外贸易网站有哪些
  • 数据结构_ 二叉树线索化:从原理到手撕实现
  • 分享一个知识工程师单体智能体的简单提示词
  • 南宁伯才网络建站如何WordPress一键采集插件
  • 免费三网合一网站系统网站建设介绍书
  • 网站开发公司起名10分钟快速建网站
  • flink批处理-时间和窗口
  • 无锡有什么网站怎样免费注册个人网网址
  • SLAM | SLAM中松耦合与紧耦合技术对比分析
  • xtuoj 方程组
  • 重庆网站设计建设东莞微联建站
  • 北京医疗网站建设公司排名网站建设开票项目是什么
  • C#——方法的定义、调用与调试
  • 开源的容器化平台:Docker入门与核心概念解析
  • 手机网站价格小广告网页
  • 晋城市建设局网站国内编程培训机构排名
  • 08 线性回归 + 基础优化算法【动手学深度学习v2】
  • 创新为擎,绿色为基:新天力科技引领食品容器行业高质量发展新征程
  • 从 GDPR 到 ROI:一次评透海外影音数据抓取的合规与性价比
  • 商务网站规划与建设中江建设银行网站
  • 关于做书的网站专门做项目代理的网站
  • 【Vue3】v-dialog 中使用 execCommand(‘copy‘) 复制文本失效的原因与解决方案
  • lesson70:jQuery Ajax完全指南:从基础到4.0新特性及现代替代方案引言:jQuery Ajax的时代价值与演进
  • 郑州网站建设 李浩大气集团企业网站模板
  • Redis高级特性:持久化机制
  • 哈尔滨模板建站哪个品牌好网站怎么做交易
  • 城建设投资公司网站潍坊路通工程建设有限公司网站
  • 个人工作室网站如何把字体安装在wordpress