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

CAN总线学习(一)CAN总线通讯&硬件电路

目录

  • CAN总线学习(一)
    • 一、CAN总线通讯&硬件电路
      • 1.1 CAN简介
      • 1.2 和主流协议对比
      • 1.3 CAN硬件电路
      • 1.4 CAN电平标准
      • CAN收发器-TJA1050(高速CAN)
        • 共模电压(为啥CAN通信在实际使用中需要共地)
    • 附学习参考网址
      • 欢迎大家有问题评论交流 (* ^ ω ^)

CAN总线学习(一)

一、CAN总线通讯&硬件电路

1.1 CAN简介

  • CAN总线(Controller Area Network Bus)控制器局域网总线
  • CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛运用于汽车、嵌入式、工业控制等领域
  • CAN总线特征
    • 两根通信线(CAN_H、CAN_L),线路少,无需共地(实际使用中为了防止较高的共模电压还是会共地的)
    • 差分信号通信,抗干扰能力强
    • 高速CAN(ISO11898):125k~1Mbps,<40m
    • 低速CAN(ISO11519):10k~12kbps, <1km
    • 异步,无需时钟线,通信速率由设备各自约定
    • 半双工,可挂载多设备,多设备同时发送数据可以通过仲裁判断先后顺序
    • 11位或者29位报文ID,用于区分消息功能,同时决定优先级
    • 一个数据帧可以配置1~8字节的有效载荷
    • 可实现广播式和请求式两种传输方式
    • 应答、CRC校验、位填充、位同步、错误处理

1.2 和主流协议对比

在这里插入图片描述

  • CAN最大的优势就是多主控系统的相互通信

1.3 CAN硬件电路

在这里插入图片描述

  • 每个设备通过CAN收发器挂载到CAN总线网络上(CAN收发器主要实现电平转换,输出驱动和输入采样的功能)
  • CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连
  • 高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻(防止回波反射,拉紧两根线的电压一致,代表逻辑1状态,类似I2C的上拉电阻)
  • 低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻
    在这里插入图片描述

1.4 CAN电平标准

  • CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位
  • 高速CAN规定:电压差0V位逻辑1(隐形电平),2V为逻辑0(显性电平)
  • 低速CAN规定:电压差-1.5V位逻辑1(隐形电平),3V为逻辑0(显性电平)

CAN收发器-TJA1050(高速CAN)

在这里插入图片描述

  • SOP-8封装,8引脚,分别是VCC、GND供电,CAN_H、CAN_L接总线,TX、RX连CAN控制器,Vref输出参考电压(Vref 引脚输出电压为电源电压 VCC 的一半,一般不用),S选择运行模式(高速为一般模式,静音为只接受的模式)
共模电压(为啥CAN通信在实际使用中需要共地)
  • 引入两个概念,共模电压和差模电压

    • 共模电压是同时出现在差分信号的两根导线(CAN_H 和 CAN_L)上,相对于一个公共参考点(通常是地)的相同电压
    • 例如有AB两个设备在进行CAN通信,他们没有共地,A的地参考电压比B高5V,A向B发送了一个显性电平,VCAN_H = 3.5V VCAN_L = 1.5V
    • 首先要明确共模电压和差模电压的参考点都是要确定的一个设备(A或B)
  • 针对A来计算

    • 共模电压:
      Vcommon = (VCAN_H+VCAN_L)/2 + VGND = (3.5+1.5)/2 + 0 = 2.5V;
    • 差模电压:
      Vdiff = (VCAN_H-VCAN_L)/2 = (3.5+1.5)/2 = 2V;
  • 针对B来计算

    • 共模电压:
      Vcommon = (VCAN_H+VCAN_L)/2 + VGND = (3.5+1.5)/2 + 5 = 7.5V;
    • 差模电压:
      Vdiff = (VCAN_H-VCAN_L)/2 = (3.5+1.5)/2 = 2V;
  • 对于一个芯片,如CAN通信的引脚电压范围小于7.5就会被烧坏,这就是共模电压的影响。

  • CAN信号是利用差分信号不收共模电压的影响来实现稳定通信的,但是要防止共模电压过高烧坏芯片。

附学习参考网址

  1. CAN总线入门教程-全面细致 面包板教学 多机通信
  2. 共模电压与差模电压区别
  3. TJA1050数据手册

欢迎大家有问题评论交流 (* ^ ω ^)

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

相关文章:

  • 13. LangChain4j + 加入检索增加生成 RAG(知识库)
  • TriggerRecovery
  • OpenAI 开源 GPT-oss 模型:从闭源到开源的模型架构创新之路
  • 微服务技术栈一文串讲
  • 从浅入深:自编码器(AE)与变分自编码器(VAE)的核心原理与Pytorch代码讲解
  • 低功耗超宽带收发器:DW1000设备驱动API指南
  • 2012/07 JLPT听力原文 问题四
  • Redis最佳实践——性能优化技巧之集群与分片
  • springboot的注解
  • iOS App 混淆与热更新兼容实战 混淆后如何安全可靠地推送热修复(Hotfix)与灰度回滚
  • 从 0 到 1 保姆级实现C语言双向链表
  • 2 IP地址规划与设计案例分析
  • Vue 中 8 种组件通信方式
  • 十三、vue3后台项目系列——sidebar的实现,递归组件
  • LeetCode 383 - 赎金信
  • compose multiplatform reader3
  • Redis 入门与实践
  • 【OpenGL】texture 纹理
  • agentscope以STUDIO方式调用MCP服务
  • 无公网 IP 访问群晖 NAS:神卓 N600 的安全解决方案(附其他方法风险对比)
  • Redis最佳实践——性能优化技巧之Pipeline 批量操作
  • Java-130 深入浅出 MySQL MyCat 深入解析 核心配置文件 server.xml 使用与优化
  • 业主信息查询功能测试指南
  • WinDivert学习文档之四-————卸载
  • 分布式链路追踪关键指标实战:精准定位服务调用 “慢节点” 全指南(二)
  • DuckDB客户端API之ADBC官方文档翻译
  • 区块链技术应用开发:智能合约进阶与多链生态落地实践
  • 分布式专题——13 RabbitMQ之高级功能
  • 神经风格迁移(Neural Style Transfer)
  • Chromium 138 编译指南 Ubuntu 篇:源码获取与版本管理(四)