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

CAN协议(ISO11898)

目录

1 性能特点

2 错误状态

2.1 错误种类

3 帧的类型

3.1 数据帧

3.2 遥控帧

3.3 错误帧

3.4 过载帧

3.5 帧间隔

4 帧的优先级

5 位填充

6 采样点

6.1 CAN波特率计算:

6.2 采样点计算(S32G为例)

6.2.1第一采样点

6.2.2 第二采样点


1 性能特点

1、多主控制

在总线空闲时,所有的单元都可开始发送消息。

2、信息的发送

两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为ID)决定优先级。对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。

3、系统的柔软性

连接在总线上的其它单元的软硬 件及应用层都不需要改变。

4、通信速度

在同一网络中,所有单元必须设定成统一的通信速度

5、远程数据请求

可通过发送“遥控帧”请求其他单元发送数据

6、错误检测功能,错误通知功能,错误恢复功能

所有的单元都可以检测错误(错误检测功能)。

检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。

正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。

7、故障封闭

CAN 可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误。当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去

8、连接

CAN总线是可以同时连接多个单元的总线

9、使用NRZ编码(非归零编码)+位填充(保证有足够跳变沿用于时间同步)

位填充:发送节点发送5个连续的相同极性位后,在位流中自动插入一个极性相反的位。

清除填充:接收节点对相同极性位的数量进行检测,从位流中将填充位去掉。

2 错误状态

1、主动错误

主动错误状态是可以正常参加总线通信的状态。

处于主动错误状态的单元检测出错误时,输出主动错误标志

2、被动错误状态

处于被动错误状态的单元即使检测出错误,也不能发送错误通知,并且整个总线也被认为是没有错误的。

被动错误状态的单元在发送结束后不能马上再次开始发送,在间隔帧期间内 必须插入“延迟传送”(8 个位的隐性位)。

3、总线关闭态

总线关闭态信息的接收和发送均被禁止。

通过发送错误计数和接受错误计数管理

2.1 错误种类

错误共有 5 种,多种错误可能同时发生。

位错误、填充错误、CRC 错误、格式错误、ACK 错误

3 帧的类型

3.1 数据帧

共七个部分组成:

帧起始、仲裁段、控制段、数据段、CRC 段、ACK 段 、帧结束

(1) 帧起始:

表示数据帧开始的段,1 个位的显性位。(显性电平的逻辑值为“0”,隐性电平为“1”)

(2) 仲裁段:

表示该帧优先级的段,标准格式和扩展格式在此的构成有所不同。

(3) 控制段:

表示数据的字节数及保留位的段。(保留位(r0、r1) 保留位必须全部以显性电平发送。但接收方可以接收显性、隐性及其任意组合的电平。)

(4) 数据段:

可发送 0~8 个字节的数据,从 MSB(最高位)开始输出。

(5) CRC 段:

CRC 段是检查帧传输错误的帧。由 15 个位的CRC 顺序和 1 个位的 CRC 界定符(用于分隔的位)构成(CRC 顺序是根据多项式生成的 CRC 值,CRC 的计算范围包括帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算 CRC 值并进行比较,不一致时会通报错误。)

(6) ACK 段:

ACK 段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。

1.发送单元的 ACK 段:发送单元在 ACK 段发送2 个位的隐性位。

2.接收单元的 ACK 段:接收到正确消息的单元在 ACK 槽(ACK Slot)发送显性位,通知发送单元正常接收结束。这称作“发送 ACK”或者“返回 ACK”

(7) 帧结束:

帧结束是表示该该帧的结束的段。由7个位的隐性位构成。

3.2 遥控帧

1、遥控帧的RTR 位为隐性位,没有数据段。(没有数据段的数据帧和遥控帧可通过 RTR 位区别开来)。

2、遥控帧的数据长度码以所请求数据帧的数据长度码表示。

3、没有数据段的数据帧有何用途?可用于各单元的定期连接确认/应答、或仲裁段本身带有实质性信息的情况下。

3.3 错误帧

用于在接收和发送消息时检测出错误通知错误的帧。错误帧由错误标志和错误界定符构成。

1、错误标志:

错误标志包括主动错误标志和被动错误标志两种。

-主动错误标志:6 个位的显性位。

-被动错误标志:6 个位的隐性位。

2、错误界定符:

错误界定符由 8 个位的隐性位构成。

3.4 过载帧

1、过载标志:

6 个位的显性位。

2、过载界定符:

8 个位的隐性位。

3.5 帧间隔

帧间隔是用于分隔数据帧和遥控帧的帧。数据帧和遥控帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、 遥控帧、错误帧、过载帧)分开。

过载帧和错误帧不能插入帧间隔。

1、间隔:

3 个位的隐性位。

2、总线空闲:

隐性电平,无长度限制(0 亦可)。

本状态下,可视为总线空闲,要发送的单元可开始访问总线。

3、延迟传送(发送暂时停止):

8 个位的隐性位。

只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。

4 帧的优先级

1、ID越小的优先级越高

