28:CAN总线入门一:CAN的基本介绍
CAN总线入门
- 1、CAN总线简介和硬件电路
- 1.1、CAN简要介绍
- 1.2、硬件电路
- 1.3、CAN总线的电平标准
- 2、帧格式
- 2.1、数据帧(掌握)
- 2.2、遥控帧(掌握)
- 2.3、错误帧(了解)
- 2.4、过载帧(了解)
- 2.5、帧间隔(了解)
- 2.6、位填充(掌握)
- 3、位同步
- 3.1、硬同步
- 3.2、再同步
- 4、仲裁
- 4.1、先占先得
- 4.2、非破坏性仲裁
- 4.3、数据帧与遥控帧
- 4.4、标准帧与扩展帧
1、CAN总线简介和硬件电路
1.1、CAN简要介绍
CAN总线是一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域。
-
总线的特点:
两根通信线(CAN_H、CAN_L),线路少 差分信号通信,抗干扰能力强 高速CAN(ISO11898):125k~1Mbps, <40m 低速CAN(ISO11519):10k~125kbps, <1km 异步,无需时钟线,通信速率由设备各自约定 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序 11位/29位报文ID,用于区分消息功能,同时决定优先级 可配置1~8字节的有效载荷 可实现广播式和请求式两种传输方式 应答、CRC校验、位填充、位同步、错误处理等特性
1.2、硬件电路
-
连接节点


单片机将数据信号(0/1)通过TX传输到CAN收发器,收发器将传输来的信号进行判断处理成差分信号电压差,逻辑1和逻辑0的差分信号电压差是不同的,然后减差分信号传输到CAN总线上。 -
高速CAN

如上图所示:
①每个设备通过CAN收发器挂载在CAN总线网络上
②CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的
③CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连
④高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻
⑤单片机将数据信号(0/1)通过TX传输到CAN收发器,收发器将传输来的信号进行处理成差分信号,然后传输到CAN总线上
⑥高速CAN的数传输速率快,但是传输的距离断,最远只有40m -
低速CAN

如上图所示:
①低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻
②低速CAN的数据传输慢,但是传输的距离远,可以传输1km
1.3、CAN总线的电平标准
单片机将数据信号(0/1)通过TX传输到CAN收发器,收发器将传输来的信号进行处理成差分信号,然后传输到CAN总线上。而这差分信号即2线上面的电压差(Vcan_H - Vcan_L)。传输规定:若Vcan_H - Vcan_L 小于等于0,就代表总线上为逻辑电平1;若Vcan_H - Vcan_L 大于0,就代表总线上为逻辑电平0;
如下图所示:


为什么CAN总线使用的是差分信号喃?
最主要的原因就是抗干扰的能力强,传统的传输使用的是单端信号:一根信号线和一根地线,比如串口通信UART。信号线对比地线的电压来传输逻辑电平是1还是0,比如对比地线电压是3.3v,那么传输的信号是逻辑1,对比地线电压是0v,那么传输的信号是逻辑0。若在传输的过程中被电磁信号干扰由0v变为3.3v,发送端发送的是逻辑0,而接收端接收的是被干扰后的逻辑1。而CAN总线采用差分信号就是为了避免这种干扰。
例如下图所示:

如图所示:虽然存在干扰信号,但是干扰使得Vcan_H和Vcan_L的电平增量是一样大的,而逻辑电平是由他们的电压差决定的,所以干扰后,他们的电压差是不变的,即逻辑电平也是不变的。(前提是差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线)
2、帧格式
1、CAN总线是广播类型的总线。这意味着所有节点都可以侦听到所有传输的报文。无法将报文单独发送给指定节点;所有节点都将始终捕获所有报文。但是CAN硬件能够提供本地过滤功能,让每个节点对报文有选择性地做出响应。
2、CAN总线上有5种不同的报文类型(或“帧”):数据帧,远程帧,错误帧,过载帧和帧间隔。其中错误帧、过载帧、帧间隔都是由硬件自动完成的,没有办法用软件来控制。对于一般使用者来说,只需要掌握数据帧与遥控帧。数据帧和遥控帧有标准格式与扩展格式。标准格式有11位标识符,扩展格式有29位标识符。

2.1、数据帧(掌握)
数据帧由2中帧格式:标准帧和扩展帧
- 标准帧

- 扩展帧
SRR位代替RTR位,因为RTR挪到后面去了,SRR为隐形1
IDE位用于区分标准帧和扩展帧,若为扩展帧,则IED为隐形1
和标准帧进行对比,扩展帧多了SRR,ID多了7位,R1,R0。
数据帧总结如下:

