当前位置: 首页 > news >正文

如何进行CAN一致性测试

CAN一致性测试(通常称为符合性测试)是确保CAN设备符合ISO 11898标准的关键步骤,涵盖物理层和数据链路层的验证。

CAN一致性测试验证CAN控制器或收发器是否符合ISO 11898标准的要求,确保设备在多厂商环境中能够可靠通信。国际标准化组织(ISO)发布的ISO 16845标准提供了测试方法和抽象测试套件,分为两部分:

  • ISO 16845-1:针对数据链路层和物理信令的符合性测试计划,涵盖经典CAN和CAN FD协议。
  • ISO 16845-2:针对高速介质访问单元(物理层)的符合性测试计划,包括静态和动态测试。

测试通常由独立测试机构或使用专业工具(如Vector的CANoe)执行,但嵌入式开发者也可以在开发阶段进行预测试以降低成本。

根据ISO 16845标准,CAN一致性测试涵盖以下关键领域:

帧格式

  • 测试内容:验证CAN控制器是否能正确处理11位标准标识符和29位扩展标识符,以及数据帧和远程帧的发送与接收。
  • 测试方法:发送包含不同标识符和数据长度的帧,检查接收端的解析是否正确。
  • 预期结果:接收到的帧与发送的帧在标识符、数据长度和内容上完全一致。

错误检测

  • 测试内容:检查控制器对CRC错误、位填充错误和确认错误的检测能力。
  • 测试方法:使用测试设备发送包含错误(如错误CRC)的帧,观察控制器的响应。
  • 预期结果:控制器应检测到错误,不确认错误帧,并可能增加错误计数器。

仲裁

  • 测试内容:验证高优先级消息(较低标识符)在总线竞争中获胜。
  • 测试方法:配置两个节点同时发送不同优先级的消息,观察总线上的传输顺序。
  • 预期结果:高优先级消息优先传输。

位定时

  • 测试内容:确保位定时参数正确配置,支持目标波特率(如500 kbps)。
  • 测试方法:根据微控制器时钟频率计算位定时参数,配置控制器并验证通信。
  • 预期结果:无定时相关错误,通信正常。

状态机

  • 测试内容:测试控制器在错误活动、错误被动和总线关闭状态之间的转换。
  • 测试方法:通过错误注入(如不确认帧)增加错误计数器,观察状态转换。
  • 预期结果:当错误计数器达到128时,控制器进入错误被动状态;达到256时,进入总线关闭状态。

CAN一致性测试是确保嵌入式系统通信可靠性的关键步骤。通过遵循ISO 16845标准,结合专业工具和微控制器测试,开发者可以验证CAN实现的正确性。早期测试和使用认证设备能够显著提高开发效率和产品质量。无论是汽车还是工业应用,严格的测试流程都是确保系统成功的关键。


文章转载自:

http://xadARMvh.Lrprj.cn
http://0ZeWV4Tl.Lrprj.cn
http://7xfNcA0E.Lrprj.cn
http://m6xWw2f3.Lrprj.cn
http://rWsccE2z.Lrprj.cn
http://JqwBzq2E.Lrprj.cn
http://5hoOUeOi.Lrprj.cn
http://28BIijhB.Lrprj.cn
http://Kn4cSvpo.Lrprj.cn
http://t8sEnHHW.Lrprj.cn
http://L4L4va0H.Lrprj.cn
http://HhG8jsPC.Lrprj.cn
http://nLr9Tl1S.Lrprj.cn
http://fvjxTmMc.Lrprj.cn
http://DorZ7Iof.Lrprj.cn
http://xHKQZgtA.Lrprj.cn
http://faLwFUXW.Lrprj.cn
http://ioZ1Az4h.Lrprj.cn
http://d4cgxynd.Lrprj.cn
http://spmjPd6p.Lrprj.cn
http://vHC1v90t.Lrprj.cn
http://apAI1svA.Lrprj.cn
http://PikSLY9t.Lrprj.cn
http://gJ8OnZuD.Lrprj.cn
http://XB6H8zgC.Lrprj.cn
http://yClxPUcz.Lrprj.cn
http://Gt6Ux19r.Lrprj.cn
http://YrJ6G9iC.Lrprj.cn
http://gM2cfTY6.Lrprj.cn
http://oBux1yAH.Lrprj.cn
http://www.dtcms.com/a/210500.html

相关文章:

  • 从稳定到卓越:服务器部署后的四大核心运维策略
  • 传奇各种怪物一览/图像/爆率/产出/刷新地/刷新时间/刷怪时间
  • LeetCode 2942.查找包含给定字符的单词:使用库函数完成
  • vs2022 Qt Visual Studio Tools插件设置
  • 人工智能100问☞第31问:如何评估一个AI模型的性能?
  • IPC进程间通信详解
  • 索引下探(Index Condition Pushdown,简称ICP)
  • MCP与AI模型的多语言支持:让人工智能更懂世界
  • 数据库6——综合实验-水果商店进阶一
  • Axure酒店管理系统原型
  • Python入门手册:Python中的数据结构类型
  • Gartner《Optimize GenAI Strategy for 4 Key ConsumerMindsets》学习心得
  • 力扣:《螺旋矩阵》系列题目
  • 豪越科技:消防应急装备智能仓储管理新变革
  • 深入理解设计模式:工厂模式、单例模式
  • 解析 Flask 上下文机制:请求上下文、应用上下文
  • HTTP协议初认识、速了解
  • 机器学习中的多GPU训练模式
  • WebXR 虚拟现实开发
  • Python爬虫(37)Python爬虫深度实践:Splash渲染引擎与BrowserMob Proxy网络监控协同作战
  • 使用 Go 语言实现完整且轻量级高性能的 MQTT Broker
  • vue3使用七牛云上传文件
  • MySQL主从同步原理
  • 快速失败(fail-fast)和安全失败(fail-safe)的区别
  • 传统医疗系统文档集中标准化存储和AI智能化更新路径分析
  • 爬虫知识之IP代理
  • 用 AI 让学习更懂你:如何打造自动化个性化学习系统?
  • 嵌入式开发方向开发利器
  • OpenLayers 加载全屏显示控件
  • 【萤火工场GD32VW553-IOT开发板】ADC电压的LabVIEW采集