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,表示总线现在已经空闲。

 

 


 

接下来我们说下一个知识:位定时

 

先介绍一些概念:

位时间

字面意思:发送一个位(0 或 1),所需要的时间

 

 

 

我们又把一个位分解成更小的单位:时间份额(TQ)

一位一般是8-25TQ

 

在这一个位时间里面,还分成4个时间段:分别是同步段、传播段、相位缓冲1、相位缓冲2,

我们一个个介绍这几个时间段

同步段:显然,是用来做同步的,也就是硬同步需要用到的,类似于起始位,他是一位里面开始的标志,该位占用1个TQ

传播段: 用于补偿信号通过网络和节点传播的物理延迟、传播段长度应能保证2倍的信号在总线的延迟,占用1-8个TQ

相位缓冲段:允许通过重同步对相位缓冲段1加长和相位缓冲段2缩短→最大长度=SJW(同步跳转宽度)、相位缓冲段1末端进行总线状态的采样、占用1-8个TQ  相位缓冲段2占用2-8TQ

同步跳转宽度SJW,是为相位缓冲可以调整的最大长度,1-4个TQ,sjw必须小于两个缓冲段的值

 

 

接下来说说同步

同步有两种:硬同步、重同步

硬同步,就是用刚刚提到的同步段,通过调节时间,改变同步段的位置,达到同步的目的

重同步,是利用刚刚提到的两个相位缓冲段,更改他们的长度,达到同步的目的

 

 

 

这里有一个计算位定时参数的网站

https://www.kvaser.cn/support/calculators/bit-timing-calculator/

 


 

posted @ 2019-10-26 17:53  祁峰_1024  阅读(1109)  评论(0编辑  收藏  举报