CAN通信的位定时与同步

位定时与同步

1.位时间

1.1相关基本概念

Pasted image 20230730180935.png|625

  • 1)系统时钟:记为 t c l k t_{clk} tclk

  • 2)CAN时钟周期:CAN时钟是由系统时钟分频而来的一个时间长度值,表示CAN控制器的工作时钟,实际上就是一个时间份额 t Q t_Q tQ。可以按照下面的公式计算:

    • 时间份额 t Q t_Q tQ:1. CAN控制器的一个时钟周期
      2. CAN控制器工作的最小时间单位
  • 3)BRP:叫做波特率预分频值(baud rate prescaler);
    由前面的图可知,上述三者存在以下的公式关系:
    t Q = t c l k × B R P t_Q=t_{clk}\times BRP tQ=tclk×BRP
    注意:可以在网络上看到一些博客把上述公式记为: t Q = t c l k × ( B R P + 1 ) t_Q=t_{clk}\times (BRP+1) tQ=tclk×(BRP+1)。实际上分频值是存在一个寄存器里面的,且从0开始,这里是取得BRP的值为该寄存器里面的实际值,也是对的,至于这两种写法谁更标准,可能需要去翻阅相关官方文档。

![[Pasted image 20230730182810.png|575]]

  • 4) 位时间:位时间表示一个二进制位在总线上传输时所需要的时间。如上图所示,在本文中,则指的是CAN通信的位时间。
    • 一个位可以分为四个时间段;
    • 每个段 又由若干个 t Q t_Q tQ构成,位时间大概包含8~25 t Q t_Q tQ
    • 波特率 = 1 位时间 波特率=\frac{1}{位时间} 波特率=位时间1

1.2 位时间分段

  • 1)同步段(Synchronization Segment)

    • 固定长度为一个 t Q t_Q tQ
    • 一个位的传输时从同步开始的;
    • 同步段用于同步总线上的各个节点,多个连接在总线上的单元通过此段实现时序调整,从而能同步进行接收和发送的工作,一个位的跳变沿在此时间段内;
  • 2)传播段(Propagation Segment)(记为 t P r o p t_{Prop} tProp)

    • 传播段时长可编程(1~8个时间份额 t Q t_Q tQ)。
    • 传播段用于补偿报文在总线和节点上传输时所产生的时间延迟;
    • 传播段时长 ≥ 2 × \ge 2 \times 2× 报文在总线和节点上传输时产生的时间延迟;

    传播延时
    ![[Pasted image 20230730202511.png|600]]
    其中,发送单元的输出延迟接收单元的输入延迟分别表示CAN收发器到CAN控制器之间的延时。
    在CAN网络上,两个节点之间进行通信,CAN报文首先从控制节点的控制器发出,经过CAN收发器发送到总线上,再通过一段距离的传输,到达接收节点的CAN收发器CAN控制器,最后接收节点发出ACK显性应答位,重复上述过程到达发送节点,可以看到一次单向传输的延迟包括发送单元的输出延迟,总线上信号传播延迟,接收单元的输入延迟。

  • 3)相位缓冲段1(Phase Buffer Segment1)和 相位缓冲段2(Phase Buffer Segment2)

    • 用于补偿总线上的边沿相位误差;
    • 用于补偿节点间的晶振误差;
    • 允许通过重同步延长PBS1或缩短PBS2从而补偿同步误差(因为时钟的偏差,传送延迟等,各单元会有同步误差);
    • PBS<PBS2
    • 在PBS1时间段的末端进行总线状态的采样;
    • 长度可编程:PBS1为18$t_Q$、PBS2为28 t Q t_Q tQ

    同步跳转宽度SJW(reSynchronization Jump Width)
    a. SJW是相位缓冲段PBS1和PBS2调整的最大值。
    b. SJW的值可以通过编程从1~4中取值。
    c. SJW的值 ≤ min ⁡ { P B 1 , P B 2 } \le\min\{PB1,PB2\} min{PB1,PB2}
    d. 由于PBS1>PBS2,加上前面b和c,进一步可以推导出:1 ≤ \le SJW的值 ≤ min ⁡ { P B S 1 , 4 } \le\min\{PBS1,4\} min{PBS1,4}
    问题:对于SJW的值,为什么只能取1~4,还是很疑惑。

  • 4)采样点(Sample Point)

    • 采样点一般位于相位缓冲段1之后,采样点是读取总线电平,并解释各位的值的一个时间点,采样点对CAN总线来说也非常重要,尤其在组网的时候,多个节点尽量保持同一个采样点,且最好在但不超过7/8位时间点上。

