6、错误帧

  • 总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备。
    错误帧

7、过载帧

  • 当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失。
    过载帧

8、帧间隔

  • 将数据帧和遥控帧与前面的帧分离开。
    在这里插入图片描述

9、位填充

  • 第一列数据,正常连续数据正常后面补位填充位。
  • 第二列数据,位填充数据与后续数组组成连续5个相同电平后,需要随后再补一个位填充电平。
  • 第三列数据,数据若是有连续多个同样电平信号,例如10个,此时需要每五个补一个位填充。
  • 位填充适用于数据包(数据帧和遥控帧)中,总线空闲长时间出现的隐性逻辑1不适用。CAN总线连续出现11个隐性逻辑1时,被认为是空闲状态。
    在这里插入图片描述

10、波形实例

  • 数据的开头显性逻辑0代表SOF起始帧,结尾处的七位连续隐性逻辑代表结束帧EOF。
  • 报文ID是高位先行,是从高位到低位的,正常的读取即可,所以读取时需从左往右。
  • 数据段是高位先行的,是高位到低位,正常的读取即可,读取时从左往右。
  • 黄色部分是位填充,连续五个同样的电平后的一位数据就是位填充,读波形时需要忽略掉。如果连续超过五个的同样电平说明,发生了错误帧或过载帧。
    ①标准数据帧,报文ID为0x555,数据长度1字节,数据内容为0xAA。
    在这里插入图片描述
    ②标准数据帧,报文ID为0x666,数据长度2字节,数据内容为0x12,0x34。
    在这里插入图片描述
    ③扩展数据帧,报文ID为0x0789ABCD,数据长度1字节,数据内容为0x56。
    在这里插入图片描述
    ④标准遥控帧,报文ID为0x088,数据长度1字节,无数据内容。
    在这里插入图片描述

11、接收方数据采样

  • CAN总线没有时钟线,总线上的所有设备通过约定波特率的方式确定每一个数据位的时长。
  • 发送方以约定的位时长每隔固定时间输出一个数据位。
  • 接收方以约定的位时长每隔固定时间采样总线的电平,输入一个数据位。
  • 理想状态下,接收方能依次采样到发送方发出的每个数据位,且采样点位于数据位中心附近。
    在这里插入图片描述

12、接收方采样数据遇到的问题

①接收方以约定的位时长进行采样,但是采样点没有对齐数据位中心附近。
在这里插入图片描述

②接收方刚开始采样正确,但是时钟有误差,随着误差积累,采样点逐渐偏离。
在这里插入图片描述

(12)位时序

  • 为了灵活调整每个采样点的位置,使采样点对齐数据位中心附近,CAN总线对每一个数据位的时长进行了更细的划分,分为同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每个段又由若干个最小时间单位(Tq)构成。
    在这里插入图片描述

13、硬同步

  • 每个设备都有一个位时序计时周期,当某个设备(发送方)率先发送报文,其他所有设备(接收方)收到SOF的下降沿(显性逻辑0)时,接收方会将自己的位时序计时周期拨到SS段的位置,与发送方的位时序计时周期保持同步
  • 硬同步只在帧的第一个下降沿(SOF下降沿)有效
    经过硬同步后,若发送方和接收方的时钟没有误差,则后续所有数据位的采样点必然都会对齐数据位中心附近
    在这里插入图片描述

14、再同步

若发送方或接收方的时钟有误差,随着误差积累,数据位边沿逐渐偏离SS段,则此时接收方根据再同步补偿宽度值(SJW)通过加长PBS1段(接收方时钟快,发送方时钟慢),或缩短PBS2段(接收方时钟慢,发送发时钟快),以调整同步。SJW=1~4Tq。

  • 再同步可以发生在第一个下降沿之后的每个数据位跳变边沿。
    在这里插入图片描述
    在这里插入图片描述

15、波特率的计算

波特率:每秒传输多少个bit。
波特率 = 1 / 一个数据位的时长 = 1 / (TSS + TPTS + TPBS1 + TPBS2)
例如:
SS = 1Tq,PTS = 3Tq,PBS1 = 3Tq,PBS2 = 3Tq
Tq = 0.5us
波特率 = 1 / (0.5us + 1.5us + 1.5us + 1.5us) = 200kbps
在这里插入图片描述

