0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CAN的应用层一致性测试

灵动MM32MCU 来源:灵动MM32MCU 作者:灵动MM32MCU 2022-07-29 10:06 次阅读

前面一个章节中我们和大家一起学习了CAN的物理层和链路层的一致性测试项,本章节我们将和大家一起了解CAN的应用层一致性测试。

应用层一致性测试

该测试项主要为了验证 ECU 在网络通信的完整性,一般还包括上层应用层协议的测试,网络管理功能的测试以及故障诊断等方面。

1.1 发送报文测试

报文的发送一般分为周期性的、紧急事件触发型的以及软件使能型,周期性的报文需要测验周期时长的偏差是否满足规约,另外 2 种类型的报文需要在干扰条件下进行看是否会造成发送失败情况。一般以固定 ID 发送至 CAN 工具(一个 CAN 网络至少需要有 2 个节点),通过上位机的时间戳功能查验。

报文发送周期测试主要是测试 DUT 期性报文的间隔时间是否小于允许误差。在DS301通讯规范中,要求由测试设备触发 DUT 进入周期性发送状态,测试设备接收 1 分钟报文后,进行统计,查看是否有间隔超过 20% 的误差的报文。

另外,一般需要 CAN 具备自动重发功能,可以通过 CAN_MCR.AEN 位实现,官方库例程中默认不使能 CAN_MCR.AEN位。

在发送时还有一点需要注意,FlexCAN具有接收自己发出的报文功能,且库例程中是默认开启该功能的,具体可参见 CAN_CTRL1.SRXDIS 寄存器描述,视情况决定是否禁止启用该功能。

1.2 CAN_H/L 对电源/对地短路容错性测试

测试 ECU 在不同错误状态下的容错性能,看错误条件解除后是否能够自动恢复通讯。一般测试时需要使 ECU 处于周期性发送报文的状态,且 CAN_H 或者 CAN_L 对电源/对地短路和自己与总线断路的维持时间要超过 1 min 钟保证错误的积累数致使 ECU 处于被动错误状态。

依据 GMW3122 定义,可分为7 种物理错误类型,包括地线漂移、地线丢失、电源丢失、CAN 线中断、CAN 线各短接到地、CAN 线各短接到电源、CAN 线短路等错误状态。如果恢复后,都可以恢复通讯,则通过测试。

实际测试发现,这几种短路和断路条件只会使 FlexCAN 的 Tx error 计数器增加到超过 127 ,进入被动错误状态而不会发生 Busoff ,期间会一直尝试重发,在恢复总线正常后,计数器的值会逐一递减同时由于能够收到正确的 ACK 响应而恢复正常通讯了,恢复的时长也符合标准。下图展示的是 2s 周期发送报文直到恢复正常通讯的实测图:

255b6546-0e4f-11ed-ba43-dac502259ad0.png

CAN_H 与 CAN_L 短接会导致 FlexCAN 进入 Busoff 状态,由于官方库例程中默认设置开启了自动从总线关闭状态中恢复的功能,所以在解除总线短路后的一段时间内,ECU 重新恢复正常通讯,自动恢复时长 = 128 x 11 x 位时间(即检测到 128次11个连续空闲状态位电平则恢复,符合 CAN2.0B 标准)。

1.3 BusOff快恢复/慢恢复策略测试

当 CAN 通信出现故障时,CAN 控制器会让故障节点从主动错误状态进入被动错误状态,甚至进入总线关闭(BusOff)状态,使故障节点脱离总线的通信,使其不影响正常节点的通信,但该控制方案将导致在系统重新上电之前,进入总线关闭状态的节点会持续无法与其他节点做数据的交互,如若节点只是暂时的故障,那让节点实现自恢复的功能,则是更为上乘的控制方法。所以 CAN 总线设计规范对于 CAN 节点的 BusOff 自恢复方式做了严格的规定,充分考虑了偶发故障与持续故障的处理。

