Autosar CAN开发03(从实际应用认识CAN总线的物理层)

建议同时阅读本专栏的:

Autosar CAN开发03(从实际应用认识CAN总线的物理层)

Autosar CAN开发04(从实际应用认识CAN报文)

Autosar CAN开发05(从实际应用认识CAN波特率)

前言

在上一章的《AUTOAR CP入门》中,我们大概了解一下Autosar和入门Autosar的方法。

另外,上一章也说到,学习Autosar CAN通讯开发应该先学习跟逻辑相关的东西,这样更容易入门,等到入门之后,往下学习CAN驱动相关的东西。

但是,总不能都搞CAN开发了,但是连CAN是什么东西,CAN通讯要怎么接线都不知道吧?

所以,接下来,我会先把CAN物理层的东西,并且是经常要实际用到的CAN物理层的知识讲一下。

另外,由于此时是CAN入门,关于CAN物理层的很多的深入的细节都会略过,比如错误帧、CAN报文的各个段、ACK等等,这些内容大部分都是要解决一些CAN问题时才用得到。而且,另外还有很多是CAN开发中基本用不上的概念,这篇文章就不那么深入讲解了。

如果一开始学习就全部概念都去看,大多是看的一知半解,而且学了这些概念对软件开发没有特别大的帮助,反而打击了学习信心和欲望。

实际上,等到后面接触多了CAN的东西,碰到相关问题时,自然就会有一种渴望去学习这些最底层的CAN相关知识。

从物理上认识CAN总线

好了,回归正题。

CAN开发,CAN开发,所以肯定要先知道CAN是个什么东西。

首先,大家第一次真正接触CAN,是不是通过电脑CAN上位机软件看到很多的CAN数据在不断刷

要出现这样的数据,CAN接线是这样的:

每个人用的设备可能不一样,但是都是一个CAN盒、两根CAN线(CANH/CANL)、一个终端电阻(或CAN盒自带终端电阻、或板子自带终端电阻)、一个板子、一台电脑

对于刚接触CAN的人来说,可能上面的图看不懂。

没关系,下面我们从物理层面入手,把上面这张图拆解开。

好了,我们先把上面的图抽象一点点,变成这样:

再抽象一点点,变成这样:

实际上,我们的电脑和CAN盒就是一个模拟的CAN节点

所以,我们把上面的图完善一下,得出下面这张图:

刚接触可能看不太懂上面的图,没关系,我们从这张图截取一个CAN节点来看,梳理一下CAN通信需要的硬件东西都有些什么,并且有什么用,然后就明白了:

CAN高/CAN低(双绞线)

注意它是一条双绞线,就是像麻花一样卷一起的两条线,数据是通过这两条线传输的。绞在一起目的是抗干扰的,为什么能抗干扰,我们下面马上讲到。

终端电阻

为什么它叫“终端”电阻。

就是因为在这根双绞线的两头最远处才需要接的电阻,只需要两个就行了,每个120Ω。原因就难解释了,涉及到各种物理知识,我也不看的一知半解,我们目前只需要知道,CAN要正常通讯,一定要有这玩意就行。

这时,你想起来一开始那张图,好像只有一个终端电阻啊!

但是,你认真想了想,发现大家平时确实都这样接:单板接CAN盒然后再接​一个120Ω的终端电阻,最后再把CAN盒接到电脑上。

那么,为什么明明CAN标准里的要求其实是CAN总线的两端各需要接一个终端电阻,即两个120Ω的终端电阻并联,总阻值为60Ω,但我们平时调试的时候只接了一个就能正常通讯了呢?

据我所知,CAN总线要正常通讯,并联1~4个终端电阻(总电阻120Ω~30Ω)都是能正常通讯的。终端电阻的使用与CAN总线的长度和CAN节点的放置有关系,在整车CAN总线规划的时候,终端电阻会根据CAN总线长度和节点的放置决定阻值。

而我们平时调试,只要能正常通讯就行了,要求不需要那么严格。

CAN收发器

CAN收发器它有啥用呢?

首先要知道:CAN数据是通过CANH和CANL的差分信号进行传输的。

怎么理解呢?

看下面这张图,图中的是CANH和CANL进行数据传输时的电压情况:

从这里我们认识两个概念:

隐性电平:CANH和CANL差值为0V时称为隐性电平(实际上,隐性电平的正常电压范围是:-0.5V~0.05V),代表逻辑1。

显性电平:CANH和CANL差值为2V称为显性电平(实际上,显性电平的正常电压范围是:1.5V~3V),代表逻辑0(一般我都这么记:显灵显灵,逻辑0)。

另外,CAN通讯的目的就是传输数据嘛,而数据在芯片的世界里只能用逻辑0和逻辑1表示,但是CAN总线需要用两根线的差分信号表示逻辑0和逻辑1,怎么办呢?

