【通信协议】CAN总线通信协议的学习(一)基础理论知识学习

news2025/1/12 19:39:23

目录

1、CAN基本概念

1.0、基本概念

1.1、与其他通信协议的区别

1.2、CAN硬件电路

1.3、CAN总线电平信号

1.4、CAN的差分信号

1.5、CAN总线工作原理

1.6、CAN协议物理层

2、数据帧结构

3、CAN参数配置,波特率计算


1、CAN基本概念

CAN:controller area network ,是控制器局域网的简称,在汽车领域和工业控制领域应用比较广泛。

参考:[1-2] 帧格式_哔哩哔哩_bilibili

1.0、基本概念

CAN通信是异步、半双工、多主机串行通信。

异步通讯:无需时钟线,只具有 CAN_High 和 CAN_Low 两条信号线,共同构成一组差分信号线,以差分信号的形式进行通讯。

半双工:can协议上只有一对差分信号,一个时刻只能表示一个信号,所以收发数据需要分时进行。

多主机:在can总线上可以挂载多个控制器设备节点,相互之间可以通信

串行通信:是只有一对差分信号,只能一个接着一个发送数据。

如下图,为can总线上挂载多个设备的图,以及can总线需通过can收发器与其他设备进行通信的图。

每个主控设备都需要通过一个CAN收发器接入到CAN总线

CAN收发器:实现电平转换,输出驱动,输入采用的功能

1.1、与其他通信协议的区别

1.2、CAN硬件电路

主控设备引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN H和CANL分别与总线的CAN H和CANL相连

CAN硬件电路分为

高速CAN闭环总线网络:终端电阻为120欧姆

低速CAN开环总线网络:终端电阻为2.2k欧姆

终端电阻的作用:

1、防止回波反射,不加终端电阻的话,信号会在线路终端发射,进而干扰原始信号

2、收紧两根信号线的电压,使其电压一致。

1.3、CAN总线电平信号

can通信上有两根差分信号线:分别表示为CAN高和CAN低

根据ISO11898标准

CAN高的电压为2.5V和3.5V;CAN低的电压为2.5V和1.5V;

逻辑1的表示为:CAN高和CAN低上的电压为2.5V,两者差值为0V

逻辑0的表示为:CAN高上的电压为3.5V和CAN低上的电压为1.5V,两者差值为2V

电平标准,高速与低速CAN的标准:

默认状态是逻辑1,两根信号的电压都是一样的,收紧状态。

隐性电平:1;

显性电平:0;

1.4、CAN的差分信号

CAN通信的一大特点就是使用差分信号进行传输数据,

差分信号在数据传输过程中有较强的抗干扰能力,当外部有干扰时,电压会发送突变,但由于采用的是差分信号,CAN高和CAN低两根数据线会同时发生突变,而两数据线之间的差值还是保持不变,逻辑1和逻辑0的状态不会改变,所以有较强的抗干扰能力。

1.5、CAN总线工作原理

can总线通信过程被分为四个阶段:

1、发送报文:每个节点都可以在总线上发送报文。在发送前,节点需要判断总线是否空闲。

2、仲裁机制:如果多个节点同时发送报文,总线会判断那个节点优先发送报文,是根据报文的标识符ID,ID越小优先级越高。

3、数据传输:优先级最高的报文在总线上传输,其他节点,暂停发送并等待下一次总线空闲。

4、错误检测与处理:有错误检测机制,如CRC校验/帧校验/应答错误等。若节点检测到错误都会终端传输,并重发报文。

1.6、CAN协议物理层

can通信在物理层上有两个标准,ISO11898高速模式和ISO11519-2低速模式,

我个人比较常接触的到的ISO11898模式的,是高速短距离的闭环总线网络,通信速度最高1Mbps,总线最长为40m,最大连接单元30个,终端电阻为120欧姆

而ISO11519-2标准,则是低速远距离的开环总线网络,通信速度最高位125kbps,总线最长1km,可连接数量最大为20个,终端电阻为2.2K欧姆

具体区别为如下图所示。

2、数据帧结构

