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

CAN通信笔记-位时间、Tq及采样点同步

本文框架

  • 1.前言
  • 2. 位时间
    • 2.1 位时间定义
    • 2.2 位时间计算
  • 3. Tq
    • 3.1 Tq的计算
      • 3.1.1 举个例子
    • 3.2 位时间与Tq的换算
  • 4. 采样点同步
    • 4.1 硬同步
    • 4.2 重同步
      • 4.2.1 延长PBS1的重同步
      • 4.2.2 缩短PBS2的重同步

1.前言

本篇记录些关于CAN的一些学习笔记,说实话CAN协议发展的已经非常成熟了,网上关于CAN通信的分享非常多,很多文章讲得而比较好,自己总结的这篇不是枯燥的理论,会结合具体的例子进行计算,相对于新手会更容易理解些,言归正传,下面进入正题。

2. 位时间

2.1 位时间定义

由发送单元在非同步的情况下每秒钟发送的位数称为位速率,即一个二进制位在总线上传输所需要的时间
位时间的组成包括四个部分:同步段、传播段、相位缓冲段1及相位缓冲段2四部分组成,其排列顺序示例如下:
在这里插入图片描述
同步段(SS: Synchronization Segment):每个位的传输从同步段开始,用于同步各节点,同步进行接收和发送的工作。
长度对应1个Tq

传播段(PTS: Propagation Time Segment):用于吸收网络上的物理延迟的段。
所谓的网络的物理延迟指发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟,这个段的时间为以上各延迟时间的和的两倍。
其长度对应1~8个Tq,

相位缓冲段1:同步过程中可以对TSEG1进行延长,此外为方便编程,许多CAN模块将传播段及TSEG1合并为一段。
最小为3个Tq

相位缓冲段2:同步过程中可以对TSEG2进行缩短。
最小为2个Tq

2.2 位时间计算

在计算位时间前,需要知道波特率,虽然波特率与比特率在定义上有所区别,但对于CAN总线上的传输而言可以认为其数值是一样的,即(1/波特率)为传输一个Bit所需的时间,

举个栗子
对于传输速率为500KBaud标准CAN而言,其位时间即为1/500kbaud = 2us/Bit

3. Tq

即Time Quantum,时间量子,或者一个时间份额。

3.1 Tq的计算

涉及到CAN的时钟频率及波特率分频系数(BRP)
Tq=BRP/fCAN

3.1.1 举个例子

对于fCAN=100MHz,BRP=10的case,
Tq=10/100 us=0.1us

3.2 位时间与Tq的换算

一个位时间由多个Tq组成,根据标准规定一个位时间最小由8个Tq组成。

举个栗子
传输速率为500KBaud标准CAN,且fCAN=100MHz,BRP=10的case,换算如下:
位时间 = 1/500k = 2us/Bit
Tq = 10/100 us=0.1us

位时间/Tq=20,即每个Bit由20个Tq组成。

4. 采样点同步

所谓采样点是读取总线电平,并将读到的电平作为位值的点,其位置在相位缓冲段1结束处。

在实际通信过程中,由于发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差,为保证报文接收节点能在正确的采样点采集到准确的电平就需要重新进行同步,同步的方式有两种:硬同步及再同步。

4.1 硬同步

硬同步:接收单元在总线空闲状态检测出帧起始时进行的同步调整,在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段,直接同步到SS位,其示意如下:
在这里插入图片描述

4.2 重同步

检测到下降沿后通过对自身相位缓冲段进行延长或者缩短而实现的同步,延长或缩短的最大范围受SJW(再同步补偿宽度)的限制,该变量定义了重同步的最大Tq,
SJW必须满足的两个条件:
SJW不得大于PBS1和PBS2的最小值;
2)SJW最大不能超过4

4.2.1 延长PBS1的重同步

适用情况:隐性电平到显性电平的边沿出现在PTS和BPS1间即发的比收的慢,延时等一等。

举个例子,当SJW=2,在PTS段检测到下降沿,较发送节点早了两个Tq,此时通过延长PBS1段2个Tq,此时采样点经过补偿后刚好与发送节点相同。

在这里插入图片描述

4.2.2 缩短PBS2的重同步

适用情况:隐性电平到显性电平的边沿出现在BPS2,即发的比收的快,这个周期赶不上了,下个周期追回来。。

在这里插入图片描述

相关文章:

CAN通信笔记-位时间、Tq及采样点同步

本文框架1.前言2. 位时间2.1 位时间定义2.2 位时间计算3. Tq3.1 Tq的计算3.1.1 举个例子3.2 位时间与Tq的换算4. 采样点同步4.1 硬同步4.2 重同步4.2.1 延长PBS1的重同步4.2.2 缩短PBS2的重同步1.前言 本篇记录些关于CAN的一些学习笔记,说实话CAN协议发展的已经非常…...

