CAN协议

文章目录

  • CAN介绍
  • CAN的优势
    • 多主控制
    • 通信速度较快,通信距离远
    • 具有错误检测、错误通知和错误恢复功能
    • 故障封闭功能
    • 连接节点多
  • ISO11519-2物理层特性
  • ISO11898物理层特性
    • CAN 收发芯片 JTA1050
  • CAN 协议5 种帧
    • 5种帧介绍
    • 数据帧的构成
      • 帧起始
      • 仲裁段
      • 控制段
      • 数据段
      • CRC段
      • ACK段
      • 帧结束

CAN介绍

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

  • Controller意味着 ECU electronic control unit电子控制单元。

在这里插入图片描述ECU集成了供电系统 单片机 驱动系统,是汽车里面最小的控制模块。
在这里插入图片描述CAN就是为了让ECU进行通讯而设计。组成局域网进行通讯。

  • 现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN在欧洲是汽车网络的标准协议。

CAN 有两种标准

  • ISO11898是针对通信速率为125Kbps~1Mbps 的高速通信标准。
  • ISO11519-2是针对通信速率为 125Kbps以下的低速通信标准。

异步通讯

  • I2C、 SPI 等具有时钟信号的同步通讯方式不同, CAN 通讯是一种异步通讯
  • CAN只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

半双工

  • 由于CAN 总线协议的物理层只有 1 对差分线,在一个时刻只能表示一个信号,所以对通讯节点来说, CAN 通讯是半双工的,收发数据需要分时进行。

CAN的优势

多主控制

  • 在总线空闲时,所有单元都可以发送消息(多主控制)
  • 两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。

通信速度较快,通信距离远

  • 最高 1Mbps(距离小于 40M)
  • 最远可达 10KM(速率低于 5Kbps)。
    在这里插入图片描述

具有错误检测、错误通知和错误恢复功能

  • 所有单元都可以检测错误(错误检测功能)
  • 检测出错误的单元会立即同时通知其他所有单元(错误通知功能)
  • 正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

故障封闭功能

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

连接节点多

  • CAN 总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。
    • CAN 通讯协议不对节点进行地址编码,而是对数据内容进行编码,所以网络中的节点个数理论上不受限制。
    • 实际上可连接的单元数受总线上的时间延迟及电气负载的限制
      • 降低通信速度,可连接的单元数增加。
      • 提高通信速度,则可连接的单元数减少。

ISO11519-2物理层特性

  • 标准的低速、远距离“开环网络”,要求每根总线上各串联有一个“2.2 千欧”的电阻。
  • 最大传输距离为 1km,最高通讯速率为 125kbps
  • 电气特性
    • 1:
    • 0:
      在这里插入图片描述

ISO11898物理层特性

在这里插入图片描述
在这里插入图片描述
高速网络

  • 标准的高速、近距离“闭环网络”。

传输速率与传输距离

  • 线最大长度为 40m,通信速度最高为 1Mbps。

通讯节点

  • CAN 通讯节点由一个 CAN 控制器及 CAN 收发器组成
    • 控制器与收发器之间通过CAN_Tx 及 CAN_Rx 信号线相连
      § CAN_Tx 及 CAN_Rx 使用普通的类似 TTL 逻辑信号
    • 收发器与 CAN 总线之间使用 CAN_High 及 CAN_Low信号线相连
      § CAN_High 及CAN_Low 是一对差分信号线

电气特性
差分线使用两根线表示一个信号。

在这里插入图片描述

  • 逻辑 1 时(隐性电平):CAN_High 和 CAN_Low线上的电压均为 2.5v,即它们的电压差 VH-VL=0V
  • 表示逻辑 0 时(显性电平),CAN_High 的电平为 3.5V, CAN_Low 线的电平为 1.5V,即它们的压差为2V。

