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、标准帧与扩展帧

在这里插入图片描述

总结:不论标准帧与扩展帧进行对比,还是数据帧与遥控帧对比。他们的仲裁结果都是按照上面的仲裁规则而得出的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx 配置域名前缀访问 react 项目

说明一下&#xff1a;我是使用域名转发访问的&#xff0c;访问流程如下&#xff1a; 浏览器 》 服务器1 》 服务器2 由于服务器1已经为 https 的访问方式做了 ssl 证书等相关配置&#xff0c;然后转发到服务器2&#xff0c; 所以在服务器2中不需要再配置 ssl 证书相关的东西了&…

Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)

我是一个计算机专业研0的学生卡蒙Camel&#x1f42b;&#x1f42b;&#x1f42b;&#xff08;刚保研&#xff09; 记录每天学习过程&#xff08;主要学习Java、python、人工智能&#xff09;&#xff0c;总结知识点&#xff08;内容来自&#xff1a;自我总结网上借鉴&#xff0…

Web3与加密技术的结合:增强个人隐私保护的未来趋势

随着互联网的快速发展&#xff0c;个人隐私和数据安全问题越来越受到关注。Web3作为新一代互联网架构&#xff0c;凭借其去中心化的特性&#xff0c;为个人隐私保护提供了全新的解决方案。而加密技术则是Web3的重要组成部分&#xff0c;进一步增强了隐私保护的能力。本文将探讨…

ElasticSearch下

DSL查询 叶子查询&#xff1a;在特定字段里查询特定值&#xff0c;属于简单查询&#xff0c;很少单独使用复合查询&#xff1a;以逻辑方式组合多个叶子查询或更改叶子查询的行为方式 在查询后还可以对查询结果做处理&#xff1a; 排序&#xff1a;按照1个或多个字段做排序分页…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)

在开发一款影视APP时&#xff0c;首页的轮播图是一个非常重要的部分。它不仅能够吸引用户的注意力&#xff0c;还能有效地推广重点内容。为了提升应用的性能和用户体验&#xff0c;可以实现轮播图的懒加载功能。本文将详细介绍如何在HarmonyOS NEXT应用开发中实现这一功能。 1.…

GraphRAG如何使用ollama提供的llm model 和Embedding model服务构建本地知识库

使用GraphRAG踩坑无数 在GraphRAG的使用过程中将需要踩的坑都踩了一遍&#xff08;不得不吐槽下&#xff0c;官方代码有很多遗留问题&#xff0c;他们自己也承认工作重心在算法的优化而不是各种模型和框架的兼容性适配性上&#xff09;&#xff0c;经过了大量的查阅各种资料以…

Jupyter notebook中运行dos指令运行方法