为了避免某个设备因为自身原因(例如硬件损坏)导致无法正常收发数据而不断地破坏数据帧,从而影响其他正常节点通讯,CAN-bus规范中规定每个CAN控制器都有一个发送错误计数器和一个接收错误计数器。根据计数值不同CAN节点会处于不同的设备状态。根据计数值的变化进行状态转换,状态转换如下图所示:

256c6dbe-0e4f-11ed-ba43-dac502259ad0.jpg

接收、发送错误计数器对应的变动条件及数值变动情况:

1

接收单元检测出错误时,检测到错误标识符或过载标志的“位错误”除外,此时REC+1、TEC不变;

2

接收单元在发送完错误标志后检测到第一位为显性电平,此时REC+8、TEC不变;

3

发送单元输出错误标志,此时REC不变、TEC+8;

4

发送单元发送主动错误标志或过载标志,检测出位错误,REC不变、TEC+8;

5

接收单元发送主动错误标志或过载标志,检测出位错误,REC+8、TEC不变;

6

各单元从主动错误标志、过载标志的开始检测出连续14个显性位,之后每检测出连续8个显性位,发送时REC+8、接收时TEC+8;

7

检测出被动错误标志后追加连续8个位的显性位,发送时REC+8、接收时TEC+8;

8

发送单元正常接收数据结束时(返回ACK且到帧结束位检测到错误),REC不变、TEC-1;

9

接收单元正常接收数据结束时(到CRC未检测出错误且正常返回ACK),REC《127时,rec-1,rec》127时,REC=127;TEC不变;

10

处于总线关闭的单元,检测到128次连续11个位的隐形位,错误计数器归零,REC、TEC=0;CAN总线错误处理功能属于是链路层功能,此功能由CAN控制器决定。

汽车内部挂有很多的 ECU 节点,当其中一个节点发生故障进入总线关闭状态时,会很大程度上影响整车 CAN 网络的通讯。所以一方面需要迅速找到引发节点总线关闭的物理故障,另一方面需要遵循一定准则合理设计恢复策略,主要为了控制节点从总线关闭状态恢复到错误主动状态的等待时间,太快或者太慢地恢复都将可能影响到网络其它节点的正常通讯,快恢复和慢恢复两种策略一般同时应用。

整车厂对其系统供应商的设备也都提出了相应的 BusOff 后恢复时间的控制策略要求,对总线关闭状态的节点需要实现“快恢复”和“慢恢复”策略。

2587ae1c-0e4f-11ed-ba43-dac502259ad0.jpg

制定策略大致思路是:将默认配置的自动从总线关闭状态中恢复的功能关闭(CAN_CTRL1.BOFFREC = 1),再实时检查 CAN_ESR1.BOFFINT 寄存器的值来判断是否进入 BusOff状态,当检测到总线关闭后,开启快恢复计时,时间到达后进行一次 CAN 控制器的时钟、驱动及相关寄存器进行初始化操作,初始化完成后如果物理条件恢复正常那么即可完成快恢复,反之循环 10 次前面操作,如果仍旧无法消除 d BusOff 状态,那进入慢恢复策略,同样在开启慢恢复计时并且到达后进行复位 FlexCAN操作, 此时 CAN 总线关闭故障如果解除了,为了避免该节点在 CAN 网络中频繁发生总线关闭问题,此时不立即对外发送 CAN 报文。

大致流程图如下:

259d80b6-0e4f-11ed-ba43-dac502259ad0.jpg

至于自定义的 BusOff后的恢复时间策略,可以根据 CAN_CTRL1.BOFFREC 的寄存器描述来控制关闭自动恢复机制,然后根据自己需要的时间间隔完成后开启自动恢复,官方例程默认为开启了BusOff 自动恢复功能,自动恢复时长 = 128 x 11 x 位时间(即检测到 128次11个连续空闲状态位电平则恢复,符合 CAN2.0B 标准)。

