CAN总线之通俗易懂----波形

CAN示波器图片

这是一幅来自最普通的ISO11898CAN总线的图片,以1Mbps速率运行。收发器是82C251。也就是说,物理层是由ISO 11898指定的。

1-can_high1

测量在CAN_H(CAN高位)和GND(接地)之间进行。注意,静态和隐性总线电压在2.5 V左右。传送显性位时,电压升高到3.5V左右。


以下是同一个总线,但是测量在CAN_L(CAN低位)和GND(接地)之间进行:

2-can_low1

这是另一个以125 kbps比特率发送的报文。报文的(11位)标识符是300(十六进制值为12c)。如果仔细察看,您应该能够识别报文中前面的位。

3-can_frame1

这是一幅更复杂的图片。它显示与上面例子相同的报文。仍然是11位标识符300,比特率仍然是125kbps,但是CAN总线上没有端接。CAN线缆是短扁平带状线缆。

4-can_error_passive1
那么,发生了什么情况?这里,比特率是125kbps,所以一个位的时间是8微秒。
  1. 首先传送节点发送一个起始位。这是一个逻辑’0′,也就是一个显性电平。
  2. 然后传送标识符。十进制300的十六进制值是12c,或者二进制表示是001 0010 1100。前两个0会顺利传送。这解释了图片中看到的24微秒的显性电平。
  3. 然后应该传送一个’1′。但是因为总线没有端接,所以斜率上升不是预期的结果。传送节点现在将认为它在总线上看到的是’0′。
  4. 因为这种情况发生在仲裁阶段,所以传送节点将停止传送,其认为有其它节点正在传送。总线现在将变为隐性状态,因为实际上没有节点在传送。
  5. 在6个隐性位之后,传送节点和接收节点都将检测到填充错误,并开始进行错误处理。这时,已经经过了80微秒(一个起始位、两个2个‘0’、一个误解位和六个隐性位,总共10个位,等于80微秒)。
  6. 检测到数据错误的所有节点现在将开始传送一个错误帧。这种情况下,因为在捕获到上方图片之前产生了许多错误,错误帧为被动型,所以传送节点是错误被动型。被动型错误帧和主动型错误帧相似,但是使用隐性电平进行传送,所以在总线上不可见。
  7. 被动型错误帧持续6位的时间。
  8. 然后,所有节点等待8个隐性位的时长(称为错误定界符)。
  9. 然后,所有节点等待3个隐性位的时长(称为间歇)。
  10. 对以上时间求和,结果是1+6+6+8+3 = 24个隐性位 = 192微秒(如图)

经验提示:始终端接CAN总线!反射不一定有害,但是损坏的边缘形状将破坏通信。


这里是同一个CAN总线在另一个时间刻度中的情况:

5-can_ep_closeup1
CAN总线大约2分米(8英寸)长。信号的下冲和振铃均可见,但是在这种情况中无关紧要。这次,平缓的上升斜率是问题所在。


这里是相同的设置,但是这次传送节点和接收节点都是错误主动型:

6-can_error_active1
发生了什么情况?

  1. 如上图所示,传送了三个‘0’(花费24微秒),接下去的位被误解,所以传送器认为它已经失去仲裁。
  2. 传送节点等待6位,然后检测到一个填充错误。误解的位和这6个位花费56微秒。
  3. 传送节点和接收节点现在开始传送错误帧。它是6个显性位(48微秒)。
  4. 传送错误帧的节点现在等待8个隐性位。但是,因为上升斜率不对,第一个位被误解。节点将认为这是另一个节点在传送错误帧,所以将忽略它。
  5. 当总线回到隐性电平时,所有节点等待8位。
  6. 然后是3个隐性位的间歇。
  7. 3+9 = 12个位 = 96微秒(如图中所示)。
  8. 然后,传送节点重新尝试并得到相同的结果。一段时间以后,传送节点进入错误被动型状态,并将如前所述那样运行。

这里是另一幅图片。在此设置中,CAN总线上只有一个节点(正确端接)。该节点试图传送一条报文,但是没有其它节点在侦听。

7-just_one_node_transmitting1
那么,会发生什么情况?

  1. 首先,传送节点发送整个报文。
  2. 传送节点期望在ACK时隙中填充一个显性电平。但是,因为没有其它节点在侦听,没有任何ACK到达,所以传送节点检测到一个应答错误。
  3. 然后传送器传送一个被动型错误标志(上图中,尝试发送了几秒钟,所以不再是错误主动型,而是被动型)。
  4. 被动型错误标志后面跟随一个错误定界符和间歇。
  5. 因为这个节点尝试发送一个报文但是操作失败,它必须再等待8位才能开始新的传送。这种情况在CAN规范中称为“挂起传送”。
  6. 传送节点还必须将其传送错误计数加8。但是,这是CAN规范中的特殊情况,只有当传送节点是错误主动型时才会发生。当传送节点进入错误被动型时,它不会增加其传送节点错误计数(这种情况中),而是会不断重试传送。

所以,上图表示,一条报文被传送,然后短暂停顿(时间为错误标志、错误定界符、间歇和挂起传送的总和)。然后报文被不断重传……

	</div>

猜你喜欢

转载自blog.csdn.net/langshi_2011/article/details/90208066