CAN节点的稳定性、可靠性和安全性得益于其强大的错误管理机制。上一篇文章我们介绍了CAN控制器的错误管理机制的工作原理(点击阅读)。本文将基于其工作原理及ISO16845-1:2016标准,为大家介绍使用ZPS-CANFD设备验证CAN控制器的错误响应过程。
CAN控制器的错误管理机制是保障CAN总线通信可靠性的关键机制,它能检测并处理多种错误情况,即位错误、填充错误、CRC错误、格式错误以及ACK错误,并及时地响应错误帧,另外通过错误计数器的数值(发送错误计数器TEC,接收错误计数器REC),它可以判断自身通信状态,如主动错误、被动错误和总线关闭,从而采取不同应对策略。
在CAN网络里,CAN节点既可以作为发送节点,也可以作为接收节点,当总线上出现错误时,可能是作为发送节点报出的错误,也可能是作为接收节点报出的错误,所以验证CAN控制器错误处理机制,需要从发送和接收两个方向进行测试。本文通过使用ZPS-CANFD设备提供的发送干扰和接收干扰功能,进行总线的错误注入,结合报文接收、报文解码窗口观察总线情况,分析错误帧的产生和错误计数器动作是否符合标准。

图1 ZPS-CANFD功能开启界面
接收错误响应能力验证
在CAN控制器的运行机制中,当面对不同的接收错误时,错误响应位置与REC增量存在一定的差异,部分错误发生后,下一位便紧跟错误标志位;而另一些错误出现后,要在随后几位才开始呈现错误标志位。在REC增量方面,不同错误导致的结果也各不相同,有的错误让REC以1为单位进行递增,有的使其以8为单位进行递增,还有的情况下REC保持不变。接下来我们将通过两个实例,介绍不同错误情形下,CAN控制器的接收错误检测结果以及REC增量是否符合标准。
实例一:CRC错误
1、验证目的
①观察出现CRC错误之后,错误帧生成位置是否符合标准;②观察出现错误帧之后,REC递增是否符合标准。
2、预期结果
①根据ISO16845-1:2016(E)标准中7.2.5小节要求,当DUT接收到CRC错误(CANFD帧的)之后,它将生成一个有效的错误帧,从CRC定界符后的第四位开始;②根据ISO16845-1:2016(E)标准中7.6.10小节要求,当DUT生成一帧错误帧后,它的REC应增加1。
3、硬件准备
ZPS-CANFD作为测量设备,简称ZPS。USBCANFD-200U作为被测设备,简称DUT。
4、软件准备
打开ZPS和DUT的软件,进行CAN通道参数的匹配(如波特率、终端电阻),并开启CAN通道,进行数据数据交互,ZPS参数设置如图2所示。

图2 波特率匹配注:
1、总线允许,代表CAN1通道启动;
2、ZPS的工作模式选择“只听应答模式”,ZPS不会回应错误帧,可以便于在对错误帧的波形分析时,只看到DUT发送的错误帧。
5、错误注
入打开ZPS软件的报文发送窗口,添加任意报文(例如ID 100的CANFD帧),然后点开高级按钮,勾选“发送干扰”,将干扰位置选择“自定义”,干扰类型选择“单位干扰”,干扰光标移到CRC的某个位,如图3所示。

图3 发送CRC错误注:CANFD帧的CRC场有固定填充位,所以发送CRC错误时,干扰光标不能选择固定填充位,且需离它远一些,否者会发送CRC固定填充位错误,这样就不符合该测试项的预期了。
6、验证结果
①在ZPS软件界面,观察错误帧的波形,当DUT接收到CRC错误后,它的错误帧从CRC定界符后的第四位开始发出,符合标准。如图4、图5所示,对比正确帧和错误帧的CRC定界符位置可以看出。

图4 正确CANFD帧时,CRC起始~CRC定界符宽度:23us

图5 DUT在CRC定界符后第四位开始发出错误帧注:主动错误帧格式:6个显性位+8个隐性位。
②查看DUT软件界面的错误信息,观察到当出现一帧错误帧时,REC+1,两帧错误帧时,REC+2,以此类推,符合标准。

