前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用CAN分析仪验证MCU CAN错误机制

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

作者头像
不脱发的程序猿
发布于 2025-05-01 14:33:48
发布于 2025-05-01 14:33:48
970
举报

本文通过实验验证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控制器的错误处理机制,从而提高系统的设计和调试效率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 美男子玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何进行CAN一致性测试
CAN一致性测试(通常称为符合性测试)是确保CAN设备符合ISO 11898标准的关键步骤,涵盖物理层和数据链路层的验证。
不脱发的程序猿
2025/05/25
1340
如何进行CAN一致性测试
一文搞懂CAN和CAN FD总线协议
这篇文章是将一文搞懂CAN总线协议帧格式和一文搞懂CAN FD总线协议帧格式两篇文章的整合,方便各位朋友学习和查阅。
不脱发的程序猿
2022/10/28
9.2K0
CAN总线传输协议[通俗易懂]
一、控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线、同轴电缆或光纤来传输信号,因其高性能、高可靠性和高实时性等特点,已经成为了世界上应用最广泛的现场总线之一。公元1991年,CAN总线技术规范(CAN Version2.0)制定并发布,该技术规范共包括A和B两部分,称为CAN2.0A和CAN2.0B。其中CAN2.0A给出了CAN报文的标准格式,CAN2.0B给出了标准格式和扩展格式两种。CAN总线最高传输速率可达1Mbps(通信距离最长40m),如果降低传输速率,其直接通信的最远距离可达10km(速率5Kbps以下),其总线上的节点数可达110个。
全栈程序员站长
2022/09/14
4.4K0
CAN总线传输协议[通俗易懂]
秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!
CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519以及ISO11898),是国际上应用最广泛的现场总线之一。差异点如下:
全栈程序员站长
2022/09/14
3.9K0
秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!
一起来学习CAN FD(CAN with Flexible Data-Rate)
精彩内容 首先,小猿给大家拜个晚年,祝各位猿友在新的一年里,工作顺利,技术长进,家庭和睦, 在刚刚过去的一年,CAN总线有了飞跃的发展,也就是我们要讲的CAN FD(CAN with Flexible Data-Rate) CAN FD简介 CAN FD(CAN with Flexible Data-Rate), 随着通信技术的进步,总线技术的广泛应用,对总线带宽和传输速率提出了更高的要求,传统的CAN最高可以到1M数据场只有8字节已经难以满足日益增加的需求,早在11年博世公司就提出了CANFD用以替代
用户1605515
2018/04/10
3K0
一起来学习CAN FD(CAN with Flexible Data-Rate)
CAN总线学习笔记(3)- CAN协议错误帧
依照瑞萨公司的《CAN入门书》的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成笔记。好记性不如烂笔头,加油!
全栈程序员站长
2022/09/14
2.9K0
CAN总线学习笔记(3)- CAN协议错误帧
诊断仪进行CAN采样点测试的原理
在每一帧报文的第一个 ID 位(即 SOF 后的首个数据位,选择干扰此位可有效降低重同步机制引入的误差)起始边沿的 0% 位置,施加一个宽度为 27% 位宽的干扰脉冲,如下图所示。
不脱发的程序猿
2025/05/22
1080
诊断仪进行CAN采样点测试的原理
(34)STM32——CAN通讯实验笔记
这些段又由可称为 Time Quantum(以下称为 Tq)的最小时间单位构成。
小点点
2022/12/12
1.4K0
(34)STM32——CAN通讯实验笔记
【CAN公开课】对面的猿猿你看过来
这个周末,各位猿友过的怎么样呢?对面的猿猿你CAN过来,CAN过来,这里的内容很精彩,请不要假装不理不睬。今天我们开始来学习CAN总线,今天先来简单介绍下一些基础知识。 1 CAN总线简介 CAN(Controller AreaNetwork)总线最早由BOSCH博世公司开发,控制器局域网(CAN)为串行通讯协议,最早知识应用在汽车电子领域,但随着技术的发展,应用的需要,由于其高性能、高可靠性、及独特的设计,CAN越来越受到人们的重视。 CAN 的应用已经拓展到很多领域,像传动控制,变频器,楼宇控制,农
用户1605515
2018/04/10
8000
【CAN公开课】对面的猿猿你看过来
CAN总线协议
  CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。在北美和西欧,CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。
全栈程序员站长
2022/09/14
5K0
CAN总线协议
Linux应用程序开发之CAN编程
CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。
韦东山
2020/06/29
3.5K0
详解CAN总线:什么是CAN总线?
在之前的博文中分享过一系列一文搞懂:SPI协议、I2C协议、PID算法、Modbus协议等文章,也考虑过是否可以出一篇介绍CAN总线协议的文章,但是在之后的学习研究中,发觉CAN总线协议比较庞大和复杂,做为刚刚进入汽车电子行业的开发小白,一篇文章难以讲解清晰,所以决定在汽车电子专栏中连载分享关于CAN总线协议的相关知识。
不脱发的程序猿
2022/08/07
5.2K0
详解CAN总线:什么是CAN总线?
CAN现场总线基础知识总结,看这一篇就理清了(CAN是什么,电气属性,CAN通协议等)
原文链接:https://blog.csdn.net/w464960660/article/details/129127589
Winter_world
2023/02/27
3.2K0
CAN现场总线基础知识总结,看这一篇就理清了(CAN是什么,电气属性,CAN通协议等)
CAN通信详解(全)
本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯,并将结果显示在TFTLCD模块上。本章分为如下几个部分:
全栈程序员站长
2022/07/21
4.1K0
CAN通信详解(全)
CAN协议详解
1、随着车用电气设备增加,对应的电气节点剧增(高档车节点有上千之多),一般的通信协议需要的线束太多。需要减少线束,支持更多节点的协议。
全栈程序员站长
2022/09/14
1.7K0
CAN协议详解
CAN协议深度解析-简单易懂协议详解[通俗易懂]
CAN-bus发布了ISO11898和ISO11519两个通信标准,此两个标准中差分电平的特性不相同。
全栈程序员站长
2022/09/14
3.5K0
CAN协议深度解析-简单易懂协议详解[通俗易懂]
常见CAN通信错误与故障排查技巧
位错误指的是CAN总线传输中,某个节点接收到的位与发送节点发送的位不一致。通常是由于信号干扰、噪声或时钟同步问题引起的。
不脱发的程序猿
2025/02/03
2990
常见CAN通信错误与故障排查技巧
CAN FD网络中每秒最多可以发送多少帧报文?
随着总线技术在汽车电子领域越来越广泛和深入的应用,特别是自动驾驶技术的迅速发展,汽车电子对总线宽度和数据传输速率的要求也越来也高,传统CAN(1MBit/s,8Bytes Payload)已难以满足日益增加的需求。
不脱发的程序猿
2023/07/05
1.2K0
CAN FD网络中每秒最多可以发送多少帧报文?
一文搞懂CAN总线协议帧格式
CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文。
不脱发的程序猿
2022/10/08
5.5K0
一文搞懂CAN总线协议帧格式
CAN知识集合
1.隐性和显性位 显性数值表示逻辑0,隐性数值表示逻辑1 CAN总线为隐性(逻辑1)时,CAN_H和CAN_L的电平都为2.5V(电位差为0V);
心跳包
2020/08/28
5660
相关推荐
如何进行CAN一致性测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档