【车载开发系列】CAN通信总线再理解(上篇)

news2024/11/21 2:24:16

【车载开发系列】CAN通信总线再理解(上篇)

【车载开发系列】CAN通信总线再理解上篇

  • 【车载开发系列】CAN通信总线再理解(上篇)
    • 一. CAN的概念
      • 1)硬件组成
      • 2)编码与负载
      • 3)收发数据
      • 4)半双工通信
    • 二. CAN总线历史
    • 三. CAN总线通信速率
    • 四. CAN的特点
      • 1)多主控制
      • 2)开闭环总线
      • 3)安全性
      • 4)故障封闭功能
      • 5)连接节点多
    • 五. 物理层特征
      • 1)显性电平
      • 2)隐性电平
    • 六. CAN收发器芯片介绍

一. CAN的概念

  • CAN(Controller Area Network:控制器局域网),是ISO国际标准化的串行通信协议。
  • 为满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需求。
  • CAN通信协议是一种基于广播的通信方式,它采用多主结构;
  • 即网络中的每个节点都可以在任何时候主动地向网络上其他节点发送信息,而不分主从,通信方式灵活

1)硬件组成

  • CAN通信节点由一个CAN控制器CAN收发器组成
  • 控制器与收发器(电平转换)之间通过CAN_Tx及CAN_Rx信号线相连;
  • 收发器与CAN总线之间使用CAN_High及CAN_Low信号线相连。

2)编码与负载

  • 由于CAN通信协议不对节点进行地址编码,而是对数据内容进行编码,所以网络中的节点个数理论上不受限制,只要总线的负载足够即可,还可以通过中继器增强负载量。

3)收发数据

  1. 当CAN节点需要发送数据时,控制器把要发送的二进制编码通过CAN_Tx线发送到收发器,然后由收发器把这个普通的逻辑电平转化为差分信号,通过差分线CAN_High和CAN_Low线输出到CAN总线网络。
    在这里插入图片描述
  2. 而通过收发器接收总线上的数据到控制器时,则是相反的过程,收发器把总线上收到的CAN_High及CAN_Low信号转化为普通的逻辑电平信号,通过CAN_Rx输出到控制器中。
    在这里插入图片描述

4)半双工通信

  • 由于CAN总线协议的物理层只有1对差分线,在一个时刻只能表示一个信号,所以对通信节点来说,CAN通讯是半双工的,收发数据需要分时进行。
  • 在CAN的通讯网络中,因为共用总线,在整个网络中同一时刻只能有一个通讯节点发送信号,其余的节点在该时刻都只能接收。

二. CAN总线历史

CAN总线的发展历史大致可以分为下面的四个阶段。

年份事件
1986年博世公司开发出CAN通信协议
1993年ISO发布CAN标准ISO11898及ISO11519
2011年博世公司开发出CAN FD
2024年CAN已经发展成为了汽车网络的标准协议

三. CAN总线通信速率

CAN种类参照标准通信速率通信长度
低速CANISO1151910~125kbps总线长度可达1000米
高速CANISO11898125kbps~1Mbps总线长度 <= 40米
CAN FDISO11898-15Mbps同经典CAN
  • 高速CAN也称为经典CAN。

四. CAN的特点

  1. 每个设备都可以主动发送数据,没有了主从设备的概念;
  2. 没有类似地址的信息,添加设备不改变原有总线的状态,增加了柔软性;
  3. CAN总线协议已广泛应用在汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。

1)多主控制

  • 总线空闲时,所有单元都可发送消息,而两个以上的单元同时发送消息时,根据标识符(ID, 非地址)决定优先级。
  • 两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。
  • 仲裁获胜(优先级最高)的单元可继续发送消息,仲裁失利的单元则立即停止发送而进行接收工作。

2)开闭环总线

  • 闭环通讯网络是一种高速、短距离网络,它的总线最大长度为40m,通信速度最高1Mbps,总线的两端各需要一个120Ω的电阻;
    在这里插入图片描述
  • 开环总线网络是低速、远距离网络,它的最大传输距离1km,最高通讯速率为125kbps,两根总线是独立的、不形成闭环,要求每根总线上各需要串联一个2.2kΩ的电阻。
    在这里插入图片描述

3)安全性

  • 具有错误检测/错误通知和错误恢复功能

4)故障封闭功能

  • CAN可以判断出错误的类型是总线上数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生次序数据错误时,可将引起此故障的单元从总线上隔离出去。

5)连接节点多

  • CAN总线上可以挂载多个通讯节点,节点之间的信号经过总线传输,实现节点间通信

