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

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、硬件电路

  1. 连接节点
    在这里插入图片描述在这里插入图片描述
    单片机将数据信号(0/1)通过TX传输到CAN收发器,收发器将传输来的信号进行判断处理成差分信号电压差,逻辑1和逻辑0的差分信号电压差是不同的,然后减差分信号传输到CAN总线上。

  2. 高速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

  3. 低速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中帧格式:标准帧和扩展帧

  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、数据帧&#xff08;掌握&#xff09;2.2、遥控帧&#xff08;掌握&#xff09;2.3、错误帧&#xff08;了解&#xff09;2.4、过载帧&#xff08;了解&#xff09;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 需求及设计 又到了小鱼老师带着做最佳实践项目了。需求&#xff1a;做一个在各个房间不断巡逻并记录图像的机器人。 到达目标点后首先通过语音播放到达目标点信息&#xff0c; 再通过摄像头拍摄一张图片保存到本地。 7.5.2 编写巡检控制节点 在chapt7_ws/src下新建功…...

服务器下发任务镭速利用变量实现高效的大文件传输效率

在分布式系统和自动化部署场景中&#xff0c;任务下发往往伴随着大量的文件传输需求。为了提高文件传输的效率&#xff0c;本文将介绍如何巧妙地利用变量来优化任务下发过程中的文件传输。我们将介绍几种方法&#xff0c;通过合理利用变量来减少传输负担、提升传输速度&#xf…...

本地用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可能不完整&#xff0c;因此下面教程中可能有些语法是无效的。 &#x1f60a;亲测Typora软件均可以显示。 1. 介绍 Mermaid是一个基于JavaScript的图表绘制工具&#xff0c;它使用类似Markdown的语法来创建和修改各种类型的图表。以下是关于Mermaid的详…...

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API &#xff0c;这个是大模型的接口。配置好了之后&#xff0c;就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台&#xff0c;**默认账号…...

Spring Initializr创建springboot项目 “java: 错误: 无效的源发行版:19”

我用的1.8的jdk&#xff0c;排查发现这是jdk和springboot版本冲突导致的。 1、File->Project Structure->Project Settings->Project,把language level改成相应的版本 2、File->Project Structure->Module&#xff0c;source和dependancies改成相应的版本 3、F…...

Java IDEA中Gutter Icons图标的含义

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 很多人刚开始用IDEA来学习编程&#xff0c;会发现下面这些图标。 但是…...

如何进行域名跳转与域名重定向的综合指南

文章摘取于 Dynadot官方博客内容。 在访问一些商业网站时&#xff0c;我们通常会发现这些平台会将多个域名都指向到同一个内容界面。当然&#xff0c;也存在网站迁移到新域名&#xff0c;旧域名则指向新域名以及其内容页面的情况。 这两者实际上都属于域名跳转的范畴&#xff…...

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&#xff0c;使用步骤 使用React Toolkit 创建 counterStore&#xff08;store目录下&#xff09; --> 为React注入store&#xff08;src下面的index&#xff09; --> React组件使用store中的数据&#xff08;组件&#xff09; 2&#xff0c;例如下面有一个简单加减的…...

tui-editor报错

原因&#xff1a; 原先的tui-editor插件&#xff08;富文本编辑器插件&#xff09;换了个名称&#xff0c;现在已经更名为toast-ui/editor因此安装不了&#xff0c;从而报错&#xff01; 解决&#xff1a; 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 上面运行以下&#xff0c;安装宝塔。如果不行&#xff0c;系…...

常见好用的PHP CMS开源系统有哪些?

开源的系统&#xff0c;网站大家估计也见过很多&#xff0c;尤其是用PHP写的开源系统也很受用户们欢迎&#xff0c;这类系统通常以简单、使用、开源为优势&#xff0c;为用户提供更好的服务。以下就为大家介绍几个常见且好用的PHP CMS开源系统。欢迎补充&#xff01; 1、WordP…...

【排错记录】免密、nginx、cgroup、sshd

1、免密登录回显很慢。 现象&#xff1a; 免密登录超级慢&#xff0c;而且巡检脚本跑不起来 解决&#xff1a; vi /etc/ssh/sshd_configGSSAPIAuthentication no UseDNS nosystemctl restart sshd2、nginx服务起不来 现象&#xff1a; Redirecting to /bin/systemctl rest…...

浅谈云计算19 | OpenStack管理模块 (上)

OpenStack管理模块&#xff08;上&#xff09; 一、操作界面管理架构二、认证管理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错误 通常是 运行时库 错误&#xff0c;特别是与 C 运行时库 相关。这种错误通常会在程序运行时出现&#xff0c;尤其是在使用 C 编译的程序或依赖 C 运行时库的程序时。 ​ 可能的原因&#xff1a; 内存访问冲突&#xff1a; R6025 错误通常是由于程序在运行时访问无效内…...

【认识油管头部频道】ep5 “5-Minute Crafts”——DIY 和生活技巧

5-Minute Crafts 是一个非常受欢迎的 DIY 和生活技巧频道&#xff0c;它的火爆有多方面的原因&#xff1a; 1. 简单实用的内容 视频主要以解决日常生活中遇到的小问题为主&#xff0c;提供简单易学的技巧&#xff0c;吸引了想快速获取实用知识的观众。 2. 短视频形式 每个视…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...