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

【嵌入式】CAN协议学习笔记

  CAN(Controller Area Network)和CAN FD(CAN with Flexible Data-Rate)是广泛应用于汽车电子、工业控制等领域的串行通信协议,由德国博世公司开发并已成为国际标准(ISO 11898)。以下从协议特点、帧结构、物理层及差异对比等方面详细介绍:


一、CAN协议基础

  1. 核心特点

    • 多主通信:所有节点可平等发送数据,通过标识符(ID)仲裁优先级(ID值越小优先级越高)。
    • 高可靠性:采用差分信号传输(CAN_H与CAN_L电压差表示逻辑0/1),抗电磁干扰强;内置错误检测(CRC、位填充等)和自动重传机制。
    • 实时性:最高速率1 Mbps(40米内),支持远距离低速通信(125 kbps可达1公里)。
  2. 物理层结构

    • 使用双绞线(CAN_H/CAN_L)传输差分信号,显性电平(逻辑0)对应电压差≥0.9V,隐性电平(逻辑1)接近0V[[7]][[8]]。
    • 终端需连接120Ω电阻匹配阻抗,抑制信号反射。

CAN总线结构

  1. 帧类型
    • 数据帧:携带实际数据,包含仲裁段(ID)、控制段(数据长度)、数据段(0-8字节)、CRC段等[[11]][[12]]。
    • 远程帧:请求其他节点发送数据,无数据段。
    • 错误帧:检测到错误时强制发送,中断当前通信。
    • 过载帧:用于节点延迟处理。

二、CAN FD协议增强特性

  CAN FD在兼容经典CAN的基础上,针对大数据量传输需求优化:

  1. 更高数据速率与长度

    • 数据段速率可提升至5 Mbps(甚至8 Mbps),仲裁段保持1 Mbps以确保兼容性。
    • 数据段长度从8字节扩展至64字节,减少协议开销。
  2. 改进的CRC校验

    • 采用更长CRC多项式(21位或17位),适配扩展数据段,增强错误检测能力。
  3. 帧结构差异

    • 新增EDL(Extended Data Length)位标识FD格式,BRS(Bit Rate Switch)位控制数据段速率切换。

CAN/CANFD帧结构


三、CAN与CAN FD对比

特性CANCAN FD
最大速率1 Mbps仲裁段1 Mbps,数据段5-8 Mbps
数据长度8字节64字节
CRC校验15位多项式17/21位多项式
兼容性所有CAN节点需支持FD的控制器和收发器

四、应用场景

  • 经典CAN:传统车身控制(车窗、仪表)、工业传感器网络等低数据量场景[[23]][[24]]。
  • CAN FD:智能驾驶(雷达/摄像头数据传输)、车载以太网网关、高精度工业控制等大数据量需求领域。

五、开发注意事项

  1. 硬件要求:CAN FD需专用收发器(如支持SIC)和控制器(如STM32H7系列)。
  2. 网络混合:FD节点与经典CAN节点共存时,需通过网关协议转换。

  CAN与CAN FD通过高可靠性、实时性和灵活性,成为复杂嵌入式系统的通信骨干。选择时需根据数据量、速率需求及成本综合考量。

参考资料:

  1. CAN通信协议入门
  2. CAN协议简介与接口介绍
http://www.dtcms.com/a/394229.html

相关文章:

  • NeurIPS 2025 spotlight |FSDrive 自动驾驶迈向视觉推理
  • Linux系统编程--进程信号
  • 数据结构代码整理
  • 软件开发测试的W模型:构建高质量产品的坚实蓝图
  • 【OpenGL】LearnOpenGL学习笔记26 - 视差贴图 Parallax Map
  • 对1D poisson采用二阶中心差分格式离散,离散 Laplace 矩阵 A 的特征向量就是 Fourier 模式的离散化
  • [Windows] PDF解密程序 PDF Decrypter Pro 4.5.0 汉化版
  • 【OpenGL】openGL 法线贴图
  • 科普:通配符表达式(Wildcard)与正则表达式(Regular Expression)
  • 【ROS2】Beginner: Client libraries - 使用 colcon 构建功能包
  • 记一次投影连接网络存储
  • 计算机视觉(opencv)实战二十九——图像风格迁移
  • Python数据挖掘之基础分类模型_K最近邻分类器(KNN)_决策树
  • 23种设计模式之【外观模式】-核心原理与 Java实践
  • 第4章:构建自己的物料解决方案
  • 华为昇腾 950 系列芯片深度解析
  • 2025华为杯 C题围岩裂隙精准识别与三维模型重构保姆级教程思路分析【国奖版】
  • 搭建Electron桌面项目
  • Linux 线程之pthread库
  • 内存泄漏、内存溢出与内存访问越界
  • C++初阶(11)string类的模拟实现
  • Python快速入门专业版(三十九):Python集合:去重与集合运算(交集、并集、差集)
  • pytorch 中meshgrid()函数详解
  • 深度探秘GAIA:一个为下一代AI量身打造的挑战性基准
  • 今日分享C++ ---继承
  • TableGPT:浙江大学发布的表格大模型
  • Linux 概述
  • 领码学堂·定时任务新思维[二]——七大替代方案总览:场景、优缺点与快速选型
  • NLP:详解FastText
  • 【力扣】hot100系列(一)哈希部分解析(多解法+时间复杂度分析)