玩转 Kubernetes 配置管理:ConfigMap 和 Secret 实战演示

目录一、简介二、ConfigMap2.1 基于目录创建 ConfigMap2.2 基于文件创建 ConfigMap2.3 从环境文件创建 ConfigMap2.4 定义从文件创建 ConfigMap 时要使用的键2.5 根据字符串创建 ConfigMap三、Secret3.1 基于文件创建Secret3.2 基于字符串创建Secret3.3 yaml文件方式创建secret…...

Kubernetes

一、 kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义…...

从零开始 verilog 以太网交换机(三)MAC发送控制器的设计与实现

从零开始 verilog 以太网交换机(三)MAC发送控制器的设计与实现 🔈声明: 😃博主主页:王_嘻嘻的CSDN主页 🧨 从零开始 verilog 以太网交换机系列专栏:点击这里 🔑未经作者允…...

使用vector<char>作为输入缓冲区

一、引言 当我们编写代码:实现网络接收、读取文件内容等功能时,我们往往要在内存中开辟一个输入缓冲区(又名:input buffer/读缓冲区)来存贮接收到的数据。在C里面我们可以用如下方法开辟输入缓冲区。 ①使用C语言中的数组&#x…...

自己在网站搭建用到的一些网站

背景 以后可能很少做网站类的项目了,所以做个简单总结,把自己的一些经历和一些小工具做个记录 域名和主机 https://www.godaddy.com/zh-sg, 我之前的基本都是国际会议型的网站,所以就在gadaddy上买了主机和域名。目标群体在国内可以考虑腾…...

XLSReadWriteII5 Color 颜色l的调用和使用

XLSReadWriteII5 Color 颜色l的调用和使用 一、色彩三原色 自然界,颜色是由红、绿、蓝三色组成,人眼的可见的颜色,可以通过红、绿、蓝三色按照不同的比例合成产生。 任意一种颜色由这三种原色按照一定的比例混合出来。 二、Windows系…...

RT-Thread SP使用教程

RT-Thread SPI 使用教程 实验环境使用的是正点原子的潘多拉开发板。 SPI从机设备使用的是BMP280温湿度大气压传感器。 使用RT-Thread Studio搭建基础功能。 1. 创建工程 使用RT-Thread Studio IDE创建芯片级的工程。创建完成后,可以直接编译下载进行测试。 2.…...

LeetCode 2363. 合并相似的物品

给你两个二维整数数组 items1 和 items2 ,表示两个物品集合。每个数组 items 有以下特质: items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 ,weighti 表示第 i 件物品的 重量 。 items 中每件物品的价值都是 唯一的 。 请你…...

numpy 中常用的数据保存、fmt多个参数

在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多 一、保存为二进制文件(.npy/.npz) (1)numpy.save(file, arr, allow_pickleTrue, fix_importsTrue) file:文件名…...

从0到1一步一步玩转openEuler--19 openEuler 管理服务-特性说明

文章目录19 管理服务-特性说明19.1 更快的启动速度19.2 提供按需启动能力19.3 采用cgroup特性跟踪和管理进程的生命周期19.4 启动挂载点和自动挂载的管理19.5 实现事务性依赖关系管理19.6 与SysV初始化脚本兼容19.7 能够对系统进行快照和恢复19 管理服务-特性说明 19.1 更快的…...

23美赛E题:光污染(ICM)完整思路Python代码

问题E(综合评价与仿真题):光污染(ICM) 背景 光污染用于描述过度或不良使用人造光。我们称之为光污染的一些现象包括光侵入、过度照明和光杂波。在大城市,太阳落山后,这些现象最容易在天空中看到;然而,它们也可能发生在更偏远的地区。 光污染会改变我们对夜空的看法,…...

快速排序的描述以及两种实现方案

一、快速排序描述 每一轮排序选择一个基准点(pivot)进行分区 1.1. 让小于基准点的元素的进入一个分区,大于基准点的元素的进入另一个分区 1.2. 当分区完成时,基准点元素的位置就是其最终位置在子分区内重复以上过程,直…...

算力引领 数“聚”韶关——第二届中国韶关大数据创新创业大赛圆满收官

为进一步促进数字经济领域创新创业发展,推动国家数据中心集群建设,构建大数据领域资源专业平台,促进大湾区大数据科技成果和创新创业人才转化落地,为韶关大数据领域创新型产业集群的打造、大数据科技成果和创新创业人才的转化落地…...

MySQL 记录锁+间隙锁可以防止删除操作而导致的幻读吗?

文章目录什么是幻读?实验验证加锁分析总结什么是幻读? 首先来看看 MySQL 文档是怎么定义幻读(Phantom Read)的: The so-called phantom problem occurs within a transaction when the same query produces different sets of r…...