16、多设备同时发送遇到的问题

CAN总线只有一对差分信号线,同一时间只能有一个设备操作总线发送数据,若多个设备同时有发送需求,该如何分配总线资源?
解决问题的思路:制定资源分配规则,依次满足多个设备的发送需求,确保同一时间只有一个设备操作总线。
在这里插入图片描述

17、资源分配规则

①先占先得。
若当前已经有设备正在操作总线发送数据帧/遥控帧,则其他任何设备不能再同时发送数据帧/遥控帧(可以发送错误帧/过载帧破坏当前数据)。
任何设备检测到连续11个隐性电平,即认为总线空闲,只有在总线空闲时,设备才能发送数据帧/遥控帧。
一旦有设备正在发送数据帧/遥控帧,总线就会变为活跃状态,必然不会出现连续11个隐性电平,其他设备自然也不会破坏当前发送。
若总线活跃状态其他设备有发送需求,则需要等待总线变为空闲,才能执行发送需求。
②非破坏性仲裁。
若多个设备的发送需求同时到来或因等待而同时到来,则CAN总线协议会根据ID号(仲裁段)(仲裁段的数据进行判断==报文ID+RTR)进行非破坏性仲裁,ID号小的(优先级高)取到总线控制权,ID号大的(优先级低)仲裁失利后将转入接收状态,等待下一次总线空闲时再尝试发送。
实现非破坏性仲裁需要两个要求:
线与特性:总线上任何一个设备发送显性电平0时,总线就会呈现显性电平0状态,只有当所有设备都发送隐性电平1时,总线才呈现隐性电平1状态,即:0 & X & X = 0,1 & 1 & 1 = 1。
回读机制:每个设备发出一个数据位后,都会读回总线当前的电平状态,以确认自己发出的电平是否被真实地发送出去了,根据线与特性,发出0读回必然是0,发出1读回不一定是1。
③非破坏性仲裁过程
数据位从前到后依次比较,出现差异且数据位为1的设备仲裁失利。标红方格之前单元1和单元2的数返回值均相同,但在标红方格处:单元1发出的是1却返回的是0,所以就代表此时总线仲裁将数据的发送权转交给了其他发送器。单元1需要继续等待。单元2,每次发送数据位时,返回的数据电平值都和发送的一致,说明此时并未失去发送数据权力,即继续下一位数据发送。
报文ID越小,所出现的电平1的频率越小,即优先级越高(返回值)。
在这里插入图片描述

④数据帧和遥控帧的优先级
数据帧和遥控帧ID号一样时,数据帧的优先级高于遥控帧。理由就在于发送完数据后,读取总线上电平的反馈值并进行比较,数据帧设置的电平状态是显性逻辑0,而遥控帧设置的电平值设置的电平状态是隐性逻辑1,返回值0的优先级高,即数据帧优先级高的原因。
在这里插入图片描述

⑤标准格式和扩展格式的优先级
标准格式11位ID号和扩展格式29位ID号的高11位一样时,标准格式的优先级高于扩展格式(SRR必须始终为1,以保证此要求)
如果此时是相同报文ID的标准遥控帧和扩展数据帧进行仲裁时,因为扩展数据帧的报文ID比较多,且两者前11+1位完全相同所以直到标准遥控帧结束仲裁段时都没有分出优先级,但是此时扩展数据帧的仲裁段并没有结束。第十三位,标准遥控帧的位是IDE数值为0表示标准格式。而扩展数据帧的第十三位是也是IDE数值为1表示扩展格式。直到此时才分出优先级,标准遥控帧胜出,取得仲裁权,继续发送数据。
在这里插入图片描述

18、错误处理

错误共有5种: 位错误、填充错误、CRC错误、格式错误、应答错误。
在这里插入图片描述

主动错误状态的设备正常参与通信并在检测到错误时发出主动错误帧。
被动错误状态的设备正常参与通信但检测到错误时只能发出被动错误帧。
总线关闭状态的设备不能参与通信。
每个设备内部管理一个TEC和REC,根据TEC和REC的值确定自己的状态。
在这里插入图片描述