线与特性

  • 在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。
  • 假如有两个 CAN 通讯节点,在同一时间,一个输出隐性电平,另一个输出显性电平,类似 I2C 总线的“线与”特性将使它处于显性电平状态,显性电平的名字就是这样来的, 即可以认为显性具有优先的意味

终端电阻

  • 在 CAN 总线的起止端都有一个 120Ω的终端电阻,来做阻抗匹配,以减少回波反射。
    在这里插入图片描述

CAN 收发芯片 JTA1050

  • 经过TJA1050前是逻辑TTL电平
  • 经过TJA1050之后会转换成CAN的高低电平
    在这里插入图片描述
    连接
  • STM32 的 CAN 通过 P9 的设置,连接到 TJA1050 收发芯片
  • 然后通过接线端子(CAN)同外部的 CAN 总线连接。
  • 实际中通过跳线帽将 PA11 和 PA12 分别连接到 CAN_RX 和 CAN_TX 上面。
    在这里插入图片描述

需要注意

  • CAN 和 USB 共用了 PA11 和 PA12,所以他们不能同时使用。
  • 在战舰 STM32 开发板上面是带有120Ω的终端电阻的,如果我们的开发板不是作为 CAN 的终端的话,需要把这个电阻去掉,以免影响通信。

CAN 协议5 种帧

在这里插入图片描述

5种帧介绍

CAN 协议是通过以下 5 种类型的帧进行的:
在这里插入图片描述

数据帧和遥控帧有标准格式和扩展格式两种格式。

  • 标准格式有 11 个位的标识符(ID),扩展格式有 29 个位的 ID。

数据帧的构成

数据帧一般由 7 个段构成,即:
(1) 帧起始。表示数据帧开始的段。
(2) 仲裁段。表示该帧优先级的段。ID
(3) 控制段。表示数据的字节数及保留位的段。
(4) 数据段。数据的内容,一帧可发送 0~8 个字节的数据。
(5) CRC 段。检查帧的传输错误的段。
(6) ACK 段。表示确认正常接收的段。
(7) 帧结束。表示数据帧结束的段。

帧起始

在这里插入图片描述

  • D 表示显性电平2.5,R 表示隐形电平0(下同)。

帧起始(Start Of Frame),这个比较简单,标准帧和扩展帧都是由 1 个位的显性电平表示帧起始。

仲裁段

在这里插入图片描述

  • RTR((Remote Transmission Request Bit)远程传输请求) ,用于标识是否是远程帧(0,数据帧;1,远程帧)
  • IDE(Identifier Extension Bit),译作标识符扩展位) 位为标识符选择位(0,使用标准标识符;1,使用扩展标识符)
  • SRR(Substitute Remote Request Bit) 位为代替远程请求位,为隐性位,它代替了标准帧中的 RTR 位。

仲裁段,表示数据优先级的段,当同时有两个报文被发送时,总线会根据仲裁段的内容决定哪个数据包能被传输,标准帧和扩展帧格式在本段有所区别

  • 标准格式的 ID 有 11 个位。从 ID28 到 ID18 被依次发送。禁止高 7 位都为隐性(禁止设定:ID=1111111XXXX)。
  • 扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由ID17 到 ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性ID=1111111XXXX)。

根据识别码ID就可以识别到底是发给哪个设备。
在这里插入图片描述

控制段

在这里插入图片描述

  • r0 和 r1 为保留位,必须全部以显性电平发送,但是接收端可以接收显性、隐性及任意组合的电平。
  • DLC(Data Length Code),译为数据长度码) 为数据长度表示段,由 4 个数据位组成,高位在前,DLC 段有效值为 0~8,但是接收方接收到 9~15 的时候并不认为是错误。表示本报文中的数据段含有多少个字节.

控制段,由 6 个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同

数据段