1.3 总线分段

CAN从总线采用的是一部串行通信,为了保证报文的接收节点能在正确的采样点采集到准确的点评,因此采用了总线同步的机制,CAN的同步则包括了硬同步重同步

同步规则:
a. 一个位时间内只允许一种同步方式;
b. 任何一个“隐性”到“显性”的跳变都可用于同步。

  • 1)硬同步
    ![[Pasted image 20230730205618.png|500]]
    硬同步发生在SOF位,所有接收节点调整各自当前位的同步,调整宽度不限,使其位于发送的SOF内。

    例子
    ![[Pasted image 20230730205848.png|625]]
    由上图可以看到,发送节点在发送SOF位时,SOF位的下降沿在此时位时间的同步段(SS段),此时接收节点发现自己当前位的同步段和发送节点的SOF的同步段并没有同步到同一时间(由上图可知接收节点SOF位的同步段要比发送节点的SOF位的同步段时间快6个 t Q t_Q tQ,为了使得发送节点和接收节点同步,接收节点会令自己的同步段向后调整6个 t Q t_Q tQ,使得自己的同步段与发送节点的同步段同步。

    从这个例子也可以看出,硬同步只是在SOF时起作用,并不能确保后续的CAN帧的位时序都是同步的。那么后续CAN帧的位时序同步都是怎么保证的呢,此时就需要引入重同步了。

  • 2)重同步
    重同步是指,接收节点检测出出了SOF位意外的其他位,通过调整位时序进行的同步调整。重同步会通过加长PBS1或者PBS2来调整同步,从而保证采样点的准确。

    例子1
    ![[Pasted image 20230730212656.png|575]]
    当发送端跳变沿落比接收端跳变沿晚两个 t Q t_Q tQ则接收端节点的PBS1应该延长两个 t Q t_Q tQ,则可使得发送端和接收端的采样点对齐。

    例子2
    ![[Pasted image 20230730212911.png|575]]
    当发送端跳变沿落比接收端跳变沿早两个 t Q t_Q tQ,则接收端节点的PBS2应缩短两个 t Q t_Q tQ,那么接收端的下一个位时间中,采样点可以提前两个 t Q t_Q tQ,从而使得发送和接收端的下一位采样点能够同步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图&#xff1a; 需要先加载运行js代码&#xff0c;可能是对环境进行检测&#xff0c;反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscrip…

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下&#xff1a; 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下&#xff1a; Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …

【Docker 学习笔记】Windows Docker Desktop 安装

文章目录 一、前言二、Windows Docker 安装1. 基于Hyper-V后端和Windows容器的安装2. 基于WSL2后端的安装&#xff08;推荐&#xff09;3. 安装Docker Desktop on Windows4. 启动并验证Docker Desktop 一、前言 Docker并非是一个通用的容器工具&#xff0c;它依赖于已存在并运…

《零基础入门学习Python》第070讲:GUI的终极选择:Tkinter7

上节课我们介绍了Text组件的Indexs 索引和 Marks 标记&#xff0c;它们主要是用于定位&#xff0c;Marks 可以看做是特殊的 Indexs&#xff0c;但是它们又不是完全相同的&#xff0c;比如在默认情况下&#xff0c;你在Marks指定的位置中插入数据&#xff0c;Marks 的位置会自动…

SAMBA 文件分享相关 笔记

目标说明 在Linux 安装Samba&#xff0c;然后在Windows端映射为网络硬盘 流程 Linux 端命令 apt install samba -y 默认情况下软件会询问是否迁移系统网络设置以搭建协议&#xff0c;选择迁移即可修改配置文件 vim /etc/samba/smb.conf Samba 的配置文件中会带一个名为 prin…

[VRTK4.0]将Unity输入系统与VRTKv4结合使用

学习目标&#xff1a; 展示了如何在Unity项目中设置Unity输入系统&#xff0c;以及如何导入输入系统Tilia包以支持VRTKTilia包与新的Unity输入系统操作一起工作。 流程&#xff1a; 步骤一&#xff1a; 首先我们需要再次检查项目设置是否具有新的Unity输入系统。通过Project S…

JAVA SE -- 第十三天

&#xff08;全部来自“韩顺平教育”&#xff09; 集合 一、集合框架体系 集合主要是两组&#xff08;单列集合、双列集合&#xff09; Collection接口有两个重要的子接口List 、Set&#xff0c;它们的实现子类都是单列集合 Map接口的实现子类是双列集合&#xff0c;存放的…