Jupyter notebook中运行dos指令运行方法 目录 Jupyter notebook中运行dos指令运行方法一、DOS(磁盘操作系统&#xff09;指令介绍1.1 DOS介绍1.2 DOS指令1.2.1 DIR - 显示当前目录下的文件和子目录列表。1.2.2 CD 或 CHDIR - 改变当前目录1.2.3 使用 CD .. 可以返回上一级目录1…

Oracle报错ORA-01078、LRM-00109

虚拟机异常关机后&#xff0c;rac数据库备机无法启动数据库&#xff0c;报错如下 解决方法&#xff1a; 找到如下路径文件 执行&#xff1a; cp init.ora.016202516818 /u01/app/oracle/product/19.3.0/db/dbs/ mv init.ora.016202516818 initplm2.ora 再次进入命令行sqlpl…

AAPM:基于大型语言模型代理的资产定价模型,夏普比率提高9.6%

“AAPM: Large Language Model Agent-based Asset Pricing Models” 论文地址&#xff1a;https://arxiv.org/pdf/2409.17266v1 Github地址&#xff1a;https://github.com/chengjunyan1/AAPM 摘要 这篇文章介绍了一种利用LLM代理的资产定价模型&#xff08;AAPM&#xff09;…

大疆发布可折叠航拍无人机,仅重249g,支持 4800 万像素拍摄

在以往的无人机使用经历中&#xff0c;携带不便一直是个让人头疼不已的问题。那些体积硕大的无人机&#xff0c;每次出行都像是一场艰难的搬运&#xff0c;塞进车里都费劲&#xff0c;更别提轻松地穿梭在城市街头或是户外探险中了。但就在大家对这些问题习以为常、感到无奈时&a…

无公网IP 实现外网访问本地 Docker 部署 Navidrome

Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用&#xff0c;它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…

从 SQL 语句到数据库操作

1. SQL 语句分类 数据定义语言 DDL &#xff1a; 用于定义或修改数据库中的结构&#xff0c;如&#xff1a;创建、修改、删除数据库对象。create、drop alter 数据操作语言 DML &#xff1a; 用于添加、删除、更新数据库中的数据。select、insert alter、drop 数据控制语言 D…

leetcode hot100(2)

11.200.岛屿数量 本题是图论中经典的连通分量问题&#xff0c;可以用bfs/dfs解决。 class Solution {int[][] directions new int[][]{{-1,0},{0,-1},{1,0},{0,1}};public int numIslands(char[][] grid) {boolean visited[][] new boolean[grid.length][grid[0].length];i…

Kafka权威指南(第2版)读书笔记

目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息异步发送消息 生产者配置client.idacks消息传递时间max.block.msdelivery.timeout.msrequest.timeout.msretries 和retry.backoff.…

虚拟拨号技术(GOIP|VOIP)【基于IP的语音传输转换给不法分子的境外来电披上一层外衣】: Voice over Internet Protocol

文章目录 引言I 虚拟拨号技术(GOIP|VOIP)原理特性:隐蔽性和欺骗性II “GOIP”设备原理主要功能III 基于IP的语音传输 “VOIP” (Voice over Internet Protocol)IV “断卡行动”“断卡行动”目的电信运营商为打击电诈的工作V 知识扩展虚拟号保护隐私虚拟运营商被用于拨打骚扰…

MySQL 事务

目录 一、什么是事务 二、事务的特性 三、事务使用案例 四、事务并发问题 五、设置事务的隔离级别&#xff08;解决读的问题&#xff09; 一、什么是事务 MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除…

基于Oracle与PyQt6的电子病历多模态大模型图形化查询系统编程构建

一、引言 1.1 研究背景阐述 在当今数字化时代,医疗行业正经历着深刻的变革,数字化转型的需求日益迫切。电子病历(EMR)作为医疗信息化的核心,其管理的高效性和数据利用的深度对于提升医疗服务质量、优化临床决策以及推动医学研究具有至关重要的意义。传统的电子病历管理系…

强化学习-蒙特卡洛方法

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法 文章目录 强化学习-数学理论一、蒙特卡洛方法理论(Monte Carlo, MC)二、MC Basic2.1 算法拆解2.2 MC Basic算法 三、MC Exploring Starts3.1 …

Harmony面试模版

1. 自我介绍 看表达能力、沟通能力 面试记录&#xff1a; 2. 进一步挖掘 2.1. 现状 目前是在职还是离职&#xff0c;如果离职&#xff0c;从上一家公司离职的原因 2.2. 项目经验 如果自我介绍工作项目经验讲的不够清楚&#xff0c;可以根据简历上的信息再进一步了解 面试记…

eBay账号安全攻略:巧妙应对风险

在跨境电商的浪潮中&#xff0c;eBay宛如一座璀璨的灯塔&#xff0c;照亮了无数买卖双方的交易之路。但别忘了&#xff0c;网络安全的阴霾也在悄然蔓延&#xff0c;让eBay账号时刻处于黑客攻击、数据泄露、钓鱼诈骗等风险的阴影之下。别担心&#xff0c;今天就来为你支支招&…