2.2、遥控帧(掌握)

2.3、错误帧(了解)
总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备

2.4、过载帧(了解)
当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失

发送6位显性电平0拉开电位,让发送方发送不了数据到CAN总线上面,主要延缓了发送方的数据发送
2.5、帧间隔(了解)
将数据帧和遥控帧与前面的帧分离开,即连续发送的数据帧之间有帧间隔。
2.6、位填充(掌握)

3、位同步
位时序:为了灵活调整每个采样点的位置,使采样点对齐数据位中心附近,CAN总线对每一个数据位的时长进行了更细的划分,分为同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每个段又由若干个最小时间单位(Tq)构成。

3.1、硬同步
每个设备都有一个位时序计时钟秒表,秒表一圈的时间正好也是一位数据的发送时间,而秒表的时钟也被分为和数据位相同的4个区域。发送设备每发送一位数据,秒表也正好转动一圈,并且数据位的每一段和秒表的时区一一对应。如下图所示:

当某个设备(发送方)率先发送报文,其他所有设备(接收方)收到SOF的下降沿时,接收方会将自己的位时序计时周期拨到SS段的中间位置,秒表时区与数据位的每段保持同步。

接收设备是看这个秒表进行对数据采样的,每当秒表的秒钟指向PBS1和PBS2时间段之间,设备就开始对数据位采样一次,如果数据位与秒表时区段对齐了,那么每次采样都是准确的数据位。若数据位与时区没有对齐,那么可能采样的数据不准确。如下图所示:

如果没有对齐,如上图所示:若接收设备接收到数据位的PBS1时,设备秒表却指向SS,当再过5.5个Tq时间后,设备接收到正好是数据位的变化,而设备秒表却指向了PBS1和PBS2之间,此时正好是采样时间,所以此时采样到的是电平跳变,那么采样到的数据是0还是1喃?这不能确定,所以这存在着很大的误差。
3.2、再同步
若发送方或接收方的时钟有误差,随着误差积累,数据位边沿逐渐偏离SS段,则此时接收方根据再同步补偿宽度值(SJW=1~4Tq)通过加长PBS1段,或缩短PBS2段,以调整同步。例如接收设备的秒表指针转动慢一些,当接收设备接收到下一位数据的跳变边沿时,设备秒表的秒钟却还没有指向SS中心。如下图所示:

想要解决这种误差,那么就将PBS2缩短即可,缩短到秒针正好指向SS中心。
4、仲裁
CAN总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据,若多个设备同时有发送需求,该如何分配总线资源?解决的方法是1、先占先得。2、非破坏性仲裁。
4.1、先占先得

4.2、非破坏性仲裁

当2个设备同时给总线发送数据时,都发送的是标准帧格式,那么通过仲裁段的数据来判断谁能成为赢家。如下图所示:

4.3、数据帧与遥控帧

4.4、标准帧与扩展帧