Java019-1——面向对象的三大特性

一、封装性 将类的某些信息隐藏在类内部&#xff0c;不允许外部程序直接访问&#xff0c;而是通过该类提供的方法来实现对隐藏信息的操作和访问。&#xff08;这里说的信息就是类中的属性和方法&#xff09; 1.1、封装性的体现 想要通过代码体现封装性之前&#xff0c;需要先…

使用vscode+platformio搭建arduino开发环境

存在的问题&#xff1a; Arduino编译时会将所有的C文件都编译一遍造成编译很慢&#xff0c;一个简单的工程稍加修改有可能都需要三四分钟才能编译完成&#xff0c;同时arduino也不支持代码跳转查看功能&#xff0c;不方便代码查看。 解决方法&#xff1a; 使用vscodeplatfor…

【c++】类和对象

类和对象 面向过程和面向对象的初步认识 我们用军事为例&#xff0c;要完成一次作战&#xff0c;需要侦察、后勤保障、战略部署、战术部署...等等 面向过程&#xff1a; 更加关注过程&#xff0c;关注如何侦察&#xff08;无人机侦察、火力侦察、侦察小组侦察&#xff09;&…

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义 vue.js 直接用在 script 标签中的完整版本&#xff08;同时包含编译器 compiler 和运行时 runtime&#xff09;&#xff0c;可以看到源码&#xff0c;适用于开发环境。 这个版本视图可以写在…

微服务的各种边界在架构演进中的作用

演进式架构 在微服务设计和实施的过程中&#xff0c;很多人认为&#xff1a;“将单体拆分成多少个微服务&#xff0c;是微服务的设计重点。”可事实真的是这样吗&#xff1f;其实并非如此&#xff01; Martin Fowler 在提出微服务时&#xff0c;他提到了微服务的一个重要特征—…

【Chat GPT】用 ChatGPT 运行 Python

前言 ChatGPT 是一个基于 GPT-2 模型的人工智能聊天机器人&#xff0c;它可以进行智能对话&#xff0c;同时还支持 Python 编程语言的运行&#xff0c;可以通过 API 接口进行调用。本文将介绍如何使用 ChatGPT 运行 Python 代码&#xff0c;并提供一个实际代码案例。 ChatGPT …

【雕爷学编程】MicroPython动手做(18)——掌控板之声光传感器2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

[php-cos]ThinkPHP项目集成腾讯云储存对象COS

Cos技术文档 1、安装phpSdk 通过composer的方式安装。 1.1 在composer.json中添加 qcloud/cos-sdk-v5: >2.0 "require": {"php": ">7.2.5","topthink/framework": "^6.1.0","topthink/think-orm": "…

Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞

异常断电导致数据库无法启动,尝试对数据文件进行recover操作,报ORA-00283 ORA-00742 ORA-00312错误,由于redo写丢失无法正常应用 D:\check_db>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyrig…

NoSQL-Redis集群

NoSQL-Redis集群 一、集群&#xff1a;1.单点Redis带来的问题&#xff1a;2.解决&#xff1a;3.集群的介绍&#xff1a;4.集群的优势&#xff1a;5.集群的实现方式&#xff1a; 二、集群的模式&#xff1a;1.类型&#xff1a;2.主从复制&#xff1a; 三、搭建主从复制&#xff…

阿里云服务器全方位介绍_性能功能优势和租用费用

阿里云服务器全方位介绍包括云服务器ECS优势、云服务器租用价格、云服务器使用场景及限制说明&#xff0c;阿里云服务器网分享云服务器ECS介绍、个人和企业免费试用、云服务器活动、云服务器ECS规格、优势、功能及应用场景详细说明&#xff1a; 目录 什么是云服务器ECS&#…

细讲TCP三次握手四次挥手(三)

TCP/IP 协议族 在互联网使用的各种协议中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的 TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议&#xff0c;而往往是表示互联网所使用的整个 TCP/IP 协议族。 互联网协议套件&#xff08;英语&#xff1a;Internet Pr…

29_互联网(The Internet)(IP数据包;UDP;TCP;DNS;OSI)

上篇介绍了计算机网络的基础知识&#xff0c;也提到互联网&#xff08;The Internet&#xff09;&#xff0c;本篇将会详细介绍互联网&#xff08;The Internet&#xff09;。 文章目录 1. 互联网&#xff08;The Internet&#xff09;组成及数据包传输过程2. IP 数据包的不足3…