STM32F1之CAN介绍

目录

​编辑

1. CAN 是什么?

2.  总线拓扑图

3. CAN 的特点

4. CAN 协议的基本概念


1. CAN 是什么?

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。

        在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。此后,CAN 通过 ISO11898 及 ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。

        现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

        图 1 是车载网络的构想示意图。CAN 等通信协议的开发,使多种 LAN 通过网关进行数据交换得以实现。

图 1  车载网络构想

2.  总线拓扑图

        CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

图 2 是 CAN 的连接示意图

图 2  CAN 连接图

3. CAN 的特点

CAN 协议具有以下特点。

(1) 多主控制

        在总线空闲时,所有的单元都可开始发送消息(多主控制)。

        最先访问总线的单元可获得发送权(CSMA/CA 方式*1)。

        多个单元同时开始发送时,发送高优先级 ID 消息的单元可获得发送权。

(2) 消息的发送

        在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

(3) 系统的柔软性

        与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。

(4) 通信速度

        根据整个网络的规模,可设定适合的通信速度。

        在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。

(5) 远程数据请求

        可通过发送“遥控帧” 请求其他单元发送数据。

(6) 错误检测功能·错误通知功能·错误恢复功能

        所有的单元都可以检测错误(错误检测功能)。

        检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。

        正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

(7) 故障封闭

        CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。

(8) 连接

        CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。

4. CAN 协议的基本概念

        CAN 协议如图3 所示涵盖了 ISO 规定的 OSI*1 基本参照模型中的传输层、数据链路层及物理层。

        CAN 协议中关于 ISO/OSI 基本参照模型中的传输层、数据链路层及物理层,具体有哪些定义如图 4 所示。

图3  ISO/OSI 基本参照模型

5  ISO/OSI 基本参照模型和 CAN 协议

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

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

相关文章

javaWebssh学生系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh学生管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

python:mplfinance 画K线图+布林线

pip install mplfinance ; python 安装使用 TA-lib 安装主要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 这个网站找到 TA_Lib-0.4.24-cp310-cp310-win_amd64.whl pip install /pypi/TA_Lib-0.4.24-cp310-cp310-win_amd64.whl 编写 mpf_kline_boll.py 如下 # -*- cod…

【VRTK】【VR开发】【Unity】12-占位身体

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概要】 目前你会发现,就算存在非Trigger Collider的墙壁屏障等,也能够正常穿过,这会导致不沉浸的体验。你需要一个占位身体来实现让墙壁等碰撞并挡住自己…

`Numpy`数组中 数据的修改(第10讲)