五. 物理层特征

  1. CAN是一种异步通信,CAN_High和CAN_Low两条信号线构成一组差分信号线,以差分信号的形式进行通讯。
  2. CAN控制器根据CAN_L和CAN_H的电位差来判断总线电平。总线电平分为显性电平和隐性电平。
  3. 显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。

1)显性电平

  • 逻辑0,用于表示CAN总线上的某个节点正在发送数据;
  • 当总线上有一个或多个节点发送显性电平时,总线状态被置为显性电平。
  • CAN_High的电平通常为3.5V,CAN_Low的电平通常为1.5V,相差2V左右;
    在这里插入图片描述

2)隐性电平

  • 逻辑1,用于表示CAN总线处于空闲状态,没有节点发送数据。
  • 当总线上所有节点都停止发送数据或发送隐性电平时,总线状态被置为隐性电平。
  • CAN_High和CAN_Low线上的电压均为2.5V,相差0V。

六. CAN收发器芯片介绍

  • (1)CAN收发器芯片常见有:TJA1050、TJA1042、SIT1050T。
  • (2)收发器芯片原理图:
    在这里插入图片描述

(3)CAN芯片引脚介绍

引脚功能
D接STM32 CAN_TX,CAN发送引脚
GND接地
VCC该芯片工作电压为5V
R接STM32 CAN_RX,CAN接收引脚
RS高速/静音模式选择(低电平为高速)
CANH高电位CAN电压输入输出端
CANL低电位CAN电压输入输出端
Vref参考电压输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解并打败C语言难关之一————指针(5)(最终篇)

前言&#xff1a; 仔细一想&#xff0c;小编已经把指针的大部分内容都说了一遍了&#xff0c;小编目前有点灵感枯竭了&#xff0c;今天决定就结束指针这一大山&#xff0c;可能很多小编并没有提到过&#xff0c;如果有些没说的小编会在后续博客进行补充道&#xff0c;不多废话了…

电脑桌面图标大小怎么调整?多种方法图文教程【全】

随着数字化生活的深入&#xff0c;电脑桌面图标的大小调整成为了我们日常使用中经常需要面对的问题。无论是为了更清晰地查看文件内容&#xff0c;还是为了美化桌面布局&#xff0c;掌握调整图标大小的方法都显得尤为重要。电脑桌面图标大小怎么调整&#xff1f;本文将为您提供…

LVGL开发教程-按钮Button

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 1. 普通Button 2.可选中Button 3.按钮事件处理 总结 前言 在图形用户界面&#xff08;GUI&#xff09;开发中&#xff0c;按钮&#xff08;Button&#xff09;是用户与程序交互的重要组件之一…

面向龙芯LoongArch平台的AMD GPU补丁解决了一个“巨大平台错误“

本周一Linux内核社区发布了一组补丁&#xff0c;旨在让老旧的 AMD Radeon GFX7/GFX8 时代图形处理器在龙芯LoongArch平台上运行。这些在Loongson平台上处理老旧Radeon Hawaii~Polaris GPU的补丁指出了这些中国计算系统的一个"巨大的平台错误"。 AMDGPU 和 Radeon 内核…

揭秘与应对:一打开移动硬盘就提示格式化的深度解析

在日常的数据存储与交换中&#xff0c;移动硬盘因其便携性和大容量而备受青睐。然而&#xff0c;有时我们可能会遇到一种令人困扰的现象&#xff1a;当试图打开移动硬盘时&#xff0c;系统会弹出一个警告窗口&#xff0c;提示“磁盘未被格式化&#xff0c;是否现在格式化&#…

跨境电商打造高效运营:自养号测评系统的五大优势

在当前的跨境电商行业&#xff0c;测评作为提升产品排名和促进销售的关键策略&#xff0c;其重要性日益凸显。为了在竞争激烈的市场中获得优势&#xff0c;卖家需要运用自养号测评系统等工具&#xff0c;以实现更高效的运营和更佳的业绩。 自养号测评系统具备多方面的优势&…

Python酷库之旅-比翼双飞情侣库(15)

目录 一、xlrd库的由来 二、xlrd库优缺点 1、优点 1-1、支持多种Excel文件格式 1-2、高效性 1-3、开源性 1-4、简单易用 1-5、良好的兼容性 2、缺点 2-1、对.xlsx格式支持有限 2-2、功能相对单一 2-3、更新和维护频率低 2-4、依赖外部资源 三、xlrd库的版本说明 …

hugging face:大模型时代的github介绍