19、错误波形演示

①设备处于主动错误状态,发送标准数据帧,正常传输。
ACK界定符+7位EOF结束帧+3位帧间隔==11位隐性逻辑1,表示总线处于空闲状态。
在这里插入图片描述

②设备处于主动错误状态,发送标准数据帧,检测到ACK错误。在ACK应答帧结束后发出连续6位的显性逻辑0,表示错误标志。
8位错误界定符+3位帧间隔==11位隐性逻辑1,表示总线处于空闲状态。
在这里插入图片描述

③设备处于被动错误状态,发送标准数据帧,检测到ACK错误。
在这里插入图片描述
注意:本文章内容均来源于网络,如有异议请联系本作者

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

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

相关文章

LeetCode 317 离建筑物最近的距离

LeetCode 317 题的详细题目信息如下:题目名称Shortest Distance from All Buildings(中文译名:离建筑物最近的距离)题目描述给你一个由 0、1 和 2 组成的二维网格,其中:0 代表空地1 代表建筑物2 代表障碍物…

AI之CodeTool之Kode:Kode(claude_code风格)的简介、安装和使用方法、案例应用之详细攻略

AI之CodeTool之Kode:Kode(claude_code风格)的简介、安装和使用方法、案例应用之详细攻略 目录 相关文章 LLMs之PE之SystemPrompt:analysis_claude_code的简介、使用方法、案例应用之详细攻略 AI之CodeTool之Kode:Kode(claude_code风格)的简…

网络请求优化:用 Retrofit 拦截器玩转日志、重试与缓存,OkHttp 和 Volley 谁更香?

目录 1. 拦截器:Retrofit 的“超级管理员” 拦截器的本质 为什么用拦截器? 2. 日志拦截器:让请求和响应“现原形” 引入日志拦截器 实现日志拦截器 日志输出示例 生产环境注意事项 3. 重试拦截器:网络不稳定也能稳如狗 设计重试逻辑 集成到 Retrofit 优化重试策…

LeetCode - 283. 移动零