总结:不论标准帧与扩展帧进行对比,还是数据帧与遥控帧对比。他们的仲裁结果都是按照上面的仲裁规则而得出的。
相关文章:
28:CAN总线入门一:CAN的基本介绍
CAN总线入门 1、CAN总线简介和硬件电路1.1、CAN简要介绍1.2、硬件电路1.3、CAN总线的电平标准 2、帧格式2.1、数据帧(掌握)2.2、遥控帧(掌握)2.3、错误帧(了解)2.4、过载帧(了解)2.5…...
RK3568平台(音频篇)lineout无声调试
一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…...
ros2-7.5 做一个自动巡检机器人
7.5.1 需求及设计 又到了小鱼老师带着做最佳实践项目了。需求:做一个在各个房间不断巡逻并记录图像的机器人。 到达目标点后首先通过语音播放到达目标点信息, 再通过摄像头拍摄一张图片保存到本地。 7.5.2 编写巡检控制节点 在chapt7_ws/src下新建功…...
服务器下发任务镭速利用变量实现高效的大文件传输效率
在分布式系统和自动化部署场景中,任务下发往往伴随着大量的文件传输需求。为了提高文件传输的效率,本文将介绍如何巧妙地利用变量来优化任务下发过程中的文件传输。我们将介绍几种方法,通过合理利用变量来减少传输负担、提升传输速度…...
本地用docker装mysql
目录 拉取镜像查看镜像 启动容器查看运行中的容器连接到 MySQL 容器其他一些操作 装WorkBench链接mysql——————————————允许远程登录MySql 拉取镜像 docker pull mysql查看镜像 docker image lsREPOSITORY TAG IMAGE ID CREATED SIZE mysq…...
前端canvas对象转成file对象
import html2canvas from html2canvasexport default {methods: {//canvas对象转成file对象canvasToFile() {html2canvas(this.$parent.$refs[mapPanel].$el,{width: this.$parent.$refs[mapPanel].$el.clientWidth - 600// height:}).then(canvas > {const base64Data can…...
mermaid大全(语法、流程图、时序图、甘特图、饼图、用户旅行图、类图)
⚠️ 有些网站的mermaid可能不完整,因此下面教程中可能有些语法是无效的。 😊亲测Typora软件均可以显示。 1. 介绍 Mermaid是一个基于JavaScript的图表绘制工具,它使用类似Markdown的语法来创建和修改各种类型的图表。以下是关于Mermaid的详…...
运行fastGPT 第四步 配置ONE API 添加模型
上次已经装好了所有的依赖和程序。 下面在网页中配置One API ,这个是大模型的接口。配置好了之后,就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台,**默认账号…...
Spring Initializr创建springboot项目 “java: 错误: 无效的源发行版:19”
我用的1.8的jdk,排查发现这是jdk和springboot版本冲突导致的。 1、File->Project Structure->Project Settings->Project,把language level改成相应的版本 2、File->Project Structure->Module,source和dependancies改成相应的版本 3、F…...
Java IDEA中Gutter Icons图标的含义
前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 前言: 很多人刚开始用IDEA来学习编程,会发现下面这些图标。 但是…...
如何进行域名跳转与域名重定向的综合指南
文章摘取于 Dynadot官方博客内容。 在访问一些商业网站时,我们通常会发现这些平台会将多个域名都指向到同一个内容界面。当然,也存在网站迁移到新域名,旧域名则指向新域名以及其内容页面的情况。 这两者实际上都属于域名跳转的范畴ÿ…...
YOLOv10-1.1部分代码阅读笔记-build.py
build.py ultralytics\data\build.py 目录 build.py 1.所需的库和模块 2.class InfiniteDataLoader(dataloader.DataLoader): 3.class _RepeatSampler: 4.def seed_worker(worker_id): 5.def build_yolo_dataset(cfg, img_path, batch, data, mode"train"…...
redux 结合 @reduxjs/toolkit 的使用
1,使用步骤 使用React Toolkit 创建 counterStore(store目录下) --> 为React注入store(src下面的index) --> React组件使用store中的数据(组件) 2,例如下面有一个简单加减的…...
tui-editor报错
原因: 原先的tui-editor插件(富文本编辑器插件)换了个名称,现在已经更名为toast-ui/editor因此安装不了,从而报错! 解决: 1.首先将package.json中的tui-editor那一行修改为 "toast-ui/…...
运行fastGPT 第二步 安装宝塔面板 用于管理安装docker和其文件
if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec 上面运行以下,安装宝塔。如果不行,系…...
常见好用的PHP CMS开源系统有哪些?
开源的系统,网站大家估计也见过很多,尤其是用PHP写的开源系统也很受用户们欢迎,这类系统通常以简单、使用、开源为优势,为用户提供更好的服务。以下就为大家介绍几个常见且好用的PHP CMS开源系统。欢迎补充! 1、WordP…...
【排错记录】免密、nginx、cgroup、sshd
1、免密登录回显很慢。 现象: 免密登录超级慢,而且巡检脚本跑不起来 解决: vi /etc/ssh/sshd_configGSSAPIAuthentication no UseDNS nosystemctl restart sshd2、nginx服务起不来 现象: Redirecting to /bin/systemctl rest…...
浅谈云计算19 | OpenStack管理模块 (上)
OpenStack管理模块(上) 一、操作界面管理架构二、认证管理2.1 定义与作用2.2 认证原理与流程2.2.1 认证机制原理2.2.2 用户认证流程 三、镜像管理3.1 定义与功能3.2 镜像服务架构3.3 工作原理与流程3.3.1 镜像存储原理3.3.2 镜像检索流程 四、计算管理4.…...
LabVIEW 程序中的 R6025 错误
R6025错误 通常是 运行时库 错误,特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现,尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 可能的原因: 内存访问冲突: R6025 错误通常是由于程序在运行时访问无效内…...
【认识油管头部频道】ep5 “5-Minute Crafts”——DIY 和生活技巧
5-Minute Crafts 是一个非常受欢迎的 DIY 和生活技巧频道,它的火爆有多方面的原因: 1. 简单实用的内容 视频主要以解决日常生活中遇到的小问题为主,提供简单易学的技巧,吸引了想快速获取实用知识的观众。 2. 短视频形式 每个视…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
