“CAN”总线

引入

        CAN是Controller Area Network 的缩写(以下称为 CAN),是ISO*1国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很 多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需 要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进 行了标准化,现在在欧洲已是汽车网络的标准协议。 现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

                                                                                                                                ——CAN入门书

        众所周知,能用在汽车领域的东西绝不会像消费领域那样,汽车领域用料都是围绕着安全着想,无论是芯片还是通信协议,都力求“稳”字。学习CAN,了解它的工作方式,也能让我们学习到设计的严谨。接下来简易的介绍一下CAN。

一、CAN的线路结构

        CAN在通信速率上可以分为两种结构“高速CAN”和“低速CAN”。

        高速CAN是闭环网络,终端两边有两个120Ω的电阻,通信速度<=1Mpbs,而低速CAN是开环的,终端两边有两个2.2kΩ的电阻,通信速度<=125Kbps。低速CAN适合通信距离远于高速CAN。这里介绍高速CAN。

        CAN是采用异步通信,即双方约定好波特率,另外也不是使用普通的TTL电平,而是使用差分信号,在高速CAN中,有两条线,CAN_H、CAN_L。其中CAN_H - CAN_L = 0V时,为高电平,此时CAN_H = CAN_L = 2.5V;CAN_H - CAN_L = 2V时,为低电平,此时CAN_H = 3.5V, CAN_L = 1.5V。

        此外,在CAN中,等于0时候的电平叫做显性电平,等于1时候的电平叫做隐性电平,和IIC一样,CAN总线也具有“线与”的特性,为了方便记忆,可采取以下方式记忆:“因为线与特性,0的权限比1高,当0和1同时出现在总线上的时候,总是遇到0而不见1,因此0为显性,1为隐性”

二、CAN的帧

        CAN有五种帧:数据帧、遥控帧、错误帧、过载帧、帧间隔。除开帧间隔以外的帧称之为“报文”。

        1.数据帧

        数据帧用于向接收单元发送数据,它由以下几个结构组成:

        a:帧起始

   

        它由一个显性位构成,用于表示一个帧的开始。

        b:仲裁段

        在标准格式中,仲裁段由11为位的ID和一位的RTR位组成,ID用于仲裁报文的优先级,RTR位用于标识报文是数据帧还是遥控帧,在数据帧里,RTR为显性电平,遥控帧为隐性电平,大概是因为因为数据比请求重要原因吧。

        在扩展格式中,增加了18位的ID位,SRR替代标准帧的RTR位,但是不履行RTR的作用,因为RTR在仲裁段的最后一位,它是一个隐性位,在仲裁时,倘若遇到标准帧,也能因为这一位的不同而放弃发送。在扩展格式中还有IDE位,这一位在标准格式也有,不过在标准格式的控制段,用来区分这一个报文是扩展格式还是标准格式。不过这一帧是在他们相同的位置,即在标准帧的RTR位后。另外ID不允许高七位全为隐性位

        IDE位在标准格式中为显性,扩展格式中为隐性,遵循标准格式优先于扩展格式。

        c:控制段

        在标准格式中,控制段的第一个位是IDE位,用来标识扩展格式和标准格式的,r0是保留位,扩展格式的r1、r0是保留位,保留位均以显性电平发送,标准格式中的DLC和扩展格式的DLC都代表数据长度,占用四个位,但是数据是0~8个字节大小,其他的数值(9~16)不允许使用。

        d:数据段

        数据段占用0~64位,对应0~8字节。数据是高位先发。

        e:CRC段

        CRC段占用16个位,前15为是CRC值,后一位是CRC界定符,为隐性位。

        为确保数据正确接收,CRC用于检测数据是否正确。接收方计算CRC并与其比较,CRC计算范围为帧起始导数据段。

        f:ASK段

        ASK段由两个位组成:ASK槽,ASK界定符,在ASK段,发送单元发送两个隐性电平,接收单元在接收正常消息的前提下(所谓正常消息是指不含填充错误、格式错误、CRC错误的消息),将ASK槽的电平设置为显性位。主机也能检测报文是否发出并正常接收。ASK界定符为隐性电平。

        g:帧结束

        帧结束由连续七个隐性电平组成,代表此报文发送完毕。

