2019-04-02 CAN总线基础

1、遵循ISO/OSI标准模型,CAN分为数据链路层(包括逻辑链路层LLC和媒体访问控制层MAC;CAN2.0A中描述为目标层和传输层)和物理层。

2、CAN技术规范(Version2.0)包括2.0A和2.0B,2.0A的报文标识符为11位2.0B有标准和扩展两种报文格式,前者的标识符11位,后者29位。

3、CAN网络拓扑

         CAN控制器:接收来自控制单元(如MCU)的数据,并将数据处理后传到收发器。

         CAN收发器:由一个发射器和一个接收器组合而成,将从控制器接收的数据转化成能通过CAN-bus传输的电信号或者反之。

         传输线:双向传输的导线,分为CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输。

         终端电阻:为了避免信号的反射和干扰,需要在CAN_H和CAN_L之间接终端电阻。终端电阻并非固定120欧,跟使用的导线有关。

4、信号表示:

         CAN总线采用的"线与"的规则进行总线冲裁,即1&0=0,即总线上只要有一个节点将总线拉到低电平(逻辑0),总线就为低电平(逻辑0),表现在CAN总线中即是说总线上只要有一个节点为显性,则总线状态位显性,而不管总线上有多少节点处于传输隐性状态;只有当所有节点都为隐性时,总线才为隐性状态。这个特性在仲裁时非常有用。

5、帧结构

         数据帧:由7个不同的位场组成,分别是帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。

                   帧起始——1个显性位,标志数据帧或远程帧的开始

                   仲裁场——由报文标识符合远程发送请求位(RTR)组成报文优先权信息。

                            标识符     标准帧11bit,扩展帧29bit

                            RTR位     1bit数据帧为显性,远程帧为隐性,所以数据帧的优先权高于远程帧

                            IDE位      1bit标准帧为显性,位于控制场,扩展帧为隐性,位于仲裁场

                            SRR位      1bit扩展帧当中用于替代远程帧请求位,显性

                   控制场——标准帧的控制场由IDE位(1bit)、保留位R0(1bit)和数据长度代码DLC(4bit)组成,共6bit。扩展帧中则由保留位R1、R0(2bit)和DLC(4bit)组成,共6bit。

                   数据场——1个数据帧传输0~8个字节数据,传输时MSB在前

                   CRC场——CAN-bus使用CRC校验数据,CRC校验值放在CRC场,由CRC校验值(15bit)和CRC界定符(1bit)构成

                   ACK场——接收节点接收的帧起始到CRC场之间的内容没有发生错误时,将在ACK场发送一个显性位。包括发送应答信号的ACK槽(1bit)和ACK界定符(1bit,隐性)共2bit组成。

                   帧结束——由7个连续的隐性位组成

         远程帧:与数据帧相比,远程帧没有数据场,同样有标准帧和扩展帧之分。

         错误帧:CAN-bus支持的错误类型有五类

                  1)CRC错误,CRC校验不符

                   2)应答错误,发送节点在ACK场未收到应答信号

                   3)格式错误,传输的数据帧格式不符合任何合法帧格式

                   4)位发送错误,发送节点发送时发现总线电平与发送电平不相同

                   5)位填充错误,通信线缆上信号违反“位填充规则”

         发生以上五种错误任何一种时,发送或接受节点将发送错误帧

         其中错误标识分为主动错误标识和被动错误标识。

         为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通讯,CAN-bus规定了节点的三种状态及行为。

         过载帧:有三种情况发送过载帧

                   1)当某个节点没有做好接受下一帧数据的准备时

                   2)在间歇的第一和第二字节监测到一个显性位

                   3)节点在错误界定符或过载界定符的第8位采样到一个显性位,则发送一个过载帧且错误计数不会增加

         *由于存在多个节点同时过载且过载帧发送有时间差的问题,可能出现过载标志叠加后超过6位的现象。

         帧间隔:帧间隔用于将数据帧和远程帧与他们之前的帧分离开,过载帧和错误帧前面不需要插入帧间隔。

6、通信速度和最大总线长度

         影响总线长度的因素

         1)物理线缆并非理想状态,实际上是有一定的线上延迟的,CAN总线的应答机制决定了通信速率越高,通信距离越短,对物理传输线的要求就越高,通信速率与通信距离的关系大致如下图。(主要因素)

         2)信号在节点内部的延时

         3)振荡器的容差

         综合考虑各方面的因素,有如下推荐值表

7、几个重要的概念

         CAN总线协议        CAN总线是一个广播类型的总线,所以任何在总线上的节点都可以监听总线上传输的数据。也就是说总线上的传输不是点到点的,而是一点对多点的传输,这里多点的意思是总线上所有的节点。总线上的节点通过这种本地过滤的功能可以过滤掉一些和自己无关的数据,而保留一些和自己有关的信息。本地过滤所使用的就是位于数据帧或远程帧仲裁场的标识符(ID)。

         总线仲裁        只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。CAN使用了标识符的逐位仲裁方法解决这个问题。

         在仲裁期间,每一个发送器都对发送的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一"隐性"电平而监视到的是一"显性"电平,那么这个节点失去了仲裁,必须退出发送状态。如果出现不匹配的位不是在仲裁期间则产生错误事件。

         帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

         位填充    位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。位填充的数据不需要编程控制,由控制器自动完成。其目的也是提高CAN总线的稳定性。

         1)发送单元的工作        在发送数据帧和远程帧时,SOF~CRC 段间的数据,相同电平如果持续5位,在下一个位(第6个位)则要插入1位与前5位反型的电平。

         2)接收单元的工作        在接收数据帧和远程帧时,SOF~CRC 段间的数据,相同电平如果持续5位,需要删除下一个位(第6个位)再接收。如果这个第6个位的电平与前5位相同,将被视为错误并发送错误帧。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容