题目 283. 移动零 - 力扣(LeetCode) 思路 我们使用左右两个指针:左指针left指向已处理好的非零元素的末尾位置,右指针right用于遍历数组。 算法步骤: 初始化left为-1(表示还没有处理任何非零元素&…

Redis不同场景下的注意事项

Redis常见的 使用场景: 缓存系统(核心场景) 存储热点数据,减少数据库访问压力。提升接口响应速度。技术点: 用String/Hash 存储结构化数据结合过期时间(TTL)和缓存淘汰策略(如LRU)管理内存。解决缓存问题:穿…

【完整源码+数据集+部署教程】高速公路施工区域物体检测系统源码和数据集:改进yolo11-RepNCSPELAN

背景意义 随着城市化进程的加快,高速公路建设与维护工作日益频繁,施工区域的安全管理成为亟待解决的重要问题。在高速公路施工区域,工人和设备的安全是首要考虑因素,而有效的物体检测系统能够显著提高施工现场的安全性与工作效率。…

如何在FastAPI中玩转全链路追踪,让分布式系统故障无处遁形?

url: /posts/30e1d2fbf1ad8123eaf0e1e0dbe7c675/ title: 全链路追踪如何让FastAPI微服务架构的每个请求都无所遁形? date: 2025-08-28T23:40:47+08:00 lastmod: 2025-08-28T23:40:47+08:00 author: cmdragon summary: 全链路追踪是现代微服务架构中监控系统行为的核心技术,通…

Win11 压缩实测:Win11 的压缩软件的最佳配置和使用方式

文章目录测试环境机器配置被压缩文件WinRAR7zipLinux子系统准备极限压缩减小字典的极限压缩7zipWin11准备极限压缩7zip系统内置右键压缩菜单极限压缩总结:Win11 的压缩软件的最佳配置和使用方式测试环境 机器配置 Win11系统 16GB内存 8核CPU 被压缩文件 文件夹内…

CMake构建学习笔记22-libxml2库的构建

在上一篇文章《CMake构建学习笔记21-通用的CMake构建脚本》中,笔者封装了一个通用的cmake构建脚本cmake-build.ps1,那么这里笔者就尝试通过这个脚本来构建libxml2库。 libxml2是GNOME项目下的XML库,虽然比不上TinyXML-2轻量,但是…

虚拟私有网络笔记

VPN应用场景 ——VPN概述  利用公共网络来构建的私人专用网络称为虚拟私有网络(VPN, Virtual Private Network),用于构建VPN的公共网络包括Internet 、帧中继、ATM等。在公共网络上组建的VPN象企业现有的私有网络 一样提供安全性…

Python 轻量级 HTML 解析器 - lxml入门教程

文章目录初始化解析器路径查找查找所有标签查找指定 id 的标签查找指定 class 的标签查找包含指定 class 的标签复杂路径查找示例1示例2常见操作获取所有标签的链接获取 div 标签的文本内容, 其他标签类似其他元素操作初始化解析器 from lxml import html from lxml.html impor…

(CVPR-2025)VideoMage:文本生成视频扩散模型的多主体与动作定制化

VideoMage:文本生成视频扩散模型的多主体与动作定制化 paper title:VideoMage: Multi-Subject and Motion Customization of Text-to-Video Diffusion Models paper是National Taiwan University发表在CVPR 2025的工作 Code:链接 图1. 多主体与动作定制化…

OpenCV轮廓近似与Python命令行参数解析

在计算机视觉任务中,轮廓分析是目标检测、形状识别的核心步骤。而approxPolyDP函数作为轮廓简化的关键工具,能有效减少轮廓顶点数量,降低计算复杂度;同时,argparse库则能让Python脚本更灵活、易用。本文将结合具体案例…

基于Springboot在线音乐推荐平台

目录 一、项目介绍 二、功能介绍 三、核心代码 四、效果图 源码获取 前言 在经济繁荣的浪潮过去后,社会的焦点逐渐从物质追求转向了文化和生活品质的提升[1]。文化生活的繁荣成为人们关注的焦点之一,而音乐,作为文化的一部分&#xff0…

LeetCode算法日记 - Day 26: 归并排序、交易逆序对的总数

目录 1. 归并排序 1.1 题目解析 1.2 解法 1.3 代码实现 2. 交易逆序对的总数 2.1 题目解析 2.2 解法 2.3 代码实现 1. 归并排序 912. 排序数组 - 力扣(LeetCode) 给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任…

C++(Qt)软件调试---vcpkg安装crashpad(34)

C(Qt)软件调试—vcpkg安装crashpad(34) 文章目录C(Qt)软件调试---vcpkg安装crashpad(34)[toc]1 概述🐜2 环境配置3 qt使用crashpad库捕获异常4 cmake中添加crashpad5 相关地址🐐更多精彩内容👉内…

Kafka 副本同步异常与 ISR 收缩故障排查实录

背景 某高流量 Kafka 集群(原 10G 网卡)在切中心时频繁触发带宽报警,扩容至 25G 网卡后出现副本同步异常: 操作流程:停机→升级网卡→重启→触发分区同步→切换首选 Leader现象: 写入流量上升后&#xff0c…

顶点 (VS)vs 片段(FS):OpenGL纹理滚动着色器的性能博弈与设计哲学

一个微妙的选择,影响整个应用性能表现在实时图形渲染中,实现纹理滚动效果是一种常见需求。但当我们在顶点着色器和片段着色器之间做出不同实现选择时,会对性能产生显著影响。今天,我们将深入探讨这两种实现的差异,帮助…

基于博客系统的自动化测试项目

目录 一、引言 二、项目背景 三、项目功能 1)初始登录界面 2)博客首页 3)博客详情页 4)博客编辑页 四、测试工具 1)基础操作系统环境 2)浏览器环境 3)开发与测试工具环境 4&#xf…

R 语言 eulerr 包绘制韦恩图:比例精准

在数据可视化中,韦恩图是展示多组数据交集关系的常用工具,尤其在生物信息(如基因差异表达分析)、统计分析等领域高频使用。但传统绘图工具常面临椭圆比例失衡、数值显示混乱、样式调整繁琐等问题,而 R 语言的eulerr包恰好能解决这些痛点 —— 它支持按数据比例自动适配图形…