0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ISO 11898里的CAN总线:帧编码

冬至子 来源:知锂 作者:SW十五 2023-10-31 14:15 次阅读

帧编码

帧中的位采用 NRZ (Non-return-to-zero 非归零)方法编码。相同带宽,NRZ编码信息量更大。

CAN用双绞线的方式传输,两条线压差2V(CAN_H是3.5V左右,CAN_L是1.5V左右)为显性,表示逻辑0;两条线压差0V(都是2.5V左右)为隐性,表示逻辑1。

我很长一段时间把显性和隐性搞混,直到记住“显灵”这个词,显性是0.

为了减少CAN信号错误,专家设计了位填充技术。CAN消息帧中,帧起始、仲裁场、控制场、数据场和CRC序列均用位填充的方法编码。

图片

图片

当CAN发送器检测到5个相同的位后,插入一个相反位,产生跳变沿,用来同步,以减少检测错误。

填充位会被当成总线数据位处理,但接收器接收时会自动剔除填充位,这样要传输的信息不会出现错误。

位的传输顺序

数据帧和远程帧里,从SOF开始,一个域接一个域地传输。在一个域内,字节传输顺序是从MSB到LSB。在一个字节内,位传输顺序是从bit 7到bit 0.

图片

位时间

位时间是一个位的持续时间。我们是看表来确定时间,CAN总线的节点是通过时钟发生器确定,而常用的时钟发生器是石英晶振。石英晶振的频率通常是波特率的整数倍。

上一篇提到波特率的时候,其单位是bit/s,则一位的时间=1/波特率。比如常用的500kbit/s,位时间是2us(通常要求误差在±0.004us内)。

一个位时间可以分成很多段的时间量(Time quantum,简写为TQ)。前面说到CAN的时间是通过石英晶振的频率确定,那晶振也是有很多一小段一小段的时间周期。可以理解为,若干个石英晶振的时间段组成了一个TQ,若干个TQ组成了一个位的时间。就像六十秒组成一分钟,六十分钟组成一小时。

和一分钟固定等于六十秒不同,一个位可以分为1~32个TQ,具体是多少个可以由使用者规定。

一小时我们有时候分为前一刻钟、前半个小时和后半个小时,一个位也可以分为很几段。这个几是固定的,是4,如下图。

图片

一个位时间可以分为:

同步段(Sync_Seg):1个TQ。同步段内有一个跳变沿,用来使总线上各个ECU同步,就跟港片里飞虎队行动前都要对表一样。

传播段(Prop_Seg):用于补偿各总线上各ECU之间的物理传输延迟时间(信号在总线上的传播延迟和ECU内部延迟)。传播段的长度不同的ECU不完全一致,一般在1~8个TQ。

相位缓冲段1(Phase_Seg 1)、相位缓冲段2(Phase_Seg 2):用于补偿跳变沿的相位误差,就是ECU间的晶振误差。这两段可以被再同步处理延长或缩短。通过再同步,可以延长相位缓冲段1,或缩短相位缓冲段2。

一个位的采样点在相位缓冲段1的终点,通常是位时间的75%左右。

标准原文还详细说明了延时后,如何处理才能使仲裁顺利,感兴趣可以自己看看。

bus off

一个ECU根据错误计数不同,可以处于以下三种状态之一:错误激活(error-active)、错误认可(error-passive)或离线(bus-off)。

图片

(当ECU进入bus off后,有快恢复和慢恢复两种策略。两种策略都会被ECU执行,先快后慢,具体策略由厂家决定。)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3360

    浏览量

    131539
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129598
  • 时钟发生器
    +关注

    关注

    1

    文章

    169

    浏览量

    66966
  • CRC校验
    +关注

    关注

    0

    文章

    81

    浏览量

    15030
  • 发送器
    +关注

    关注

    1

    文章

    237

    浏览量

    26560
收藏 人收藏

    评论

    相关推荐

    汽车CAN总线渗透测试

    CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议,由以研发和生产汽车电子产品著称的德国BOSCH公司开发,并最终成为国际标准(
    发表于 11-28 10:48 1015次阅读

    高速CAN总线和低速CAN总线的特性

    ISO 11898-2和ISO 11898-3中分别规定了两种CAN总线结构(在BOSCH
    发表于 04-07 09:30 2017次阅读
    高速<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>和低速<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的特性

    供应SIT1145AQ-带选择性唤醒及故障保护的低功耗 CAN FD 总线收发器

    的远程唤醒,兼容 ISO 11898- 2:2016 标准的选择性唤醒远程唤醒 ➢ 唤醒源诊断识别功能 ➢ 总线端口±58V 耐压 ➢
    发表于 02-20 09:10

    CAN总线

    点间的传输过程,主要是连接介质、线路电气特性、数据的编码/解码、位定时和同步的实施标准。总线竞争的原则  BOSCH CAN基本上没有对物理层进行定义,但基于CAN
    发表于 04-27 15:16

    ISO11898 CAN标准

    ISO 11898 英文原版资料分享!!!
    发表于 01-14 18:24

    can总线stm32交通灯

    can总线stm32交通灯,1:CAN简介CAN是Controller Area Network,是一种串行的通信协议,有两标准:ISO11898
    发表于 08-05 06:41

    ISO11898物理层特性

    390图 30.1.1 ISO11898 物理层特性从该特性可以看出,显性电平对应逻辑 0,CAN_H 和 CAN_L 之差为 2.5V 左右。而隐性平对应逻辑 1,CAN_H 和
    发表于 08-06 07:30

    CAN协议的特点

    目录1、什么是CAN2、CAN协议的特点3、ISO11898标准下的物理层特征4、CAN 协议的5 种类型4.1、
    发表于 08-19 08:02

    CAN总线笔记 精选资料分享

    Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898
    发表于 08-20 07:17

    CAN总线协议

    CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898
    发表于 08-20 06:27

    CAN总线协议简介

    采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。直接通信距离最远10km,速率5Kb/s通信速率最高可达1Mb/s,距离40m末端要有120欧终端电阻11898协议iso的osi模型11
    发表于 03-01 06:29

    CAN_ISO11898CAN2.0

    CAN_ISO11898CAN2.0,感兴趣的小伙伴们可以看看。
    发表于 07-26 10:43 432次下载

    CAN总线的基础知识

    CAN总线最初由德国Bosch公司为汽车检测、控制系统而设计的。1993年CAN成为国际标准iso11898(高速应用)和iso1119(低
    发表于 04-19 17:14 14次下载

    ISO 11898CAN总线的基本特点与结构

    ISO 11898-1主要描述了CAN总线的基本架构,定义了CAN在数据链路层的通信方式。重点内容是数据链路层的两个子层:逻辑链路控制(LL
    的头像 发表于 10-31 14:31 1314次阅读
    <b class='flag-5'>ISO</b> <b class='flag-5'>11898</b>里<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的基本特点与结构

    CAN总线的发展历程 CAN XL总线的典型应用

    进一步升级,2003年CAN总线升级为HS CAN,但还是第一代技术。2011年第二代CAN总线CAN
    的头像 发表于 12-21 14:03 990次阅读
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>的发展历程 <b class='flag-5'>CAN</b> XL<b class='flag-5'>总线</b>的典型应用