图6 REC递增结果显示
实例二:EOF错误
1、验证目的
①观察出现EOF错误之后,错误帧生成位置是否符合标准;②观察出现错误帧之后,REC递增是否符合标准。
2、预期结果
①根据ISO16845-1:2016(E)标准中7.2.10小节要求,当DUT接收到EOF错误时,它将生成一个有效的错误帧,从损坏位的下一位位置开始。②根据ISO16845-1:2016(E)标准中7.6.14小节和ISO 11898-1:2015(E)标准中12.1.4.2小节描述,若REC起始值为0,接收节点ACK发送成功,REC保持为0,若REC起始值大于0,接收节点ACK发送成功,REC减1。③根据ISO16845-1:2016(E)标准中7.6.8小节要求,当DUT生成一帧错误帧后,它的REC应增加1。
3、硬件准备同上。
4、软件准备同上。
5、错误注入打开ZPS-CANFD(1)软件的报文发送窗口,添加任意报文,然后点开高级按钮,勾选“发送干扰”,将干扰位置选择“自定义”,干扰类型选择“单位干扰”,干扰光标移到EOF位,如图7所示。

图7 发送EOF错误
6、验证结果
①在ZPS软件界面,观察错误帧的波形,当DUT接收到EOF错误后,错误帧在该位之后的第一位开始发出,符合标准,如图8所示。

图8 DUT在EOF损坏位后第一位开始发出错误帧
②查看DUT软件界面的错误信息,观察到当出现一帧错误帧时,REC保持初始值,符合标准。例如REC初始值为1,因为EOF错误出现在ACK之后,ACK发送成功,REC-1,EOF错误,REC+1,所以,REC值不变。

图9 REC递增结果显示
发送错误响应能力验证
在CAN控制器的运行机制中,当面对不同的发送错误时,它的错误响应一般在错误出现后,下一位便紧跟错误标志位。在TEC增量方面,错误帧的产生会让TEC以8为单位进行递增。接下来我们将通过一个实例,介绍在错误情形下,CAN控制器的发送错误检测结果以及TEC增量是否符合标准。
实例一:CRC定界符错误
1、验证目的
①观察出现CRC定界符错误之后,错误帧生成位置是否符合标准。②观察出现错误帧之后,TEC递增是否符合标准。
2、预期结果
①根据ISO16845-1:2016(E)标准中8.2.5小节要求,当DUT发送报文的CRC定界符位被破坏之后,它将生成一个有效的错误帧,从损坏位的下一位位置开始。②根据ISO16845-1:2016(E)标准中8.6.7小节要求,当DUT生成一帧错误帧后,它的TEC应增加8。
3、硬件准备
同上。
4、软件准备
打开ZPS和DUT的软件,进行CAN通道参数的匹配(如波特率、终端电阻),如图 2所示,并开启CAN通道,ZPS接收DUT发送的报文。DUT发送数据如图10所示。

图10 DUT发送帧
5、错误注入
打开ZPS软件的被动接收干扰窗口,按照DUT发送的报文,设置帧数据、干扰位置,即设置模版,然后将干扰光标放到“CRC定界符”位,再将干扰类型选择为“隐性干扰为显性”并启动干扰,如图11所示。

图11 CRC定界符位干扰
6、验证结果
①在ZPS软件界面,观察错误帧的波形,当DUT的CRC定界符位被干扰后,它的错误帧在该位之后的第一位开始发出,符合标准,如图12所示。

图12 DUT在CRC定界符后第一位开始发出错误帧
②查看DUT软件界面的错误信息,观察到当发送一帧错误帧时,它的TEC+8,以此类推,符合标准。
图13 TEC递增结果显示
-
检测
+关注
关注
5文章
4785浏览量
93760 -
CAN控制器
+关注
关注
3文章
76浏览量
15558
发布评论请先 登录
CAN控制器总线错误分析之CAN节点BusOff恢复过程分析与测试
示波器破解CAN错误帧/BusOff的经验分享
基于Verilog HDL语言的CAN总线控制器设计及验证

如何验证CAN控制器的错误响应机制?
评论