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

【车载开发系列】CAN通信总线再理解(中篇)

【车载开发系列】CAN通信总线再理解(中篇)

    • 九. CAN总线标准
    • 十. CAN物理层
    • 十一. CAN数据链路层
      • 1)CAN的通信帧类型
      • 2)CAN的标准帧格式
        • 1. CAN ID
        • 2. 数据场
      • 3)CAN总线仲裁
    • 十二. CAN应用层
      • 1)CANopen
      • 2)J1939
      • 3)DeviceNet

九. CAN总线标准

  • CAN总线标准有两个,即ISO11898和ISO11519,两者差分电平特性不同。
  1. ISO11898高低电平幅度低(高电压3.5V,低电压1.5V),对应的传输速度快,所以适用于高速CAN;
  2. ISO11519高低电平幅度大(高电压4.0V,低电压1.0V),对应的传输速度慢些,所以适用于低速CAN;

十. CAN物理层

  1. 多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。所谓"线与"。
  2. CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。从而消除累积误差。
  3. CAN的传输速度与距离成反比。
  4. CAN总线上的终端电阻是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线

十一. CAN数据链路层

1)CAN的通信帧类型

  • CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。
帧类型英文帧作用
数据帧Data Frame用于发送单元向接收单元传送数据的帧,使用最多的帧类型
遥控帧Remote Frame用于接收单元向具有相同ID的发送单元请求数据的帧
错误帧Error Frame用于当检测出错时向其他单元通知用的错误的帧
过载帧Overload Frame用于接收单元告诉发送单元,通知其尚未做好接收准备的帧
间隔帧Inter Frame Space用于将数据帧及遥控帧与前面的帧分离开来的帧

2)CAN的标准帧格式

位名位名位数说明
SOF起始位1位是一个显性电平逻辑0
Identifier(ID)仲裁段(识别码)11/29位用来确定数据信息发送给那个设备,每一个设备都有一个属于自己的识别码,11 位标识符的帧称为标准格式,而具有29位标识符的帧为扩展格式
RTR仲裁段(RTR位)1位用来区分数据帧(0)或者远程请求帧(1)
SRR※仲裁段(SRR位)1位只用在扩展格式,替代RTR;不是扩展模式不需要这个
IDE控制段(IDE位)1位用来区分标准帧(0)还是拓展帧(1)
R0控制段(空闲位)1位保留位
DLC控制段(DLC)4位用来控制数据长度
Data Field数据段8-64位数据的内容。DLC为1时数据码8位(标准CAN),为8时数据码64位(CAN FD)
CRC15CRC码15位15位CRC位+1位CRC界定符,循环冗余校验码,检测到错误时会自动重传
DELCRC界定位1位1位CRC界定符,为了把后面信息隔开
ACK应答位(ACK码)1位接收站使用应答位来表示是否已正确接收报文
DEL应答位(ACK界定位)1位一个隐性的位,为了把后面信息隔开
EOF结束位7位表示数据帧传输结束,7个隐形信号

在这里插入图片描述

1. CAN ID

CAN帧中包含ID,在数据链路层只起到优先级判断的作用。ID的数值越小,CAN帧的优先级越高,会获得总线控制权。多节点同时开始发送数据时,按照电路设计,ID按每一bit传输时,ID小的数据会覆盖ID大的值,即0&1=0,此时只要判断到自己发出的bit1实际是收到bit0,就停止发送后续的bit,稍后重试。
CAN ID值的业务意义由应用层决定。一种典型用法是,部分bit代表消息类型,部分bit代表发送者设备,即ID和设备绑定。只要ID的前几bit代表设备号,后几bit代表业务值,就能兼顾优先级判断的规范。

2. 数据场

数据场是放高层业务数据的地方。
数据链路层协议只规定了一帧的格式,数据跨越多帧的情况由应用层协议实现拆包和重组。
经典CAN,数据场最多8bytes;CAN FD最多64bytes;CAN XL最多2048bytes,即一帧可以有更多业务数据。当一帧的业务数据量>8且
003C64时,用CAN FD就不需要在业务层把数据拆成多帧和重组了,这也提升了性能。