1. Hugging Face是什么&#xff1a; Hugging Face大模型时代的“github”&#xff0c;很多人有个这样的认知&#xff0c;但是我觉得不完全准确&#xff0c;他们相似的地方在于资源丰富&#xff0c;github有各种各样的软件代码和示例&#xff0c;但是它不是系统的&#xff0c;没…

数据库 |试卷1试卷2

1.数据库语言四大语句 4.四大类&#xff08;DDL、DML、DQL、DCL&#xff09;_中度ddl-CSDN博客 数据定义&#xff08;data defination language&#xff09; 查询、创建、删除、使用 #查询所有数据库 show databases;#查询当前数据库 select database();#创建数据库 create …

利用DeepFlow解决APISIX故障诊断中的方向偏差问题

概要&#xff1a;随着APISIX作为IT应用系统入口的普及&#xff0c;其故障定位能力的不足导致了在业务故障诊断中&#xff0c;APISIX常常成为首要的“嫌疑对象”。这不仅导致了“兴师动众”式的资源投入&#xff0c;还可能使诊断方向“背道而驰”&#xff0c;从而导致业务故障“…

【CT】LeetCode手撕—46. 全排列

目录 题目1- 思路2- 实现⭐46. 全排列——题解思路 3- ACM实现 题目 原题连接&#xff1a;46. 全排列 1- 思路 模式识别 模式1&#xff1a;不含重复数字的数组 nums ——> 任意顺序 可能的全排列 ——> 回溯模式2&#xff1a;全排列 ——> 排列问题&#xff0c;不同…

PLC通过Profibus协议转Modbus协议网关接LED大屏通讯

一、背景 Modbus协议和Profibus协议是两种常用于工业控制系统的通信协议&#xff0c;它们在自动化领域中起着重要的作用。Modbus是一种串行通信协议&#xff0c;被广泛应用于各种设备之间的通信&#xff0c;如传感器、执行器、PLC等。而Profibus则是一种现场总线通信协议&…

可以把 FolkMQ 内嵌到 SpringBoot3 项目里(可内嵌的消息中间件)

之前发了《把 FolkMQ 内嵌到 SpringBoot2 项目里&#xff08;比如 “诺依” 啊&#xff09;》。有人说都淘态了&#xff0c;有什么好内嵌的。。。所以再发个 SpringBoot3 FolkMQ 是一个 “纯血国产” 的消息中间件。支持内嵌、单机、集群、多重集群等多种部署方式。 内嵌版&am…

SysTools MailXaminer: 电子邮件取证调查中的链接分析和时间线分析

天津鸿萌科贸发展有限公司是 SysTools 系列软件的授权代理商。 SysTools MailXaminer 电子邮件取证软件提供全面强大的解决方案&#xff0c;通过简化的操作&#xff0c;从电子邮件客户端、网络邮箱服务器、磁盘镜像、Skype 通讯工具中解密并搜索证据。软件对调查工作的每一阶段…

volatile原理

volatile内存语义 volatile是java提供的一种轻量级的同步机制&#xff0c;在并发编程中&#xff0c;它也扮演着比较重要的角色。一方面volatile不会造成上下文切换的开销&#xff0c;另一方面它又不能像synchronized那样保证所有场景下线程安全&#xff0c;因此必须在合适的场…

滑动窗口练习1-长度最小的子数组

1.题目链接&#xff1a;209.长度最小的子数组 2.题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条…

【C++】#20,#21

#20类和对象 #include <iostream>using namespace std;class Box{public: //公有 double length; //ctrle复制本行 double width;double height;void getVolume(){ //方法带&#xff08;&#xff09; cout<<"盒子体积为&#xff1a;"<<le…

聊聊redis中的有序集合

写在文章开头 有序集合(sorted set)是redis中比较常见的数据库结构&#xff0c;它不仅支持O(logN)界别的有序的范围查询&#xff0c;同时也支持O(1)级别的单元素查询&#xff0c;基于此问题&#xff0c;本文就将从redis源码的角度分析一下有序集合的设计与实现。 Hi&#xff0…

黄仁勋最新对话:未来互联网流量将大幅减少,计算将更多即时生成

黄仁勋表示&#xff0c;未来随着设备上运行的小语言模型变得更加上下文化和生成化&#xff0c;互联网流量将大幅减少&#xff0c;计算将更多地即时生成&#xff0c;这将极大地节省能源&#xff0c;使计算模型发生根本性转变。 要点 1、黄仁勋强调生成式AI正以指数速度增长&…

C++ 65 之 模版的局限性

#include <iostream> #include <cstring> using namespace std;class Students05{ public:string m_name;int m_age;Students05(string name, int age){this->m_name name;this->m_name age;} };// 两个值进行对比的函数 template<typename T> bool …