can总线

先说说差分信号:

下面内容来自百度

差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。

 简单的说,就是两条线之间的电压差为0时,表示高电平1(隐性),电压差是一个正数时,表示低电平0(显性)。

位填充:

因为can的位比较多,比较长,为防止出错,所以每隔五个相同的位后面,会自动加入一个相反的位

can协议帧格式

     帧             帧用途
数据帧        用于发送单元向接收单元传送数据的帧。
遥控帧        用于接收单元向具有相同 ID 的发送单元请求数据的帧。
错误帧        用于当检测出错误时向其它单元通知错误的帧。
过载帧        用于接收单元通知其尚未做好接收准备的帧。
帧间隔        用于将数据帧及遥控帧与前面的帧分离开来的帧。

 报文格式又两种:

  11位的是标准的,29位是扩展的

最前面SOF帧起始,当这位为0时,表示要开始传送数据了;

接下来的11位是仲裁段,相当于优先级,当两条报文同时发过来时,总线根据仲裁的优先级选择先读取谁;

后面是1位的RTR,该位为1时,远程帧;0是数据帧;

下面1为的IDE,用来区分标准帧(0)和扩展帧(1);

r1,r0为保留位;

控制段最后的DLC,是表示后面紧跟着的数据当中的字节长度;

后面64位的数据段中存入要发送的内容;

和IIC USART等协议类似,也要有一个校验位,can中就是CRC,循环冗余校验码,15位;后面跟着1位的DEL,界定符,上面提到的位填充,到这里就停止了;

后面也有一个ACK应答位,以及ACK的界定符DEL 固定为1;

下面7个连续的隐性位1,EOF表示本次报文包这里结束了;

后面其实还有3位隐性的ITM,表示总线现在已经空闲。

猜你喜欢

转载自www.cnblogs.com/qifeng1024/p/11744021.html