CAN学习笔记

学习链接:CAN学习笔记(1)_can sjw-CSDN博客

内容全部取自链接,非原创。用于自己学习和记录,如有错误请指正。如果侵权了,请联系我删掉。

CAN主要有两种物理层,1.闭环的ISO11898  2.开环的ISO11519-2

闭环的框图:

备注:

1.可以留意总线网络中有CAN控制器和CAN收发器。通常一些带CAN外设的MCU及代表的是带有CAN控制器。 CAN收发器需要单独的IC。

2.120欧电阻用于总线可以快速的回归隐形状态。提高稳定性。

备注:1.2.2K电阻的作用也是可以让总线快速的回归隐性作用。

           2.MCU中的CAN控制器外设给到CAN收发器的是TTL逻辑电平,经过CAN收发器转换成差分信号。

CAN 的隐形和显性介绍:

隐性是逻辑1

显性是逻辑0

CAN一个位的介绍:

CAN的一个位包含了:SS,PTS.PBS1.PBS2

其中SS 占一个tq,tq是时间片。

波特率:一位数据位的主要由SS 段+PTS 段+PBS1 段+PBS2段,进而根据每秒可以传输的数据位的个数来确定通讯中的波特率。

SJW是什么?

---------------------------------------------------------------------------------------------------------------------------------

重要!!!

CAN的同步问题

CAN 同步分为两个部分:

1.硬同步

2.重新同步

硬同步:

硬同步问题1:总线上出现帧起始信号的下降沿,到节点内部原来的同步位置为什么会产生一个比较大的偏移?

这个地方是一个位发生的事情,总线在出现帧起始信号下降沿SOF的时候,假设就是A节点发的,但是B节点在接收这个显性的时候正好在PTS或者PBS段,B节点发现SOF不在SS段,B节点就会同步SS使SOF在SS段。

补充图理解:

重新同步:

针对下图这种相位有点偏移的,需用到重新同步。

充分理解相位超前和相位滞后

为什么会有相位超前和相位滞后这个也要理解一下//这个上面疑问已经解答了,实际就是总线在出现SOF之后,落在某一节点的SS PTS PBS1 PBS2可能的任意一个位置。

为什么有了硬件同步,还需要重新同步?

当硬同步结束后,在后续的数据传输过程中,必须保证每一个由隐性电平到显性电平的跳变沿也必须落在SS段内。否则,产生重新同步。

疑问1:硬同步不是在每个CAN位都会硬同步的吗?

按照另一个博主的阐述好像确实只会硬同步一次。4 CAN同步机制-CSDN博客

还是有一个问题就是,硬同步是在每一帧的第一个帧吗?

是的。

来自文心一言的回答:

CAN硬同步通常是在每一帧的第一个位,即帧起始位(SOF)进行的。这一同步机制是CAN总线通信中的重要组成部分,用于确保所有节点在接收到新的数据帧时能够重新同步其位时序。

CAN硬同步的详细解释:

  1. 同步目的
    • 由于CAN总线属于异步通讯,没有专门的时钟信号线,因此节点间必须约定好波特率以确保通信顺畅。然而,由于每个节点的晶振可能存在微小差异,长时间通信后会产生累计误差。硬同步的目的就是在每一帧开始时,通过帧起始位的同步,消除或减小这些累计误差。
  2. 同步过程
    • 当总线处于空闲状态时,一旦有节点开始发送数据帧,该帧的起始位(SOF)会触发一次硬同步。此时,所有接收节点都会调整自己的同步段(SS)位置,使其与发送节点的帧起始位SS段对齐。
    • 这种对齐操作通常是通过接收节点检测帧起始位的下降沿,并据此调整自己的时序来实现的。无论接收节点之前的位时序如何,一旦检测到帧起始位,都会立即进行硬同步,重新开始计算位时间。
  3. 同步效果
    • 硬同步确保了所有节点在接收新数据帧时都能从同一起点开始计算位时间,从而消除了前一帧可能产生的累计误差。
    • 然而,由于晶振差异和线路延迟等因素的存在,硬同步并不能保证后续位时序的完全同步。因此,在CAN总线通信中,还需要通过重同步机制来进一步调整位时序。

注意事项:

  • 硬同步只在总线空闲且检测到帧起始位时才进行。
  • 在消息帧的随后位中,如果检测到从1到0的跳变(且该跳变落在同步段之外),则会引起重同步操作。
  • CAN总线通信中的位填充机制也有助于提高同步质量,通过增加从1到0的跳变机会来增多重同步的数量。

综上所述,CAN硬同步确实是在每一帧的第一个帧起始位进行的,它是CAN总线通信中确保节点间同步的重要机制之一。

 补充:

未完待续。

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

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

相关文章

Hadoop3:NameNode和DataNode多目录配置(扩充磁盘的技术支持)

一、NameNode多目录 1、说明 NameNode多目录,需要在刚搭建Hadoop集群的时候,就配置好 因为,配置这个,需要格式化NameNode 所以,如果一开始没配置NameNode多目录,后面,就不要配置了。 2、配置…

数据库组成及原理

属性: 把数据库中的一个表类比成一个公司,那么公司里的每个人都是一个“属性”(表中的一个字段视为一个属性),不管老板还是员工,只要是公司里的人,就都是一个属性。 主键: 老板就是“…

网络安全 文件上传漏洞-20 第二十关 Pass-20

