首页 > 代码库 > CAN总线疑惑与解答
CAN总线疑惑与解答
1 CAN总线2根数据线是怎么表示数据信息1和0的?
Can总线采用差分数据表示方法,平时2个数据线为2.5V,表示隐性(1)。当用数据0(显性)需要发送时1跟数据线上升到3.5V另一个下降到1.5V。如图a所示
所有节点都连接到这两根数据线,当所有节点都发送数据为隐性时总线数据才表示为隐性,如果有其中一个节点发送数据显性则总线数据表示为显性。数据仲裁也就是基于这样一个特点仲裁的。
2 CAN总线各个节点之间没有时钟线,如果各节点间时钟频率不一致或者即使时钟频率完全一致但相位偏移怎么办,它是怎么实现各个节点同步的?
网络的标准位速率,其中就是额定位时间(也称标准位周期)。如图1所示,CAN总线的额定位时间是由4部分组成的:同步段(SYNC_SEG),传播段(PROP_SEG),相位缓冲段1(PSEG1)和相位缓冲段2(PSEG2)。所以额定的位时间、位周期中的这些段都是可以编程设置的,且都可以用整数个基本时间单位(时间份额TQ)来表示。这个基本时间单位由振荡器分频而得的 ,(BRP为波特率预分频因子,也可以编程设置)。
图1 CAN总线额定位时间的结构
2.1 硬同步
硬同步只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段(SS)之内
2.2 再同步
在消息帧的随后位中,每当有从“隐性位”到“显性位”的跳变,并且该跳变落在了同步段之外,就会引起一次重同步。重同步机制可以根据跳变沿增长或者缩短位时间以调整采样点的位置, 保证正确采样
3 CAN总线的帧类型和各种帧类型的作用?
3.1 数据帧
3.2 远程帧
3.3 出错帧
3.4 超载帧
4 CAN总线发送数据和回复ACK
每种类型的帧数据中会有2个bit隐形数据(00)表示ACK,当第一个收到数据节点会把后1个bit隐形数据改为显性数据(01),发送端如果检测到ACK变成显性则表示至少有一个节点收到数据。
5 CAN总线怎么表示总线是空闲状态?
如果总线中有连续11个隐形数据则表示总线空闲。
CAN总线疑惑与解答