如何使用CAN分析仪验证MCU CAN错误机制

本文通过实验验证CAN控制器的错误处理机制是否符合相关标准。具体而言,我们使用ZPS-CANFD设备(ZPS-CANFD介绍)作为测量工具,USBCANFD-200U作为被测设备(DUT),通过注入特定类型的错误,观察DUT的响应是否符合ISO16845-1:2016和ISO11898-1:2015标准的要求。

实验包括接收错误响应验证和发送错误响应验证两个部分。

1、测试环境

1.1、硬件准备

  • ZPS-CANFD:作为测量设备,用于注入错误并捕获总线数据。ZPS-CANFD是广州致远电子开发的一款总线分析仪,支持CANFD、CAN和LIN总线的测试,适用于汽车电子和工业自动化领域。
  • USBCANFD-200U:作为被测设备(DUT),其CAN控制器的错误处理机制需要验证。

1.2、软件准备

打开ZPS-CANFD和USBCANFD-200U的配套软件。

配置CAN通道参数,包括波特率和终端电阻,确保两者匹配。

开启CAN通道,ZPS-CANFD设置为"只听应答模式",以便于观察DUT的错误帧响应,而不干扰总线。

在CAN控制器的运行机制中,当接收到不同类型的错误时,错误帧的生成位置和REC(接收错误计数器)的增量会有所不同。本节通过两个实例验证DUT在接收错误时的响应。

2、实例一:CRC错误

验证目的

观察出现CRC错误后,错误帧生成位置是否符合标准。

观察出现错误帧后,REC递增是否符合标准。

预期结果

根据ISO16845-1:2016标准7.2.5小节,当DUT接收到CRC错误(CANFD帧)时,它将生成一个有效的错误帧,从CRC定界符后的第四位开始。

根据ISO16845-1:2016标准7.6.10小节,当DUT生成一帧错误帧后,其REC应增加1。

错误注入

在ZPS-CANFD软件的报文发送窗口,添加任意报文(例如ID为100的CANFD帧)。

打开高级按钮,勾选"发送干扰",将干扰位置设置为"自定义",干扰类型选择"单位干扰"。

将干扰光标移到CRC字段的某个位(注意避开固定填充位),如下图所示。

验证结果

在ZPS-CANFD软件界面,观察错误帧波形。当DUT接收到CRC错误后,其错误帧从CRC定界符后的第四位开始发出,符合标准。下图分别展示了正确帧和错误帧的CRC定界符位置对比。

在DUT软件界面,观察错误信息。当出现一帧错误帧时,REC+1;出现两帧错误帧时,REC+2,以此类推,符合标准。如下图所示。

3、实例二:EOF错误

验证目的

观察出现EOF错误后,错误帧生成位置是否符合标准。

观察出现错误帧后,REC递增是否符合标准。

预期结果

根据ISO16845-1:2016标准7.2.10小节,当DUT接收到EOF错误时,它将生成一个有效的错误帧,从损坏位的下一位开始。

根据ISO16845-1:2016标准7.6.14小节和ISO11898-1:2015标准12.1.4.2小节,若REC起始值为0且ACK发送成功,REC保持为0;若REC起始值大于0且ACK发送成功,REC减1。

根据ISO16845-1:2016标准7.6.8小节,当DUT生成一帧错误帧后,其REC应增加1。

错误注入

在ZPS-CANFD软件的报文发送窗口,添加任意报文。

打开高级按钮,勾选"发送干扰",将干扰位置设置为"自定义",干扰类型选择"单位干扰"。

将干扰光标移到EOF位,如下图所示。

验证结果

在ZPS-CANFD软件界面,观察错误帧波形。当DUT接收到EOF错误后,其错误帧在该位之后的第一位开始发出,符合标准。如下图所示。

在DUT软件界面,观察错误信息。当出现一帧错误帧时,REC保持初始值,符合标准。例如,若REC初始值为1,因为EOF错误出现在ACK之后,ACK发送成功,REC-1;EOF错误发生,REC+1,因此REC值不变。如下图所示。

4、实例三:CRC定界符错误

验证目的

观察出现CRC定界符错误后,错误帧生成位置是否符合标准。

观察出现错误帧后,TEC递增是否符合标准。

预期结果

根据ISO16845-1:2016标准8.2.5小节,当DUT发送报文的CRC定界符位被破坏后,它将生成一个有效的错误帧,从损坏位的下一位开始。

根据ISO16845-1:2016标准8.6.7小节,当DUT生成一帧错误帧后,其TEC应增加8。

错误注入

在ZPS-CANFD软件的被动接收干扰窗口,根据DUT发送的报文设置帧数据和干扰位置。

将干扰光标放到"CRC定界符"位,干扰类型选择"隐性干扰为显性",并启动干扰,如下图所示。

验证结果

在ZPS-CANFD软件界面,观察错误帧波形。当DUT的CRC定界符位被干扰后,其错误帧在该位之后的第一位开始发出,符合标准。如下图所示。

在DUT软件界面,观察错误信息。当发送一帧错误帧时,TEC+8;发送两帧错误帧时,TEC+16,以此类推,符合标准。如下图所示。

通过以上实验,我们验证了USBCANFD-200U的CAN控制器在接收和发送过程中对CRC错误、EOF错误和CRC定界符错误的响应完全符合ISO16845-1:2016和ISO11898-1:2015标准的要求。具体而言:

  • 在接收错误测试中,DUT正确地在规定的位置生成错误帧,并根据标准调整REC值。
  • 在发送错误测试中,DUT在发送过程中检测到错误时,也能正确生成错误帧,并相应地调整TEC值。

这些验证对于确保CAN总线系统的可靠性至关重要,尤其是在汽车电子和工业控制等对通信稳定性有严格要求的领域。通过使用ZPS-CANFD设备进行总线错误注入和分析,我们可以高效地验证CAN控制器的错误处理机制,从而提高系统的设计和调试效率。

相关推荐
CODECOLLECT11 小时前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen12 小时前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠14 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_15 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技17 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计17 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
小龙报18 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业18 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能18 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn19 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件