3)CAN总线仲裁

  1. CAN总线仲裁是通过优先级决定的。
  2. CAN总线处于空闲状态时,最先发送消息的单元获得发送权。
  3. 多个单元同时开始发送时,从仲裁段(报文ID)的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送,即首先出现隐形电平的单元失去对总线的占有权变为接收。
  4. 仲裁段(识别码Identifier)值越小,说明显性电平(逻辑0)越多,那么优先级越高。
  5. 仲裁失败的单元,会自动检测总线空闲,在第一时间再次尝试发送。
    在这里插入图片描述
  • 该仲裁机制是利用“如果总线上同时出现显性电平和隐形电平,总线的状态会被置为显性电平”这个特性进行仲裁。

十二. CAN应用层

狭义的CAN,指的是物理层和数据链路层。简单地以“CAN”作为关键字去搜索,都是这两层的知识,而广义的CAN,包括应用层协议,主流有以下3种。

1)CANopen

基于CAN2.0A定义的标准帧,由CiA提出和维护。最初是为工业自动化设计的,但很快应用在了其它领域

2)J1939

基于CAN2.0B定义的扩展帧,由SAE提出。多用于重型机械,如大巴、挖掘机、拖拉机、坦克、消防车等。

3)DeviceNet

基于CAN2.0A定义的标准帧,由美国的Allen-Bradley公司所开发。主要应用包括资讯交换、安全设备及大型控制系统,在美国的市场占有率较高。比起CANopen,对物理层的要求更严格,从而使得不同厂商的设备更通用。

相关文章:

【车载开发系列】CAN通信总线再理解(中篇)

【车载开发系列】CAN通信总线再理解(中篇) 九. CAN总线标准十. CAN物理层十一. CAN数据链路层1)CAN的通信帧类型2)CAN的标准帧格式1. CAN ID2. 数据场 3)CAN总线仲裁 十二. CAN应用层1)CANopen2&#xff09…...

系统编程:互斥锁,条件变量

互斥锁 使用过程: 1,声明锁: pthread_mutex_t lock; 2,初始化锁:pthread_mutex_init(&lock,NULL); 3,在线程的方法函数中上锁和解锁:(成对出现) pthread_mutex_lock(&lock); pthread_mutex_unlock(&lock); 4,销毁锁:pthread_mutex_destroy(&lock); 代码示例:…...

蓝鹏测控公司全长直线度算法项目多部门现场组织验收

关键字:全场直线度算法,直线度测量仪,直线度检测,直线度测量设备, 6月18日上午,蓝鹏测控公司全长直线度算法项目顺利通过多部门现场验收。该项目由公司技术部、开发部、生产部等多个部门共同参与,旨在提高直线度测量精度,满足高精度制造领域需…...

使用Python进行音频处理

通常会使用wave模块。但是,如果您想要处理其他类型的音频文件,或者需要更高级的音频处理功能,您可能需要安装第三方库,如pydub、soundfile、numpy等。 import wave # 读取WAV文件 with wave.open(input.wav, rb) as wav_file: …...

家有老人小孩,室内灰尘危害大!资深家政教你选对除尘空气净化器

哈喽,各位亲爱的朋友们!今天我们来聊聊每次大扫除时最让人头疼的问题——灰尘。你有没有发现,两天不打扫,桌子上就能积上一层灰;阳光一照,地板上的灰尘都在跳舞;整理被子的时候,空气…...

AI在创造与毁灭之间摇摆:音乐产业的机遇与挑战并存

AI到底在创造还是毁掉音乐? 最近一个月,轮番上线的音乐大模型,一举将素人生产音乐的门槛降到了最低,并掀起了音乐圈会不会被AI彻底颠覆的讨论。短暂的兴奋后,AI产品的版权归属于谁,创意产业要如何在AI的阴…...

Spring Boot集成 Spring Retry 实现容错重试机制并附源码

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...

MDK-ARM 编译后 MAP 文件分析

本文配合 STM32 堆栈空间分布 食用更佳! 一图胜千言。。。...