CAN通信的数据帧结构分为7个段:

  1. 帧起始(SOF):标志着一个数据帧的开始,由一个显性位(逻辑 0)组成。
  2. 仲裁场:用于确定数据帧的优先级。包含标识符(ID)和远程传输请求位(RTR)。标识符的值越小,优先级越高。当多个节点同时发送数据时,优先级高的节点会赢得总线的控制权。
  3. 控制场:包含数据长度代码(DLC)等信息,指示数据场中实际的数据字节数。
  4. 数据场:包含实际要传输的数据内容,可以是 0 到 8 个字节。
  5. CRC 场:循环冗余校验码,用于检测数据传输过程中的错误。接收方会根据接收到的数据重新计算 CRC 值,并与接收到的 CRC 值进行比较,如果不一致,则说明数据传输出现错误。
  6. ACK 场:确认位,由接收方在正确接收到数据帧后发送一个显性位进行确认。
  7. 帧结束(EOF):标志着数据帧的结束,由 7 个隐性位(逻辑 1)组成。

3、CAN参数配置,波特率计算

波特率计算

CAN总线的每一个数据位的时长进行了详细的划分

同步段,传播段,缓冲1段,缓冲2段

每个段又由若干个最小时间单位Tq构成。

波特率的计算方式为:1 / 一个数据位的时长。

参考:

趋近于完美的通讯 CAN总线!4分钟看懂!_哔哩哔哩_bilibili

一文读懂CAN总线协议 (超详细配34张高清图)_can总线通信协议-CSDN博客

秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!_can协议的命令表怎么理解-CSDN博客

【通信协议】CAN总线通信协议_can协议-CSDN博客

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

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

相关文章

探索文件系统,Python os库是你的瑞士军刀

文章目录 探索文件系统,Python os库是你的瑞士军刀第一部分:背景介绍第二部分:os库是什么?第三部分:如何安装os库?第四部分:简单库函数使用方法1. 获取当前工作目录2. 改变当前工作目录3. 列出目…

QT6学习第六天 初识QML

QT6学习第六天 创建Qt Quick UI项目使用Qt Quick DesignerQML 语法基础 创建Qt Quick UI项目 如果你有只测试QML相关内容快速显示界面的需求,这时可以创建Qt Quick UI 项目,该项目中只包含 QML 和 JavaScript 代码,没有 C 代码。 对于 QML …

深入浅出剖析典型文生图产品Midjourney

2022年7月,一个小团队推出了公测的 Midjourney,打破了 AIGC 领域的大厂垄断。作为一个精调生成模型,以聊天机器人方式部署在 Discord,它创作的《太空歌剧院》作品,甚至获得了美国「数字艺术/数码摄影」竞赛单元一等奖。 这一事件展示了 AI 在绘画领域惊人的创造力,让人们…

评分规则的建模,用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分

子夜(603***854) 15:11:40 和各位讨论一下设计问题: 有个有业务场景: 有一组产品共4个产品(数目用户可自定义), 需要一套规则,比如如果用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分 又比如另一组产品 产品有个必选属性,如果选了其中所有的必选则5分, 其他项每1…

水体分割检测 包含YOLOV,COCO,VOC三种标记的数据集包含 857张图片

说明 水体分割检测指的是利用深度学习模型进行水体区域的分割和检测。YOLO(You Only Look Once)是一种流行的实时目标检测算法,其主要特点是速度快,适合于实时场景下的目标检测。 在水体分割检测中,可以使用YOLO算法来…

【新人系列】Python 入门(十四):文件操作

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。 前提条件 在开始之前,请确保您已安装以下内容: Qt(版本 5.15 )OGRE(版本14.2.5)…

丹摩 | 利用 CogVideoX 生成视频

声明:非广告,纯用户体验 1. CogVideoX CogVideoX 是智谱 AI 推出的一款极具创新性与突破性的视频生成产品。它在技术层面展现出诸多卓越特性,例如其采用的 Diffusion Transformer(DiT)架构奠定了强大的生成能力基础…

本地化部署 私有化大语言模型