Numpy数组中 数据的修改(第10讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

YOLOv5独家原创改进:SPPF自研创新 | 可变形大核注意力(D-LKA Attention),大卷积核提升不同特征感受野的注意力机制

💡💡💡本文自研创新改进: 可变形大核注意力(D-LKA Attention)高效结合SPPF进行二次创新,大卷积核提升不同特征感受野的注意力机制。 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合p…

Python学习路线 - Python语言基础入门 - 函数使用

Python学习路线 - Python语言基础入门 - 函数使用 函数介绍函数函数的快速体验 函数的定义函数的定义 函数的参数函数的传入参数函数的传入参数 - 传参定义函数的传入参数 - 语法解析练习案例:升级版自动查询核酸 函数的返回值函数返回值的定义返回值的语法None类型…

vue中el-upload结合vuedraggable实现图片的上传、排序、删除以及预览等功能

实现效果&#xff1a; 功能实现&#xff1a; 要实现图片的拖拽功能首先需要安装vuedraggable库 npm install vuedraggable --save在组件中引入并注册 vuedraggable <script>import draggable from "vuedraggable";export default {// 注册组件components: {…

SI24R03 高度集成低功耗SOC 2.4G 收发一体芯片

今天给大家介绍一款Soc 2.4G 收发一体模块-SI24R03 Si24R03是一款高度集成的低功耗无线SOC芯片&#xff0c;芯片为QFN32 5x5mm封装&#xff0c;集成了资源丰富的MCU内核与2.4G收发器模块&#xff0c;最低功耗可达1.6uA&#xff0c;极少外围器件&#xff0c;大幅降低系统应用成本…

详解Android单元测试最佳实践

目的 充分的单元测试就是提高代码质量最有效的手段之一&#xff0c;而单元测试严重依赖代码的可测试性&#xff0c;本文主要通过一个简单的DEMO演示如何对Android原生应用进行单元测试&#xff0c;同时示例代码采用MVP模式以提高代码的可读性和可测试性 简介 在Android原生应…

mmdetection测试保存到新的文件夹,无需标签

这个是用demo这个代码测试的&#xff0c;需要先训练一个pth文件夹&#xff0c;训练之后再调用pth文件夹进行测试。测试的代码文件名是&#xff1a;image_demo_new.py&#xff0c;代码如系所示&#xff1a; # Copyright (c) OpenMMLab. All rights reserved. import asyncio fr…

使用selenium的edge浏览器登录某为

互联网上基本都是某哥的用法&#xff0c;其实edge和某哥的用法是一样的就有一下参数不一样。 一、运行环境 Python&#xff1a;3.7 Selenium&#xff1a;4.11.2 Edge&#xff1a;版本 120.0.2210.61 (正式版本) (64 位) 二、执行代码 from time import sleepfrom selenium…

调新浪分享

前端写一个按钮,通过按钮来调出新浪界面, window.location.href http://service.weibo.com/share/share.php?url 这行代码调出新浪分享界面,要是想要添加一些图片和文字 使用: window.location.href http://service.weibo.com/share/share.php?url encodeURIComponent…

P2 Qt Creator创建第一个Qt程序

前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《LLinux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨✨✨ &#x1f33a;本篇简介 &#xff1a;这一章我们学…

二百一十一、Flume——Flume实时采集Linux中的Hive日志写入到HDFS中(亲测、附截图)

一、目的 为了实现用Flume实时采集Hive的操作日志到HDFS中&#xff0c;于是进行了一场实验 二、前期准备 &#xff08;一&#xff09;安装好Hadoop、Hive、Flume等工具 &#xff08;二&#xff09;查看Hive的日志在Linux系统中的文件路径 [roothurys23 conf]# find / -name…

smarty模版 [BJDCTF2020]The mystery of ip 1

打开题目 点击flag给了我们一个ip 点击hint&#xff0c;查看源代码处告诉了我们要利用这个ip bp抓包&#xff0c;并添加X-Forward-For头 所以这道题是XFF可控 本来联想到XFF漏洞引起的sql注入&#xff0c;但是我们无论输入什么都会正常回显&#xff0c;就联想到ssti注入 我们…

CloudCompare 二次开发(23)——计算两点云之间的放缩倍数

目录 一、概述二、代码集成三、结果展示一、概述 使用CloudCompare编程实现计算两点云之间的放缩倍数。具体计算原理见:。 二、代码集成 1、mainwindow.h文件public中添加: void doActionComputeScale(); // 计算两点云的放缩倍数2、mainwindow.cpp文件void MainWin…

Python网络爬虫的基础理解-对应的自我理解误区

##通过一个中国大学大学排名爬虫的示例进行基础性理解 以软科中国最好大学排名为分析对象&#xff0c;基于requests库和bs4库编写爬虫程序&#xff0c;对2015年至2019年间的中国大学排名数据进行爬取&#xff1a;&#xff08;1&#xff09;按照排名先后顺序输出不同年份的前10…

Linux下通过find找文件---通过修改时间查找(-mtime)

通过man手册查找和-mtime选项相关的内容 man find | grep -A 3 mtime # 这里简单介绍了 -mtime &#xff0c;还有一个简单的示例-mtime n Files data was last modified n*24 hours ago. See the comments for -atime to understand how rounding affects the interpretati…

【已解决】解决Win7虚拟机打开网页报错的情况

因为刚才下载了个虚拟机&#xff0c;同样出现了无法安装VMtools的情况&#xff0c;所以想直接通过虚拟机的浏览器来下载一个补丁&#xff08;因为自己的U盘在虚拟机上面无法识别&#xff0c;应该是太老了Win7&#xff09; 结果发现Win7内置的IE浏览器太拉了。于是向下载一个火…

深度学习记录--神经网络表示及其向量化

神经网络表示 如下图 就这个神经网络图来说&#xff0c;它有三层&#xff0c;分别是输入层(Input layer)&#xff0c;隐藏层(Hidden layer)&#xff0c;输出层(Output layer) 对于其他的神经网络&#xff0c;隐藏层可以有很多层 一般来说&#xff0c;不把输入层算作一个标准…