antv g6实现系统拓扑图

1 背景 为例描述各个服务、redis、mysql等之间的联系及其健康状态,构建系统拓扑图,考虑 g6 更适合处理大量数据之间的关系,所以我们采用g6来绘制前端的图形。 g6提供的支持: 节点/边类型多样,同样支持自定义对于节点…...

因路径规划异常导致导航停止 Failed to pass global plan to the controller

因路径规划异常导致导航停止 Failed to pass global plan to the controller 控制台错误信息: [ WARN] [1718875656.343893537, 93.698000000]: Transformed plan is empty. Aborting local planner! [ERROR] [1718875656.343922719, 93.698000000]: move_base.cpp:854 Faile…...

AOSP开发环境搭建

目录 一、安装虚拟机 二、安装Ubuntu 三、安装VMware tools 3.1、通用安装 3.2、Ubuntu22.04 中Drag and drop is not supported问题 四、安装依赖环境 4.1、安装git 4.2、下载Python3 4.3、解压Python3 4.4、编译与安装Python3 3.sudo make install 4.5、安装Pyth…...

React native新架构组成

React Native 的新架构(New Architecture)引入了一些新的组件和概念,旨在提高性能、增强灵活性和简化跨平台开发。主要组成部分包括: Fabric: Fabric Renderer: Fabric 是新的渲染引擎,它旨在取代现有的渲染引擎。与…...

Spring Security+Spring Boot实现登录认证以及权限认证

基本概念 “Authentication(认证)”是spring security框架中最重要的功能之一,所谓认证,就是对当前访问系统的用户给予一个合法的身份标识,用户只有通过认证才可以进入系统,在物理世界里,有点类似于“拿工卡刷门禁”的…...

5款堪称变态的AI神器,焊死在电脑上永不删除!

一 、AI视频合成工具——Runway: 第一款RunWay,你只需要轻轻一抹,视频中的元素就会被擦除,再来轻轻一抹,直接擦除,不喜欢这个人直接擦除,一点痕迹都看不出来。 除了视频擦除功能外,…...

Python和OpenCV图像分块之图像边长缩小比率是2

import cv2 import numpy as npimg cv2.imread("F:\\mytupian\\xihuduanqiao.jpg") # 低反光 cv2.imshow(image, img) # # 图像分块 # dst np.zeros(img.shape, img.dtype) ratio 2 #图像边长缩小比率是2,也就是一张图片被分割成四份 height, wi…...

C语言中的位域(bit-field)是什么,以及它的用途和优缺点

在C语言中,位域(bit-field)是一种特殊的数据结构,它允许在结构体(struct)中定义其成员所占用的位数,而不是使用整个字节或更大的内存空间。位域通常用于存储布尔值、状态标志、硬件控制位等&…...

从面试角度了解前端基础知识体系

目录 前端专业知识相关面试考察点 HTML 与 CSS Javascript 网络相关 浏览器相关 安全相关 算法与数据结构 计算机通用知识 前端项目经验相关面试考察点 前端框架与工具库 Node.js 与服务端 性能优化 前端工程化 开发效率提升 监控、灰度与发布 多人协作 结束语…...

【DKN: Deep Knowledge-Aware Network for News Recommendation】

DKN: Deep Knowledge-Aware Network for News Recommendation 摘要 在线新闻推荐系统旨在解决新闻信息爆炸的问题,为用户进行个性化推荐。 总体而言,新闻语言高度凝练,充满知识实体和常识。 然而,现有的方法并没有意识到这些外部…...

Linux管道与重定向

管道 是进程通信的方法之一,在Linux中用命令1|命令2的形式表示,将前一个命令的结果作为后续命令的参数进行输入,也有tee管道,可以进行多次筛选,即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…...

kotlin数组

1、kotlin中的数组与java数组比较: 2、创建 fun main() {// 值创建val a intArrayOf(1,2,3)// 表达式创建val b IntArray(3){println("it: ${it}")it1}println("a数组:${a.contentToString()}, 长度:${a.size}")prin…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

基于Python的气象数据分析及可视化研究

目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…...

比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表

设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...