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

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博客

相关文章:

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

建议同时阅读本专栏的: Autosar CAN开发03(从实际应用认识CAN总线的物理层) Autosar CAN开发04(从实际应用认识CAN报文) Autosar CAN开发05(从实际应用认识CAN波特率) 前言 在上一章的《AU…...

vue中父子组件传值

父传子 传: 在"标签"上传属性 <Card :name"name"></Card> 接: 在props中 export default {props: {name: String},setup(props) {console.log(props.name);} } 子传父 传: 触发,给一个事件传值 setup(props,{emit}) {emit("get…...

【网络编程】基于UDP数据报实现回显服务器/客户端程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 前言 我们如果…...

sqlilabs第三十二三十三关

Less-32&#xff08;GET - Bypass custom filter adding slashes to dangerous chars) 手工注入 由 宽字符注入可知payload 成功触发报错 http://192.168.21.149/Less-32/ ?id1%df 要写字符串的话直接吧字符串变成ascii码 注意16进制的表示方式 自动注入 sqlmap -u http:…...

第二十一章博客

计算机应用实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c;相互之间可以交换数据。编写网络应用程序前&#xff0c;首先必须明确所要使用的网络协议…...

PSoc62™开发板之按键控制LED

实验目的 使用板子上的用户自定义按键控制LED亮灭&#xff0c;当按键按下时LED亮起来&#xff0c;不按下则不亮 电路图 按键电路 板子有两组按键&#xff0c;分别是系统复位按键和用户自定义按键&#xff0c;这里我们选择控制用户自定义按键&#xff0c;可以看到MCU_USER_B…...

Vue-Pinina基本教程

前言 官网地址&#xff1a;Pinia | The intuitive store for Vue.js (vuejs.org) 看以下内容&#xff0c;需要有vuex的基础&#xff0c;下面很多概念会直接省略&#xff0c;比如state、actions、getters用处含义等 1、什么是Pinina Pinia 是 Vue 的存储库&#xff0c;它允许您跨…...

大批量数据导出csv,平替导出excel性能优化解决方案封装工具类

阿丹&#xff1a; 有些业务逻辑需要在导出非常大量的数据&#xff0c;几百甚至几千万的数据这个时候再导出excel来对于性能都不是很友好&#xff0c;这个时候就需要替换实现思路来解决这个问题。 本文章提供了两种解决的方案&#xff0c;也是两种从数据库中拿取数据的方式一种是…...

C++ Qt开发:Charts绘制各类图表详解

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TreeWidget与QCharts的常用方法及灵活运用。 …...

【SassVue】仿网易云播放器动画

简介 仿网易云播放动画 效果图&#xff08;效果图&#xff09; 最终成品效果 动画组件 src/components/music/MusicPlayAnimate.vue <template><div class"music-play"><div></div><div></div><div></div></di…...

CentOS进入单用户模式

一、重启 二、出现内核选项 按“e” 三、编辑这一行 输入 rw init/sysroot/bin/sh 四、进入单用户模式 ctrlx 进入 五、切换目录 chroot /sysroot 六、然后你就操作你的系统了。 修改密码等等...

微信小程序~如何设置页面的背景色

微信小程序~如何设置页面的背景色 众所周知&#xff0c;微信小程序每个页面由.json&#xff0c;.scss&#xff0c;.ts&#xff0c;.wxml这四个文件组成。 有的小伙伴会发现&#xff0c;需要给页面加背景色的时候&#xff0c;只需在此页面的.scss文件中写个page{background-colo…...

图灵日记之java奇妙历险记--输入输出方法数组

目录 输入输出输出到控制台从键盘输入使用 Scanner 读取字符串/整数/浮点数使用 Scanner 循环读取 猜数字方法方法定义方法调用的执行过程实参和形参的关系(重要)方法重载 数组数组的创建数组的初始化动态初始化静态初始化 数组的使用元素访问遍历数组 数组是引用类型null数组应…...

CSS新手入门笔记整理:CSS3弹性盒模型

特点 子元素宽度之和小于父元素宽度&#xff0c;所有子元素最终的宽度就是原来定义的宽度。子元素宽度之和大于父元素宽度&#xff0c;子元素会按比例来划分宽度。在使用弹性盒子模型之前&#xff0c;必须为父元素定义“display:flex;”或“display:inline-flex;”。 弹性盒子…...

OCP NVME SSD规范解读-1

OCP&#xff08;Open Compute Project&#xff09;是一个由Facebook于2011年发起的开源项目。其目标是重新设计和优化数据中心的硬件&#xff0c;包括服务器、存储、网络设备等&#xff0c;以提高效率&#xff0c;降低运营成本&#xff0c;并推动技术的创新和标准化。 在OCP中&…...

大规模和复杂问题挑战——分治思想来应战

分治思想利用了问题的内在结构和性质&#xff0c;使得大规模和复杂的问题能够被有效地解决。具体来说&#xff0c;分治思想的本质是通过问题分解、递归处理和解的合并&#xff0c;将一个复杂问题转化为一系列更简单的子问题&#xff0c;并最终得到原问题的解。 1、分治思想的本…...

六西格玛的科技漩涡——张驰咨询如何促成企业变革

在管理的海洋里&#xff0c;六西格玛管理是一艘稳健的航船&#xff0c;在质量管理的汪洋中乘风破浪&#xff0c;尽管质疑之声像远处的风暴不断逼近&#xff0c;但张驰咨询公司依靠这艘航船坚持初心&#xff0c;驭风而行。 20载耕耘&#xff0c;张驰咨询不仅仅是培养了超过8000…...

由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。

问题描述&#xff1a; 由于被认为是客户端对错误&#xff08;例如&#xff1a;畸形的请求语法、无效的请求信息帧或者虚拟的请求路由&#xff09;&#xff0c;服务器无法或不会处理当前请求。 在实现向数据库中添加记录时&#xff0c;请求发送无效&#xff0c;参数也未传递到控…...

【案例】图片预览

效果图 如何让图片放大&#xff0c;大多数的UI组件都带有这种功能&#xff0c;今天给大家介绍的这个插件除了放大之外&#xff0c;还可以旋转、移动、翻转、旋转、二次放大&#xff08;全屏&#xff09; 实现 npm i v-viewer -Smain.js 中引入 import viewerjs/dist/viewer.c…...

ubuntu 18/20/22 安装 mysql 数据库

这里写自定义目录标题 ubuntu 18/20/22 安装 mysql 数据库1. 准备2. 安装 mysql3. 配置4. 测试 demo 用户5 服务管理5.1 查看服务状态5.2 启动服务5.3 停止服务5.4 重启服务 ubuntu 18/20/22 安装 mysql 数据库 1. 准备 安装前需要知道 root 用户的密码 假如不知道 root 用户…...

使用 Taotoken CLI 工具一键配置团队成员的开发环境

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用 Taotoken CLI 工具一键配置团队成员的开发环境 在团队开发中&#xff0c;统一管理大模型 API 的接入配置是一项常见且繁琐的任…...

跨越语言障碍的智能方案:DeepL Chrome扩展助力无缝多语言浏览

跨越语言障碍的智能方案&#xff1a;DeepL Chrome扩展助力无缝多语言浏览 【免费下载链接】deepl-chrome-extension A DeepL Translator Chrome extension 项目地址: https://gitcode.com/gh_mirrors/de/deepl-chrome-extension 想象一下&#xff0c;当你浏览外文网页时…...

JSON Lint for PHP:让JSON验证不再是一场噩梦

JSON Lint for PHP&#xff1a;让JSON验证不再是一场噩梦 【免费下载链接】jsonlint JSON Lint for PHP 项目地址: https://gitcode.com/gh_mirrors/jso/jsonlint 你是否曾因一个JSON格式错误而花费数小时调试&#xff1f;是否在接收外部API数据时&#xff0c;因为格式不…...

MacOS Telegram语音实时转译:本地化音频捕获与离线语音识别实践

1. 项目概述&#xff1a;一个为MacOS打造的Telegram语音实时转译工具如果你和我一样&#xff0c;经常在Telegram上参与多语言群组讨论&#xff0c;或者需要处理来自不同地区的语音消息&#xff0c;那么语言障碍绝对是一个头疼的问题。想象一下&#xff0c;你收到一条长达一分钟…...

如何在10分钟内搭建AI与Figma双向通信系统:TalkToFigma MCP完整指南

如何在10分钟内搭建AI与Figma双向通信系统&#xff1a;TalkToFigma MCP完整指南 【免费下载链接】cursor-talk-to-figma-mcp TalkToFigma: MCP integration between AI Agent (Cursor, Claude Code) and Figma, allowing Agentic AI to communicate with Figma for reading des…...

3分钟上手QrazyBox:让损坏的二维码“起死回生“的终极修复工具

3分钟上手QrazyBox&#xff1a;让损坏的二维码"起死回生"的终极修复工具 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾经遇到过这样的场景&#xff1a;打印出来的二维码被…...

Wwise音频文件处理终极指南:3步完成游戏音效解包与替换

Wwise音频文件处理终极指南&#xff1a;3步完成游戏音效解包与替换 【免费下载链接】wwiseutil Tools for unpacking and modifying Wwise SoundBank and File Package files. 项目地址: https://gitcode.com/gh_mirrors/ww/wwiseutil 还在为游戏音频文件无法编辑而烦恼…...

OpenMC多群截面计算深度解析:传输修正合并的3种解决方案与性能优化实战

OpenMC多群截面计算深度解析&#xff1a;传输修正合并的3种解决方案与性能优化实战 【免费下载链接】openmc OpenMC Monte Carlo Code 项目地址: https://gitcode.com/gh_mirrors/op/openmc 你是否在使用OpenMC进行多群蒙特卡洛计算时&#xff0c;遇到模拟结果与参考值偏…...

DsHidMini技术揭秘:Windows平台下DualShock 3控制器用户空间驱动实现方案

DsHidMini技术揭秘&#xff1a;Windows平台下DualShock 3控制器用户空间驱动实现方案 【免费下载链接】DsHidMini Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers 项目地址: https://gitcode.com/gh_mirrors/ds/DsHidMini 在Windows游戏生态系统中…...

长期使用Taotoken对接各类工具后的稳定性综合观感

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken对接各类工具后的稳定性综合观感 作为一名长期将大模型能力集成到日常开发与自动化流程中的开发者&#xff0c;我…...