数据段,该段可包含 0~8 个字节的数据。从最高位(MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的。
在这里插入图片描述

CRC段

CRC 段,该段用于检查帧传输错误。由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符(用于分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的。

  • CRC 的值计算范围包括:帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。
  • CRC 校验码之后,有一个 CRC 界定符,它为隐性位,主要作用是把 CRC 校验码与后面的 ACK 段间隔起来。

ACK段

ACK 段,此段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位组成。标准帧和扩展帧在这个段的格式也是相同的。
在这里插入图片描述

  • 发送单元的 ACK,发送 2 个位的隐性位
    • 发送 ACK 的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送 ACK)。所谓正常消息是指不含填充错误、格式错误、CRC 错误的消息。
  • 接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位,通知发送单元正常接收结束,这个过程叫发送 ACK/返回 ACK。

在 ACK 槽和帧结束之间由 ACK 界定符间隔开。

帧结束

帧结束(End Of Frame),这个段也比较简单,标准帧和扩展帧在这个段格式一样,由 7 个位的隐性位组成,7 个隐性位表示结束。1111111
在这里插入图片描述

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

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

相关文章

应用OpenCV绘制箭头

绘制箭头函数 方法:函数cv2.arrowedLine( ) 语法格式:cv2.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) 参数说明: img:要画的直线所在的图像,也称为画布。。 pt1&#x…

ubuntu 22 virt-manger(kvm)安装winxp; ubuntu22体验 firebird3.0

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 : 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

【已解决】Invalid bound statement (not found)