2、仲裁段的最后一位(RTR)为显性位的数据帧具有优先权, 可继续发送。(数据帧为显性,遥控帧&拓展数据帧为隐性)

5 位填充

位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。

位填充:发送节点发送5个连续的相同极性位后,在位流中自动插入一个极性相反的位。

清除填充:接收节点对相同极性位的数量进行检测,从位流中将填充位去掉

6 采样点

6.1 CAN波特率计算:

TQ(Time-Quanta)是CAN通信里的最小时间单位:

TQ = Prescaller / fCANCLK

TQS是一个Bit包含的TQ数量:

TQS = SYNC+TSEG1+TSEG2+Prop_SEG

但不是一个bit的传输时间,一个CAN bit的传输时间根据ISO标准可知为:

Bit_time =TQS*TQ

波特率的计算公式为:

CAN_Baud = 1/Bit_time=1/(TQS*TQ)= 1/((SYNC+TSEG1+TSEG2+Prop_SEG)*TQ)

= 1/(SYNC+TSEG1+TSEG2+Prop_SEG)*Prescaller/fCANCLK)

=fCANCLK / ((SYNC+TSEG1+TSEG2+Prop_SEG)*Prescaller)

6.2 采样点计算(S32G为例)

6.2.1第一采样点

Phase Segment 1 = (PSEG1 + 1) × TQ.

Phase Segment 2 = (PSEG2 + 1) × TQ.

Propagation Segment Time = PROPSEG × TQ.

Resync Jump Width = SJW + 1.

(Sync_SEG+Time Segment 1)/(Sync_SEG+Time Segment 1 +Time Segment 2)

=(1+PROPSEG+PSEG1+2)/(1+PROPSEG+PSEG1+2+PSEG2+1)

6.2.2 第二采样点

Phase Segment 1 = (FPSEG1 + 1) × TQ.

Phase Segment 2 = (FPSEG2 + 1) × TQ.

Propagation Segment Time = FPROPSEG × TQ.

Resync Jump Width = FSJW + 1.

(Sync_SEG+Time Segment 1)/(Sync_SEG+Time Segment 1 +Time Segment 2)

=(1+PROPSEG+PSEG1+1)/(1+PROPSEG+PSEG1+1+PSEG2+1)

http://www.jsqmd.com/news/645122/

相关文章:

  • 2026年优秀医养结合设计公司推荐 - 品牌排行榜
  • Topit:macOS窗口置顶工具终极指南,3步实现高效多任务管理
  • 【限时解禁】SITS2026闭门研讨精华:为什么92%的艺术生成失败源于模态权重失衡?3个实时校准公式立即生效
  • 2026年4月新发布:浙江顶尖影像测量仪厂家综合实力盘点与权威联系指南 - 2026年企业推荐榜
  • 杰理之叠加IIS IN 输入音频【篇】
  • 空间转录组学如何改变我们对肿瘤微环境的理解?最新研究进展与应用案例
  • Cesium Terrain Builder深度解析:从DEM数据到3D地球的完整技术栈
  • 无人机视觉定位研究(Matlab代码实现)
  • 用Python+MediaPipe+PyAutoGUI,我给自己做了个隔空刷剧的“懒人神器”
  • 光栅化集群LOD构建流程深度分析报告
  • 如何在Blender中创建逼真建筑坍塌模拟?Bullet Constraints Builder完全指南
  • 保姆级避坑指南:手把手教你用Python搞定MuJoCo官方入门教程(附完整代码)
  • ncmppGui终极指南:3分钟完成NCM音乐批量解密转换
  • 政务云解决方案(对外)PPT(27页)
  • 剪映专业版教程:制作电影感滚动效果
  • 胡桃工具箱完整使用指南:高效管理你的原神游戏体验
  • PDF导航书签添加终极指南:3步为任何PDF创建智能目录
  • 2026 年钢格板实力厂商汇总 满足定制与批量需求 - 深度智识库
  • 97%的多模态项目忽略的长尾陷阱:训练时batch内模态-类别联合分布偏移如何导致尾部特征坍缩?——附TensorBoard可视化诊断模板
  • 每日一问:n太大存在溢出风险是什么意思
  • intv_ai_mk11效果展示:温度0.0→0.3下回答稳定性与表达自然度实测
  • OEC-T刷Armbian后,磁盘挂载千万别直接回车!我的fstab配置踩坑实录
  • HTML表格制作全攻略
  • 避坑指南:BladeX Cloud授权码模式配置中最容易忽略的5个安全细节
  • Navicat结构同步:零数据迁移下的数据库架构精准部署
  • 告别卡顿!用OpenVLA-OFT微调方案,让你的机器人动作生成速度提升26倍
  • 终极Masa Mods汉化包:5分钟解决Minecraft模组语言障碍的完整指南
  • 多模态数据质检不是“加个过滤器”那么简单:深度剖析CLIP/Flamingo/Qwen-VL训练失败案例中的8类数据陷阱及对应防御架构设计
  • OpenStack Dashboard安装后必做的5个安全与性能调优配置(附local_settings详解)
  • 网页小说秒变电子书:WebToEpub离线阅读神器使用指南