CAN总线信息以帧的方法传输,每个帧包含多个段:开始位SOF、裁定段、操控段、数据段、CRC校验、承认位、结束位等,各个段顺次串行被传输到总线上。开始位、CRC校验、承认位和结束位由操控器硬件主动生成,软件能够装备裁定段、操控段和数据段的内容。每个CAN帧最多发送数据段长度为8个字节即64位。
CAN总线协议有两种:CAN2.0A和CAN2.0B协议,CAN2.0A支撑帧ID为11位的规范帧,CAN2.0B协议支撑帧ID为11位的规范帧和帧ID为29位的扩展帧,如图1和图2所示。
图1CAN规范帧
图2CAN扩展帧
下面解说几个CAN总线问题:
位填充:上述图中都提到位填充的问题,即当发送的一帧CAN信息中呈现接连5个相同位时,操控器会主动填充一个相反的位进去,操控器接纳一帧CAN信息时发现5个相同的位,也会主动把这以后的一个翻转位去掉。那么或许咱们会问为什么要做这种看似无用的操作呢?因为CAN总线通讯归于异步通讯,尽管通讯两边约好设定相同的波特率通讯,可是每一位(bit)的宽度也不或许肯定相同,多个相同的位累积起来或许呈现较大的差错,形成接纳信息犯错,那么怎么处理这个问题呢?CAN协议中规则在位跳转时要做同步补偿,那么这样能够消除多个位累积形成的过错,可是假如CAN帧信息接连呈现多个0或1,接纳方没办法监测到翻转位,不能做出正确的补偿,或许导致发送方发了10位0,接纳方监测出11个0出来的状况呈现,所以当发送方接连发送5个0时,要位填充一个1进去,然后再发送下面的位,而接纳方接纳到5个0后接纳到下面的1能够做出相应的同步补偿,一起要丢掉这个填充位。依照CAN协议规则假如在CAN信息中接纳到接连6个以上的相同位被以为是过错信息,CAN操控器过错计数加1。
CAN协议:如上图所示,规范帧标识符(帧ID)有11位,扩展帧标识符(帧ID)有29位,CAN2.0B协议也兼容CAN2.0A协议,能够一起辨认规范帧和扩展帧。规范帧和扩展帧的差异在于IDE位,IDE为0时表明规范帧,IDE为1时表明扩展帧。
CAN信号:CAN总线运用一对差分信号通讯,即CAN_H和CAN_L,经过辨认它们的压差获取0或1的信息,上电后两个信号对地都会有必定的电压,即V_CANH和V_CANL,经过判别V_CANH-V_CANL辨认信息,总线信号分为显性(压差为1V以上,也即数字0)和隐性(压差小于0.5V,也即数字1)。一般在没有数据通讯时V_CANH和V_CANL都为2.5V,所以CAN总线默以为没有压差(隐性,数字1),当有开始位SOF(数字0,显性)时每个网络上的节点都能监测到,预备接纳信息,如图3所示。
图3CAN总线电压示意图
逐位裁定机制:CAN节点发送的信息都会被自己接纳并判别。当CAN总线上两个节点一起发送CAN信息时,CAN节点也会比较自己发送的数据和接纳的数据是否共同,因为CAN信号有显性(数字0,压差大于1V)和隐性(数据1,压差小于0.5V)两种,当一个节点发送0而另一个节点发送1时,总线表现为显性0,那么发送1的节点监测到后知道发送总线抵触,主动退出发送,所以能够看出,CAN总线信息小的优先级高。经过这种方法能够完成非破坏性逐位裁定,优先级高的节点正常发送,不受任何影响。
CAN总线技能学习(二)
CAN总线信息以帧的形式传输,每个帧包括多个段:起始位SOF、仲裁段、控制段、数据段、CRC校验、确认位、结束位等,各个段依次串行被传输到…
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/238093.html