点击进入第二十关,并选择显示代码: $is_upload false; $msg null; if(!empty($_FILES[upload_file])){//检查MIME$allow_type array(image/jpeg,image/png,image/gif);if(!in_array($_FILES[upload_file][type],$allow_type)){$msg "禁止上传该…

vector模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间和类类的成员变量 迭代器迭代器获取函数 构造函数默认构造使用n个值构造迭代器区间构造解决迭代器区间构造和用n个值构造的冲突拷贝构造 析构函数swap【交换函数】赋值运算符重载emptysize和capacityopera…

N5 使用Gensim库训练Word2Vec模型

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊# 前言 前言 这周学习训练一个Word2Vec模型,并进行一些基本的词向量操作。 Word2Vec 模型 Word2Vec 是一种基于神经网络的词向量表示方法&#x…

HMI 的 UI 风格成就经典

HMI 的 UI 风格成就经典

力扣61. 旋转链表(java)

思路:用快慢指针找到最后链表k个需要移动的节点,然后中间断开节点,原尾节点连接原头节点,返回新的节点即可; 但因为k可能比节点数大,所以需要先统计节点个数,再取模,看看k到底需要移…

Python数据可视化书籍推荐:利用Python进行数据分析

《利用Python进行数据分析》 这本书几乎是数据分析入门必读书了 主要介绍了python 3个库numpy(数组),pandas(数据分析)和matplotlib(绘图)的学习 阅读本书可以获得一份关于在Python下操作、处…

Rustdesk如何编译代码实现安装后不会显示主界面,不会在右下角出现托盘图标,作为后台服务运行

环境: Rustdesk1.1.9 问题描述: Rustdesk如何编译代码实现安装后不会显示主界面,不会在右下角出现托盘图标,作为后台服务运行 解决方案: 可以自定义进程名称和图标,不会显示主界面,不会在…

LLM大模型中LoRA是什么?面试经验回答汇总(2024.7月最新)

目录 1 什么是 LoRA? 2 LoRA 的思路是什么? 3 LoRA 的特点是什么? 4 简单描述一下 LoRA? 5 QLoRA 的思路是怎么样的? 6 QLoRA 的特点是什么? 7 AdaLoRA 的思路是怎么样的? 8 LoRA权重是否可以合入…

笛卡尔乘积算法js实现

全因子实验设计( DOE) :指所有因子的所有水平的所有组合都至少进行一次实验,可以估计所有的主效应和所有的各阶交互效应。 笛卡尔乘积:指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),…

视频监控汇聚和融合平台的特点、功能、接入方式、应用场景

目录 一、产品概述 二、主要特点 1、多协议支持 2、高度集成与兼容性 3、高性能与可扩展性 4、智能化分析 5、安全可靠 三、功能概述 1. 视频接入与汇聚 2. 视频存储与回放 3. 实时监控与预警 4. 信息共享与联动 5. 远程管理与控制 四、接入方式 1、直接接入 2…

flask与vue实现通过websocket通信

在一些情况下,我们需要实现前后端之间的时刻监听,本文是一篇工具文档,用于解决前后端之间使用websocket交互。 一. Flask的相关配置 1. 下载相关依赖库 如果还没有配置flask的话,需要先安装flask,同时为解决跨域问题&#xff0…

创建线程的五种方式

一.继承Thread ,重写run class MyThread extends Thread{Overridepublic void run() {//这里的内容就是该线程要完成的工作while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeExceptio…

Qt开发 | qss简介与应用

文章目录 一、qss简介与应用二、QLineEdit qss介绍与使用三、QPushButton qss1.常用qss1.1 基本样式表1.2 背景图片1.3 图片在左文字在右 2.点击按钮弹出菜单以及右侧箭头样式设置3.鼠标悬浮按钮弹出对话框 四、QCheckBox qss妙用:实时打开关闭状态按钮五、QComboBo…

UE4_材质_使用彩色半透明阴影

学习笔记,不喜勿喷!侵权立删,祝愿大美临沂生活越来越好! 本教程将介绍如何配置虚幻引擎来投射彩色半透明阴影。 此功能在许多应用中都很有用,常见例子就是透过彩色玻璃窗的彩色光。 一、半透明阴影颜色 阴影在穿过半…

博途S7-1500PLC“虚轴“编程应用

1、CODESYS如何添加虚轴 如何添加虚轴(AM400PLC)-CSDN博客文章浏览阅读164次。EtherCAT运动控制总线启用的时候,选择EtherCAT总线任务周期。选择好后,选择点击添加。https://rxxw-control.blog.csdn.net/article/details/139898985虚轴是利用软件算法实现的运动控制轨迹规划…

HarmonyOS ArkUi 官网踩坑:单独隐藏导航条无效

环境: 手机:Mate 60 Next版本: NEXT.0.0.26 导航条介绍 导航条官网设计指南 setSpecificSystemBarEnabled 设置实际效果: navigationIndicator:隐藏导航条无效status:会把导航条和状态栏都隐藏 官方…

公网IP变更自动微信通知与远程执行命令的C++开源软件

基本功能 智能公网IP变更监测与微信通知 一旦检测到公网IP地址发生变更,系统将自动通过预设的QQ邮箱(该邮箱与微信绑定,实现微信通知)发送新IP地址通知。同时,软件会即时更新本地配置文件中的IP地址及变更时间&#…

深度学习标注文件格式转换

json转xml 原始数据集文件夹中图片格式为bmp&#xff0c;标注文件为json&#xff0c;图片和标注文件放在同一个文件夹下面&#xff0c;将json转为xml格式&#xff0c;图片和标注文件分别存放在一个文件夹下面。 headstr """\ <annotation><folder>…