【图解CAN总线】-9-详述经典CAN和CANFD报文是如何收发的

news2024/12/22 7:34:53

目录

1 经典CAN/CANFD网络拓扑分解

2 CAN收发器“前后端的电平”

3 图解MCU芯片与CAN物理总线之间CAN报文收发过程

3.1 TX,RX和CAN H/L电平变化:ECU接收一个报文

3.2 TX,RX和CAN H/L电平变化:ECU发送一个报文

END


推荐阅读(单击下方文字即可跳转至对应博文):

Vector工具链

CAN Matrix DBC

CAN Matrix Arxml

CANFD/经典CAN/CANXL

1 经典CAN/CANFD网络拓扑分解

下图是一个多节点的CAN网络的拓扑图:多个ECU;双绞线(CAN H和CAN L,屏蔽层);两个120欧姆的终端电阻。

注意:一个CAN网络至少有2CAN节点,才能完成CAN网络的通信原因是一个节点发送的帧,需要其它节点去ACK。通过这张图你可以看出,一个ECU中集成了CAN控制器CAN收发器

下图是对一个ECU进一步分解。一个ECU在多个CAN网络中充当节点Node:

框图的最外层可以理解为ECU的PCB;CAN控制器在MCU芯片内部;MCU芯片CAN收发器集成在该PCB上(也有收发器集成在MCU内部的情况,本博文以CAN收发器外置为例展开)。

一个ECU中,一组CAN控制器CAN收发器的组合,称之为对应CAN网路中节点Node;一个ECU中,可能在多个CAN网络中担当“节点” 的角色。

MCU芯片和CAN收发器之间除了通过TXRX(单向通信)进行通信外,还有SPI(用于配置收发器的寄存器,以及一些状态的获取…),在上图中没有画出。汽车电子中,常用的收发器有TJA 1145和ATA 6570……

2 CAN收发器“前后端的电平”

CAN收发器的作用是负责将数字电平差分电平进行互转。

ECU发出的报文,通过MCU内部CAN控制器TX发出报文的0和1数字电平序列,经过CAN收发器转成CAN H和CAN L的差分电平;

ECU发出报文的回采,以及ECU接收的报文CAN收发器转换成0和1数字电平序列,通过RX发送给MCU内部的CAN控制器

CAN控制器与CAN收发器之间的TX从5V或者3.3V高电平变为0V低电平时,意味着CAN网络从隐性切换为显性ECU可能在此时开始发送报文(例如CAN帧的第一个SOF位),或者ECU对接收帧置ACK

CAN控制器与CAN收发器之间的RX从5V或者3.3V高电平变为0V低电平时,意味着CAN网络从隐性切换为显性CAN收发器可能在此时的回采ECU发出的CAN报文,或者接收其它ECU发出的帧

注意:通常CAN收发器是5V供电,而MCU有5V供电,也有3.3V供电。对于3.3V供电的MCU,需要在MCU与CAN收发器之间,额外增加一个电平转换芯片,以匹配收发器的电平。

CAN H和CAN L的差分信号的显性和隐性,详见“【图解CAN总线】-2-详述CAN总线电平https://blog.csdn.net/qfmzhu/article/details/122804817”。

3 图解MCU芯片与CAN物理总线之间CAN报文收发过程

通过前面两个章节的学习,TX,RX和CAN H/L电平关系如下图。

3.1 TX,RX和CAN H/L电平变化:ECU接收一个报文

ECU接收到一个0x599报文。接收帧的差分信号通过CAN控制器与CAN收发器之间的RX转换为0和1数字电平序列,于此同时ECU的CAN控制器通过TX为该接收帧置ACK,并通过CAN收发器回采。

3.2 TX,RX和CAN H/L电平变化:ECU发送一个报文

ECU发送到一个0x211报文。ECU的CAN控制器通过TX发出CAN报文的0和1数字电平序列(ACK位是隐性),再经过CAN收发器转换为差分信号;接着CAN收发器回采该发送报文:于此同时其它ECU对该报文置ACK(ACK位是显性),该发送报文的差分信号再由CAN收发器回采,转换为数字电平,并通过RX给到MCU的CAN控制器

推荐阅读(单击下方文字即可跳转至对应博文):

《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

《Autosar_BSW高阶配置》总目录_培训教程持续更新中...

《Autosar_MCAL高阶配置》总目录_培训教程持续更新中...

END

获取更多“汽车电子资讯”和“工具链使用”,

请关注“汽车电子助手”,做您的好助cc

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

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

相关文章

【LeetCode】48.旋转图像

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]…

OPC通信从入门到精通_1_OPC基础知识及简单C#程序编写(OPCDA,OPCUA简介;OPC通信数据流框架图;C#程序编写)

文章目录 1. OPC基础知识:OPCDA,OPCUA1.1 OPC基础知识1.2 OPC通信读写方式 2. OPC通信仿真2.1 上位机与PLC通过ModbusTCP直接通信2.2 OPC通信介绍及实例2.2.1 OPC通信与ModbusTCP比较2.2.2 OPC通信应用场景2.2.3 OPC DA通信仿真实例2.2.4 OPC UA通信仿真…

随手笔记——3D−3D:ICP理论

随手笔记——3D−3D:ICP理论 说明SVD 方法非线性优化方法 说明 ICP 的求解也分为两种方式:利用线性代数的求解(主要是 SVD),以及利用非线性优化方式的求解(类似于 Bundle Adjustment)。 SVD 方…

Android平台GB28181设备接入模块之按需编码和双码流编码