本地化部署 私有化大语言模型 本地化部署 私有化大语言模型Anaconda 环境搭建运行 代码概述环境配置安装依赖CUDA 环境配置 系统设计与实现文件处理与加载文档索引构建模型加载与推理文件上传与索引更新实时对话与文档检索Gradio 前端设计 主要功能完整代码功能说明运行示例文件…

05_JavaScript注释与常见输出方式

JavaScript注释与常见输出方式 JavaScript注释 源码中注释是不被引擎所解释的,它的作用是对代码进行解释。lavascript 提供两种注释的写法:一种是单行注释,用//起头:另一种是多行注释,放在/*和*/之间。 //这是单行注释/* 这是 多行 注释 *…

python常见问题-pycharm无法导入三方库

1.运行环境 python版本:Python 3.9.6 需导入的greenlet版本:greenlet 3.1.1 2.当前的问题 由于需要使用到greenlet三方库,所以进行了导入,以下是我个人导入时的全过程 ①首先尝试了第1种导入方式:使用pycharm进行…

vue3实现自定义导航菜单

一、创建项目 1. 打开HBuilder X 图1 2. 新建一个空项目 文件->新建->项目->uni-app 填写项目名称:vue3demo 选择项目存放目录:D:/HBuilderProjects 一定要注意vue的版本,当前选择的版本为vue3 图2 点击“创建”之后进入项目界面 图…

多模态图像生成模型Qwen2vl-Flux,利用Qwen2VL的视觉语言理解能力增强FLUX,可集成ControlNet

Qwen2vl-Flux 是一种先进的多模态图像生成模型,它利用 Qwen2VL 的视觉语言理解能力增强了 FLUX。该模型擅长根据文本提示和视觉参考生成高质量图像,提供卓越的多模态理解和控制。让 FLUX 的多模态图像理解和提示词理解变得很强。 Qwen2vl-Flux有以下特点…

原生html+css+ajax+php图片压缩后替换原input=file上传

当前大部分照片尺寸大于5MB&#xff0c;而50MB限制的PHP通常上传4MB左右 于是就需要压缩后上传&#xff0c;上5代码使用后筛选的代码 <?php if ($_SERVER[REQUEST_METHOD] POST) { $uploadDir uploads/ . date(Ymd) . /; if (!is_dir($uploadDir)) { mkdir($uploadDir, …

1 ISP一键下载

BOOT0BOOT1启动模式说明0X用户Flash用户闪存存储器&#xff0c;也就是Flash启动10系统存储器系统存储器启动&#xff0c;串口下载11SRAM启动SRAM启动&#xff0c;用于在SRAM中调试代码 闪存存储器 是STM32 的内置FLASH,一般使用JTAG或者SWD模式下载程序时&#xff0c;就是下载…

泷羽sec学习打卡-shell命令4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于shell的那些事儿-shell4 如何在shell脚本与用户进行交互&#xff1f;如何限制用户输入的字符个数呢…

电子应用设计方案-27:智能淋浴系统方案设计

智能淋浴系统方案设计 一、系统概述 本智能淋浴系统旨在为用户提供舒适、便捷、个性化的淋浴体验&#xff0c;通过集成多种智能技术&#xff0c;实现水温、水流、淋浴模式的精准控制以及与其他智能家居设备的联动。 二、系统组成 1. 喷头及淋浴杆 - 采用可调节角度和高度的设计…

Spring系列之批处理Spring Batch介绍

概述 官网&#xff0c;GitHub A lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems. 执行流程 实战 假设有个待处理的任务&#xff0c;如文件batch-tes…

内存共享模型和Actor 模型

内存共享模型&#xff1a; 典型代表&#xff1a;java Actor 模型&#xff1a; 典型代表&#xff1a;HamnoyOS API 13

机器学习期末复习笔记

markdown文件下载&#xff1a;https://github.com/1037827920/SCUT-Notes/tree/main/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0 机器学习期末复习笔记 1. 机器学习简介 1.1 什么是机器学习 如图所示&#xff1a; 几乎所有的机器学习都包括以下三个部分&#xff1a;数据、模型和…