【分库分表】企业级分库分表实战方案与详解(MySQL专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…...

(考研湖科大教书匠计算机网络)第五章传输层-第五节:TCP拥塞控制

获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:拥塞控制概述二:拥塞控制四大算法(1)慢开始和拥塞避免A:慢启动(slow start)…...

13.使用自动创建线程池的风险,要自己创建为好

自动创建线程池就是直接调用 Executors去new默认的那几个线程池,但是会出现一定的风险,线程池里面会用到队列,也会跟线程池自身有关,所以要从队列和线程池两个方面去解析。 1.了解线程池的队列 线程池的内部结构主要由四部分组成…...

【项目设计】—— 负载均衡式在线OJ平台

目录 一、项目的相关背景 二、所用技术栈和开发环境 三、项目的宏观结构 四、compile_server模块设计 1. 编译服务(compiler模块) 2. 运行服务(runner模块) 3. 编译并运行服务(compile_run模块) 4…...

Docker学习笔记

1:docker安装步骤Linux 2:docker安装步骤Windows 3:docker官方文档 4:docker官方远程仓库 docker常用命令 1: docker images----查看docker中安装的镜像 2: docker pull nginx------在docker中安装Nginx镜…...

Hugo-PaperMod导航菜单异常修复:从故障诊断到性能优化全指南

Hugo-PaperMod导航菜单异常修复:从故障诊断到性能优化全指南 【免费下载链接】hugo-PaperMod A fast, clean, responsive Hugo theme. 项目地址: https://gitcode.com/GitHub_Trending/hu/hugo-PaperMod Hugo-PaperMod作为一款轻量级响应式主题,…...

踩过PCB缺陷检测长尾分布的坑后,我用DR Loss把YOLOv8尾部类别召回率从58%干到92%

本文基于我7年工业视觉、PCB缺陷检测项目的一线落地经验,针对工业场景最头疼的数据长尾分布痛点——头部常见缺陷样本极多、尾部稀有缺陷样本极少,导致原生YOLOv8尾部类别漏检严重、泛化能力差的问题,完整拆解DR Loss(Distribution Ranking Loss)分布排名损失的核心原理,…...

ASan实战:5种常见内存错误诊断与修复指南(附GCC/Clang编译命令)

ASan实战:5种常见内存错误诊断与修复指南(附GCC/Clang编译命令) 在C/C开发中,内存错误如同潜伏的暗礁,随时可能让程序沉没。AddressSanitizer(ASan)作为Google推出的内存错误检测工具&#xff…...

Labelme标注效率翻倍!手把手教你修改源码,让标签信息直接显示在图上(支持Ctrl+T切换)

Labelme标注效率翻倍实战:源码修改实现标签可视化与快捷键切换 在计算机视觉项目的标注环节中,Labelme作为开源标注工具被广泛使用。但实际标注过程中,我们常常遇到一个令人抓狂的问题:当需要检查某个标注框的具体信息时&#xff…...

MiniCPM-V-2_6赋能Python爬虫:智能数据采集与清洗

MiniCPM-V-2_6赋能Python爬虫:智能数据采集与清洗 还在为反爬机制头疼?试试让AI来帮你搞定数据采集的那些麻烦事 咱们做数据采集的,最怕遇到什么?页面结构一变,爬虫就失效;验证码弹出来,手动识别…...

全协议下载解决方案:5个步骤打造智能下载管理中心

全协议下载解决方案:5个步骤打造智能下载管理中心 【免费下载链接】aria2.conf Aria2 配置文件 | OneDrive & Google Drvive 离线下载 | 百度网盘转存 项目地址: https://gitcode.com/gh_mirrors/ar/aria2.conf 一、下载困境与解决方案 1.1 现代下载的四…...

AI 培训报名:主流机构专业度对比分析

引言 随着人工智能技术的快速发展,AI 培训市场也日益火爆。无论是企业还是个人,都希望通过专业的培训来提升对 AI 技术的应用能力。然而,当前 AI 培训市场鱼龙混杂,机构众多,质量参差不齐。企业和个人在选择 AI 培训机…...

智能媒体捕获:猫抓cat-catch的资源拦截与解析技术方案

智能媒体捕获:猫抓cat-catch的资源拦截与解析技术方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓cat-catch作为一款开源浏览器扩展,通过深度网络请求分析与流媒体协议…...

LeetCode 125. Valid Palindrome 题解

LeetCode 125. Valid Palindrome 题解 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 解释:"…...

一丹一世界FLUX.1部署教程:防火墙开放7861端口+nginx反向代理+HTTPS安全加固

一丹一世界FLUX.1部署教程:防火墙开放7861端口nginx反向代理HTTPS安全加固 1. 引言:从本地服务到安全可靠的在线AI画板 你可能已经体验过在本地服务器上运行“一丹一世界”FLUX.1 AI图像生成服务,通过http://你的IP:7861访问那个简洁的界面…...