技术背景 我们在做执法记录仪或指挥系统的时候,会遇到这样的情况,大多场景下,我们是不需要把设备端的数据,实时传给国标平台端的,默认只需要本地录像留底,如果指挥中心需要查看前端设备实时数据的时候&…

【LeetCode热题100】打卡第44天:倒数第30~25题

文章目录 【LeetCode热题100】打卡第44天:倒数第30~25题⛅前言 移动零🔒题目🔑题解 寻找重复数🔒题目🔑题解 二叉树的序列化与反序列化🔒题目🔑题解 最长递增子序列🔒题目&#x1f5…

力扣 763. 划分字母区间

题目来源&#xff1a;https://leetcode.cn/problems/partition-labels/description/ C题解1&#xff1a; 先遍历一遍使用哈希算法找到每个小写字母的最远的索引&#xff0c;再遍历一次&#xff0c;不断更新每个片段的最远距离。 class Solution { public:vector<int> pa…

Qt Core学习日记——第八天QMetaObject(下)

QMetaObject::normalizedType 将名称规范化。 例如&#xff1a; QByteArray normType QMetaObject::normalizedType(" int const *"); // normType is now "const int*" QMetaObject::connect(const QObject *sender, int signal_index, const QObject…

redis(12):springboot使用redis注解做缓存

1 新建springboot项目 2 相关注解 EnableCaching 在启动类上加上注解启动缓存 #作用在你要缓存的数据上 Cacheable(key"#id",cacheNames"com.sxt.service.impl.MenuServiceImpl") Cacheput 解决脏读 CachEvict&#xff08;解决脏读&#xff09; Cach…

01Mybatis报错日志 BindingException

01 Mybatis报错日志 BindingException Type interface com.zhnx.demo1.mapper.UserMapper is not known to the MapperRegistry. org.apache.ibatis.binding.BindingException: Type interface com.zhnx.demo1.mapper.UserMapper is not known to the MapperRegistry.at org…

腾讯云服务器公共镜像大全_Linux和Windows操作系统

腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像&#xff0c;公共镜像包含基础操作系统和腾讯云提供的初始化组件&#xff0c;公共镜像分为Windows和Linux两大类操作系统&#xff0c;如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…

LeetCode116. 填充每个节点的下一个右侧节点指针

116. 填充每个节点的下一个右侧节点指针 文章目录 [116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/)一、题目二、题解方法一&#xff1a;迭代方法二&#xff1a;递归 一、题目 给定一个 完美二叉树 &…

redis的并发安全问题:redis的事务VSLua脚本

redis为什么会发生并发安全问题&#xff1f; 在redis中&#xff0c;处理的数据都在内存中&#xff0c;数据操作效率极高&#xff0c;单线程的情况下&#xff0c;qps轻松破10w。反而在使用多线程时&#xff0c;为了保证线程安全&#xff0c;采用了一些同步机制&#xff0c;以及多…

grid map学习笔记1之Ubuntu18.04+ROS-melodic编译安装grid_map栅格地图及示例运行

文章目录 0 引言1 安装依赖和编译1.1 安装依赖1.2 下载编译 2 运行示例2.1 simple_demo2.2 tutorial_demo2.3 iterators_demo2.4 image_to_gridmap_demo2.5 grid_map_to_image_demo2.6 opencv_demo2.7 resolution_change_demo2.8 filters_demo2.9 interpolation_demo 0 引言 苏…

java项目之个人交友网站(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的个人交友网站。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

计算机启动过程uefi+gpt方式

启动过程&#xff1a; 一、通电 按下开关&#xff0c;不用多说 二、uefi阶段 通电后&#xff0c;cpu第一条指令是执行uefi固件代码。 uefi固件代码固化在主板上的rom中。 &#xff08;一&#xff09;uefi介绍 UEFI&#xff0c;全称Unified Extensible Firmware Interface&am…

基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

最近在整理和编写基于C#的WinForm应用程序&#xff0c;然后碰到一个其他读者也可能碰到的问题&#xff0c;就是C#的Borderless无边框窗体的动画效果问题。 在Visual Studio 2022里&#xff0c;C#的WinForm程序提供了Borderless无边框窗体的样式效果&#xff0c;但是它没提供在无…

scrollIntoView()定位元素显示导致页面上移解决方法?

文章目录 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a;1、使用fixed固定定位父级元素2、控制父元素的scrollTop 项目场景&#xff1a; 在项目中需要根据当前组件的componentId来定位到页面的顶部显示。 问题描述 本来想着使用最传统的方法&#xff0…

MYSQL 练习2

练习2 创建company数据库在数据库中根据以下图示创建表&#xff0c;表结构如下&#xff0c;并插入以下数据&#xff0c;完成下面的sql。 ​ 表结构如下&#xff1a; salgrade表 salrade表数据 完成以下SQL编写&#xff1a; 修改emp表中sal字段为salary查找年薪在20000到3000…

JavaScript布尔逻辑

布尔逻辑是一种逻辑学上的分支&#xff0c;涉及真和假的值。布尔逻辑中使用的运算符仅返回真或假结果&#xff0c;这些运算符包括取反、与、或等。布尔逻辑通常用于电子学、计算机科学和数学等领域&#xff0c;其中真和假的值对于决策和控制流程非常重要。在计算机编程中&#…

60个AIGC专业术语手册;5种大模型微调方法总结;大模型创业潮成败点评;AIGC通用大模型产品测评报告 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; ChatGLM 金融大模型挑战赛&#xff0c;冠军送12B模型授权30W算力 GLM大模型联合安硕信息、阿里云、魔搭社区、北京交通大学&#xff0…