综上,在数据帧中,标准帧和扩展帧只在仲裁段和控制段有差距,其他方面的格式一样。

        2.遥控帧

        遥控帧用于请求数据。

        遥控帧和数据帧的结构一样,只不过没有数据段,且RTR位为隐性电平,控制段的DLC可用于表示请求的数据长度。

        3.错误帧

        错误帧是用于在接收和发送消息时检测出错误通知错误的帧,它会打断并毁坏正在发送的报文,由6位错误标志和8位错误界定符组成,在图中,错误标志重叠部是指在总线上有多条错误帧的时候,可能会有0到12位连续的显性电平,后6位电平就是这些不同步的错误帧的电平。

        在错误界定符中,总线一直发送隐性位,直到总线上出现隐性位为止(倘若在此期间错误标志重叠部发送0~12个位),然后继续发送后边7位的隐性位,错误帧结束。

        值得注意的是,处于主动错误状态的单元的错误标志才是显性,被动错误状态的单元是隐性的(因为不能影响总线)。

        4.过载帧

        在接收单元尚未准备好接收下一个报文的时候,过载帧将被发送。它和主动错误帧结构一样,不过触发时机不同。

        有三种过载的情况,这三种情况都会引发过载标志的传送:

        1.接收器的内部情况(此接收器对于下一数据帧或远程帧需要有一延时)。

        2. 在间歇的第一和第二字节检测到一个“显性”位。

        3. 如果CAN 节点在错误界定符或过载界定符的第8位(最后一位)采样到一个显性位,节点 会发送一个过载帧(不是错误帧)。错误计数器不会增加。 根据过载情况1而引发的过载帧只允许起始于所期望的间歇的第一个位时间,而根据情况2和情况3 引发的过载帧应起始于所检测到“显性”位之后的位。 通常为了延时下一个数据帧或远程帧,两种过载帧均可产生。        ——CAN总线协议 - v2.0

        5.帧间隔

        间隔是三个隐性位,之后的隐性位代表总线空闲,这是正常单元的帧间隔,但是处于被动错误状态的单元发送报文后,就在下一报文开始传送之前或总线空闲之前发出8个“隐性”的位 跟随在间歇的后面。如果与此同时另一单元开始发送报文(由另一站引起),则此单元就作为这个报文的接收器。

        这样做可以降低处于被动错误状态的优先级,限制高错误率节点的发送频率,减少其对总线的干扰。因为处于被动错误状态的节点多少会影响总线。当退回主动错误状态的时候,证明该单元大概率不会干扰总线。

三、优先级的判断

        1.标准帧大于扩展帧,根据IDE位判定,IDE为显性,则为标准帧,反之扩展帧。

        2.数据帧大于遥控帧,根据RTR位判断,RTR为显性,则为数据帧,反之遥控帧。

        3.仲裁的ID判断,ID越小,优先级越高。仲裁段,谁先出现显性电平位,谁的优先级越高。

四、位填充

        CAN规定,在帧起始和CRC段之间,若连续出现五个相同的电平,那么在第六位必定是和前五为相反的电平。这样做的目的是防止突发错误。倘若没有位填充,那么如果连续发送位数据,由于时钟误差,接收方可能只接收63位数据。接收单元将自动把第六位的相反电平去除,倘若接收单元的第六位也和前五位电平相同,则视为帧错误,并发送错误帧。

五、位时序、同步

        为了调整采样点,CAN将一个位分成了4份:同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2(PBS2)。每个段由若干个tq组成。其中:

        采样点位于相位缓冲段1(PBS1)和相位缓冲段2(PBS2)交界处。

        在发生隐性电平到显性电平的变化时,会进行硬件同步,这一tq将作为SS段

        倘若在接收数据的时候,电平发生变化,但我仍处于上一个位或者此时并未在SS段,则会启用再同步。

       再同步通过增加加长PBS1段,或缩短PBS2段,以调整同步,调整的长度不超过SWJ。

        在CAN入门书中详细说明了什么情况下进行硬件同步和再同步:

六、错误

        CAN的节点在发送或者接收时候发生错误,会有两个计数器计数:发送错误计数值(TEC)和接收错误计数值(REC),当它们的值大于某个值的时候,会进行状态的转换。

        总线关闭将不再参与总线的收发,但是接受是可以的(此时接收不影响总线状态)。

        由于每个单元都有自己的用处,所以先是CAN(管理员)禁言单元,倘若过多的捣乱,就给关小黑屋了。改造完(检测到128次连续11隐性位)以后就给恢复。

        TEC和REC的加减规则参考以下表格:

手册介绍很详细,但是还是需要仔细琢磨,更重要的是用作实践。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值