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

CAN总线协议

CAN(Controller Area Network)总线是一种广泛应用于汽车、工业自动化等领域的串行通信协议,由德国Bosch公司在1980年代开发,主要用于实时、可靠的数据传输。以下是其核心要点:


1. 基本特性

  • 多主通信:所有节点均可主动发送消息,通过仲裁机制避免冲突。
  • 差分信号:使用CAN_H和CAN_L双线传输,抗干扰能力强。
  • 实时性:基于优先级(ID决定)的非破坏性仲裁,高优先级消息优先发送。
  • 速率
    • 标准CAN(CAN 2.0A/B):最高1 Mbps(短距离),常见125 kbps~500 kbps。
    • CAN FD(灵活数据速率):提升至5 Mbps以上,数据段可变长度。

2. 帧类型

  • 数据帧:携带实际数据,结构如下:

    • 仲裁域(ID):11位(标准帧)或29位(扩展帧),决定优先级。
    • 控制域:数据长度(DLC,0~8字节,CAN FD可达64字节)。
    • 数据域:实际传输的数据。
    • CRC域:校验数据完整性。
    • ACK域:接收节点确认。
  • 远程帧:请求发送特定ID的数据(无数据域)。

  • 错误帧:通知总线错误。

  • 过载帧:延迟下一帧传输。


3. 仲裁机制

  • 非破坏性逐位仲裁:发送时同时监听总线,若ID位为隐性(1)但检测到显性(0),则退出仲裁。ID值越小,优先级越高

4. 错误处理

  • 5种错误检测
    • CRC错误、格式错误、应答错误、位错误、填充错误(每5个相同位插入相反位)。
  • 错误状态:节点根据错误计数进入“主动错误”、“被动错误”或“总线关闭”状态。

5. 物理层

  • 终端电阻:总线两端需接120Ω电阻匹配阻抗。
  • 电平
    • 显性电平(0):CAN_H ≈ 3.5V,CAN_L ≈ 1.5V。
    • 隐性电平(1):CAN_H = CAN_L ≈ 2.5V。

6. 应用场景

  • 汽车电子:ECU(发动机控制单元)、传感器、仪表通信。
  • 工业控制:PLC、机器人、传感器网络。
  • 医疗设备:高可靠性要求的设备间通信。

7. CAN变种

  • CAN FD:提升数据段速率和长度(兼容经典CAN)。
  • CAN XL:更高带宽(10+ Mbps),支持更大数据包(仍在发展中)。

8. 协议栈

  • 底层:物理层(ISO 11898)、数据链路层(CAN控制器)。
  • 上层协议
    • CANopen:工业自动化常用。
    • J1939:商用车标准(基于29位ID)。

示例代码(Arduino + CAN)

#include <CAN.h>
void setup() {CAN.begin(500E3); // 初始化500 kbps
}void loop() {CAN.beginPacket(0x12); // 标准帧ID=0x12CAN.write('A');        // 发送1字节数据CAN.endPacket();delay(1000);
}

关键优势

  • 可靠性:错误检测与重发机制。
  • 灵活性:支持多节点、动态增减设备。
  • 成本低:简化布线,适合复杂系统。

适用于需要高实时性和抗干扰能力的分布式控制系统。

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

相关文章:

  • 【机器学习与数据挖掘实战 | 医疗】案例20:基于交叉验证和LightGBM算法的糖尿病遗传风险预测
  • FastDDS (SharedMemory)
  • Mysql监控数据库
  • synchronized 深度剖析:从语法到锁升级的完整演进
  • VSCode:通义灵码插件安装使用 -- 免费AI编程工具
  • 登录校验一
  • 抢占先机,PostgreSQL 中级专家认证的职业跃迁
  • 逻辑回归在银行贷款审批中的应用:参数选择与实践
  • grafana/lock-stack 日志 Pipeline 配置
  • 性能监控体系:InfluxDB Grafana Prometheus
  • 【东枫科技】DreamHAT+
  • 3D 建模核心术语扫盲:拓扑、UV 展开、烘焙与 AO 贴图解析
  • 关于“PromptPilot” 之5 -标签词与标签动作的语言模型九宫格
  • c#中switch case语句的用法
  • Go语言的gRPC教程-拦截器
  • 向华为学习——IPD流程体系之IPD术语
  • 译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例
  • k8s云原生rook-ceph pvc快照与恢复(上)
  • JavaScriptAJAX异步请求:XHR、Fetch与Axios对比
  • 学习笔记:封装和单继承
  • ls hgfs提示ls: cannot access ‘hgfs‘: Permission denied
  • Spring Boot 2.1.18 集成 Elasticsearch 6.6.2 实战指南
  • OneCode3.0 DSM:领域驱动设计驱动下的自定义枚举领域划分实践
  • CMake Debug/Release配置生成器表达式解析
  • 加密与安全
  • ACM SIGCOMM 2024论文精选-01:5G【Prism5G】
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • Unity相机控制
  • C#线程同步(三)线程安全
  • LT3045EDD#TRPBF ADI亚德诺半导体 线性稳压器 电源管理应用设计