所以,CAN收发器的作用就出来了:

接收数据时:把(CANH/CANL)的差分电平转换成逻辑电平,并通过RX引脚传给MCU的CANRX。这样MCU就收到CAN总线的数据了,像下面这样:

发送数据时:把CANTX发过来的逻辑电平,转换成(CANH/CANL)的差分电平发送出去。这样MCU就把数据发到CAN总线了,像下面这样:

好了,到现在为止,你应该明白了CAN总线的物理层是怎么一回事。

另外,我们上面还遗留一个双绞线为什么抗干扰的问题。

既然我们知道了CAN总线传输数据的方式是差分信号,那么你想想,由于我们的CANH和CANL是双绞线,出现干扰时就会同时干扰两条线,如下面这张图:

假设由于干扰导致CANH和CANL的电压都上升了1V。

CANH变成了4.5V,CANL变成了2.5V。但是:4.5V-2.5V还是等于2V。所以,这并不影响正常通讯。因此,双绞线是能抗干扰的。

好了,关于CAN总线要工作起来,物理层面所有需要的东西,我们总结一下:

①双绞线、②终端电阻、③收发器、④带有CAN控制器的MCU(这个入门先不管它,知道要有就行了)

有这几样东西之后,只要我们MCU的CAN驱动代码是正常的,那么就能正常通讯了。

结束

好了,了解了CAN物理层面都要些什么具体的东西之后,我们下一章看看什么是CAN报文。


建议同时阅读本专栏的:

Autosar CAN开发03(从实际应用认识CAN总线的物理层)

Autosar CAN开发04(从实际应用认识CAN报文)

Autosar CAN开发05(从实际应用认识CAN波特率)

发表日期:2023.12.25

朋友们,关注下我呀,我以我过来人,再用小白的角度认真写的知识总结一定让你的脑子饿肚子进来,扶墙出去...

返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客

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

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

相关文章

基于Python的新能源汽车销量分析与预测系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 基于Python的新能源汽车销量分析与预测系统是一个使用Python编程语言和Flask框架开发的系统。它可以帮助用户分析和预测新能源汽车的销量情况。该系统使用了关系数据库进行数据存储,并…

thinkphp6.0的workerman在PHP8.0下报错

一、我先升级了thinkphp6.0到最新版本: composer update topthink/framework二、结果提示我composer版本过低,需要升级到2,于是我又升级了composer composer self-update 三、我又升级了workerman: composer require topthink/think-work…

深入理解 Spring Boot:核心知识与约定大于配置原则

深入理解 Spring Boot:核心知识与约定大于配置原则 简单说一下为什么要有 Spring Boot? 因为 Spring 的缺点。 虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的(需要大量 XML 配置) 为了减少配置文件,简化开发 Spri…

低代码实施复杂应用的实践方法

内容来自演讲:韦有炬 | 柳州知行远企业管理咨询有限公司 | 总经理 摘要 本文探讨了在全民开发时代如何使用低代码实施复杂应用并降低上线风险。文章分析了复杂系统实施失败的风险,包括项目规划不周、人员变动、企业基础管理不足等,并对比了低…

市场复盘总结 20231225

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封…

CSRF(Pikachu)

CSRF(get) 首先我们先登录账号 admin 密码是;123456 点击修改个人信息 用F12或者BP 抓包看看我们的url 那么构成的CSRF攻击payload为http://pikachu.shifa23.com/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sexboy&phonenum”手机…

智能优化算法应用:基于卷积优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于卷积优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于卷积优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.卷积优化算法4.实验参数设定5.算法结果6.…

让某个页面一直处于最前面,可以屏蔽切屏检测

前言 学习通智慧树网课分屏,让某个页面一直处于最前面,可以屏蔽切屏检测。 页面一直处于最前面 前言1 安装包2 使用 1 安装包 https://download.csdn.net/download/qq_44850489/76684366 2 使用 一直下一步就可以 选择要放到前面的窗口&#xff0c…

摸索若依框架是如何实现权限过滤的

摸索若依框架是如何实现权限过滤的 这篇文章,我也是作为一个优秀开源框架的学习者,在这里摸索这套框架是如何实现权限过滤的,这个封装对于入行Java半年之余的我来说,理解起来有些困难,所以,文章只是作为一个…

反转链表算法及优化(leetcode第206题)

题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例…

【Linux系统编程】【Google面试题改编】线程之间的同步与协调 Linux文件操作

编写程序,有四个线程1、2、3、4 线程1的功能就是输1,线程2的功能就是输出2,以此类推……现在有四个文件ABCD初始都为空 现要让四个文件呈如下格式: A: 1 22 333 4444 1 22 333 4444… B: 22 333 4444 1 22 333 4444 1… C: 333 4444 1 22 333 4444 1 2…

分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】

分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】 目录 分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCSO-…