报错讯息 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.casey.mapper.SysRoleMapper.getUserRoleCode at org.apache.ibatis.binding.MapperMethod S q l C o m m a n d . < i n i t > ( M a p p e r M e t h o d . j a v a :…

基于java,springboot的论旅游管理系统设计与实现

环境以及简介 基于java,springboot的论旅游管理系统设计与实现&#xff0c;Java项目&#xff0c;SpringBoot项目&#xff0c;含开发文档&#xff0c;源码&#xff0c;数据库以及ppt 源码下载 环境配置&#xff1a; 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服…

关于“Python”的核心知识点整理大全65

目录 20.2.19 设置 SECRET_KEY 20.2.20 将项目从 Heroku 删除 注意 20.3 小结 附录 A 安装Python A.1.1 确定已安装的版本 A.1.2 在 Linux 系统中安装 Python 3 A.2 在 OS X 系统中安装 Python A.2.1 确定已安装的版本 A.2.2 使用 Homebrew 来安装 Python 3 注意 …

[C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh

【官方框架地址】 https://github.com/takuya-takeuchi/DlibDotNet 【算法介绍】 DlibDotNet是一个开源的.NET库&#xff0c;用于实现机器学习和计算机视觉应用。它基于C库dlib&#xff0c;通过C/CLI封装了dlib的所有功能&#xff0c;为.NET开发者提供了简单易用的API。以下是…

缘分的计算

题目描述&#xff1a; 缘分是一个外国人难以理解的中文名词。大致说来&#xff0c;缘分是一种冥冥中将两人&#xff08;通常是情人&#xff09;结合的力量。仅管这是种迷信&#xff0c;很多人——特别是女生——喜欢去计算它。 不幸的是&#xff0c;644 也是这样。有天&#x…

Oracle-深入了解cache buffer chain

文章目录 1.Cache buffer chain介绍2.Buffer cache的工作原理3 Buffer chains4.Multi-versioning of Buffers5.Latches6.诊断CBC latch等待7.解决 CBC Latch等待 1.Cache buffer chain介绍 经常看到会话等待事件“latch&#xff1a;cache buffers chain”。 如果想知道意味着什…

vue3 + TS + vite 搭建中后台管理系统(完整项目)

vue3 TS vite 搭建中后台管理系统&#xff08;完整项目&#xff09; 前言1、搭建步骤及方法2、集成多种插件功能&#xff0c;实现中后台按需使用3、新手学TS如何快速进入状态、定义TS类型4、layout搭建四款常见风格6、大屏搭建效果5、vue3Ts运营管理系统总结&#xff1a; 前言…

力扣hot100 将有序数组转换为二叉搜索树 递归

&#x1f468;‍&#x1f3eb; 题目地址 时间复杂度&#xff1a; O ( n ) O(n) O(n) &#x1f60b; AC code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNod…

JMeter之测试WebService接口

JMeter之测试WebService接口 1 背景2 目的3 介绍4 具体操作4.1 soapUI调用4.2 JMeter工具调用4.3 操作步骤流程4.3 重点 1 背景 WebService应用的范围是非常广&#xff0c;任何需要跨平台、跨系统进行数据交换和功能调用的场景都可以用此来实现&#xff0c;在实际的工作中也常常…

案例介绍|钡铼助力2023年全国职业院校技能大赛工业网络智能控制与维护赛项

如今&#xff0c;越来越多的企业开始意识到数字制造和工业物联网已经成为工业自动化中大规模生产的核心驱动力。这其中&#xff0c;工业网络作为基础设施&#xff0c;是实现工厂设备联网与数据采集&#xff0c;建设数字工厂的基础和前提&#xff0c;甚至成为关乎数字工厂能否真…

如何恢复Mac误删文件?

方法1. 使用撤消命令 当你在 Mac 上删除了错误的文件并立即注意到你的错误时&#xff0c;你可以使用撤消命令立即恢复它。顾名思义&#xff0c;此命令会反转上次完成的操作&#xff0c;并且有多种方法可以调用它。如果你已经采取了其他操作或退出了用于删除文件的应用程序&…

网络安全B模块(笔记详解)- 数字取证

数据分析数字取证-attack 1.使用Wireshark查看并分析Windows 7桌面下的attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户的IP地址,并将恶意用户的IP地址作为Flag(形式:[IP地址])提交; 解析:http.request.method==POST ​ Flag:[172.16.1.102] 2.继续…

Linux内核--进程管理(六)内核进程管理几种CPU调度策略

目录 一、引言 二、CPU调度的直观想法 ------>2.1、FIFO ------>2.2、Priority ------>2.3、调度矛盾 三、各种CPU调度算法 ------>3.1、FCFS(First Come,First Served) ------>3.2、SJF(Short Job First,短作业优先) ------>3.3、RR算法(按时间片…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-3流体系统建模

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-12课程介绍电路系统建模、基尔霍夫定律 流量 flow rate q q q m 3 / s m^3/s m3/s 体积 volume V V V m 3 m^3 m3 高度 heigh h h h m m m 压强 pressure p p p …

Java:爬虫htmlunit

为什么htmlunit与HttpClient两者都可以爬虫、网页采集、通过网页自动写入数据&#xff0c;我们会推荐使用htmlunit呢? 一、网页的模拟化 首先说说HtmlUnit相对于HttpClient的最明显的一个好处&#xff0c;HtmlUnit更好的将一个网页封装成了一个对象&#xff0c;如果你非要说H…

DynaForm 各版本安装指南

DynaForm下载链接 https://pan.baidu.com/s/1AgsSyjgRi-y0ujRwSwXtHQ?pwd0531 1.鼠标右击【DynaForm5.9.4(64bit)】压缩包&#xff08;win1及以上系统需先点击“显示更多选项”&#xff09;选择【解压到 DynaForm5.9.4(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击…

计算机组成原理18——CPU的结构和功能2(书中重点及习题)

本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后&#xff0c;用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点&#xff0c;如有不同意见&#xff0c;欢迎在评论区讨论。 目录 中断系统中断请求标记和中断判优逻辑中断服务程序入口地…

MySQL之数据类型建表以及约束

SELECT(查询) 查询操作用于从数据库中检索数据 查询可以基于不同的条件&#xff0c;如字段值、范围、排序等 查询结果可以返回单个记录或多个记录 查询指定列 select 列名 from 表名 列名&#xff1a;代表从指定的列名中查找 , 如果是查找对应的多列&#xff0c;则用英文…