25a78020-0e4f-11ed-ba43-dac502259ad0.png

在BusOff 恢复策略制定时,是需要通过软件流程去实施实现控制时长,IP 层面不能设置恢复的时长。至于如何判断是主动错误还是被动错误,可以根据 CAN_ESR1.FLTCONF 寄存器以及结合CAN_ECR 寄存器来分析。

我们通过CANScope总线综合分析仪对上述的测试项一一进行测试,MM32F0140的FlexCAN 能够满足相关的测试标准,能够满足汽车领域对通信总线的要求,保障整车CAN总线安全稳定。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5020

    浏览量

    117619
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2456

    浏览量

    459025
  • 网络管理
    +关注

    关注

    0

    文章

    107

    浏览量

    27493

原文标题:灵动微课堂 (第224讲) | MM32F0140 FlexCAN一致性测试 (2)

文章出处:【微信号:MindMotion-MMCU,微信公众号:灵动MM32MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    串行ATA一致性测试速查资料

    串行ATA一致性测试速查资料串行ATA 一致性测试解决方案一致性测试速查资料SATA Gen1
    发表于 11-26 09:52

    一致性测试

    谁有聚星公司射频一致性测试的程序啊,求个做参考,!
    发表于 07-14 18:11

    CAN一致性测试—容错测试

    的CANDT一致性测试系统,该设备可自动化完成CAN节点物理、链路层及应用层一致性
    发表于 11-22 16:36

    LTE基站一致性测试的类别

    就LTE基站而言,RF测试方法与一致性要求至为关键,然而,调变格式、带宽、资源分配与移动导致选项复杂度增加,因此优化的一致性测试配置参数组
    发表于 06-06 06:41

    高速串行总线的物理一致性测试是什么?由来呢?

    物理一致性测试作为近 10 多年来示波器最主要的用途之直是产业界最常提到的名词之。本
    发表于 08-12 07:17

    USB2.0一致性测试面临什么挑战?

    为了满足USB2.0一致性应用的需求,所有的USB2.0设计都必须满足USB IF发布的USB2.0物理一致性测试要求。相对于比较成熟的PC平台USB2.0 主机
    发表于 08-26 08:13

    USB2.0一致性测试方案

    USB2.0一致性测试测试项目: USB2.0信号质量测试 信号质量测试包括:>眼图测试>信
    发表于 09-26 10:25

    MIPI一致性测试

    MIPI一致性测试测试项目:> TX测试;> RX测试;> S参数和阻抗测试;> DigRF,U
    发表于 09-26 13:31

    Infiniium一致性测试软件

    Infiniium 一致性测试软件
    发表于 10-28 17:28

    TekExpress一致性自动测试平台的功能有哪些?

    TekExpress一致性自动测试平台的功能有哪些?TekExpress一致性自动测试平台的组成部分有哪些?
    发表于 04-09 06:05

    为什么需要进行WiMAX协议一致性测试

    为什么需要进行WiMAX协议一致性测试看完你就知道
    发表于 04-15 06:16

    如何确保蓝牙设计通过EMI一致性测试

    选择蓝牙模块时需要考虑哪些因素?如何确保蓝牙设计通过EMI一致性测试
    发表于 05-07 06:25

    USB3.0物理一致性测试挑战是什么?

    USB3.0物理一致性测试挑战是什么?如何进行通道去嵌?
    发表于 05-08 07:27

    USB3.0物理测试中的一致性模式和环回模式介绍

    本文关于USB3.0物理测试中的一致性模式和环回模式的介绍。
    发表于 05-12 06:12

    顺序一致性和TSO一致性分别是什么?SC和TSO到底哪个好?

    内存一致性之顺序一致性(sequential consistency)可以说,最直观的内存一致性模型是sequentially consistent(SC):内存访问执行的顺序与程序指定的顺序相同
    发表于 07-19 14:54