TLE9471 CANFD报文异常唤醒ECU问题

前言

之前做的项目是基于CAN通讯的,在切换到CANFD后,网络管理报文还是通过CAN报文发送。本文分析处理项目中出现异常唤醒ECU的问题。

问题描述

程序配置了CAN选择性唤醒,且配置了指定的报文区间,及DATA数据,正常情况下,只有指定的报文区间的CAN报文可以唤醒ECU,但实际测试表现,任意CAN FD报文都可以唤醒ECU

原因分析

需要查看Datasheet。

唤醒帧Wake-up Frame (WUF)的定义

唤醒帧在ISO 11898-2:2016中定义。

只有符合ISO11989-1的CAN帧被认为是可能的唤醒帧。

如果启用了选择性唤醒功能并且收到了“有效WUF”,则应执行总线唤醒。收发器可以忽略多达四个连续的CAN数据帧,这些数据帧在开启偏置后开始。

如果满足以下所有条件,则接收帧为“有效WUF”:

•接收到的帧ID与相关位上的配置ID完全匹配。相关的位位置由一个ID掩码给出。ID和ID掩码可以是11位或29位。

•接收帧的DLC与配置的DLC完全匹配。

•当DLC大于0时,接收帧的data字段至少有一个bit设置在bit位置上,其中也在配置的数据掩码中相应bit位置上设置了该位。

•根据ISO 11898-1,除了ACK字段和EOF字段中的信号错误外,不存在任何错误。

也就是说,只有CAN帧可以作为有效的唤醒帧。CAN FD帧应该是触发了错误,导致异常唤醒

正常休眠唤醒流程如下:
image

CAN Protocol Error Counter

当检测到符合ISO11898-1的位填充、CRC或格式错误时,计数器递增。如果接收到的帧在CRC字段结束前是有效的,并且计数器不为零,则计数器递减。

如果计数器的值达到31,则对该计数器的下一个增量执行以下操作:

选择性唤醒功能被禁用

•CAN收发器被唤醒

•设置SYSERR,可以读取错误计数器值= 32。

启用错误计数器:

•当CAN处于正常模式、仅接收模式或WUF检测状态时

在以下情况下,清除错误计数器:

•在从WUF检测过渡到WUP检测1时(在tSILENCE过期后,而SWK正确启用)

•当进入WUF检测状态时(在启用SWK时,计数从0开始)

•在CAN重新进入工作状态(当退出唤醒状态)

•当CAN模式位选择’ 000 ‘,’ 100 ’ (CAN关闭)或’ 001 '(唤醒能力,没有SWK功能启用)

CAN_FD_EN = ’ 1 '和DIS_ERR_CNT = ’ 1 '时(当这两个位在SPI寄存器中设置时,计数器被清除并保持清除)

错误计数器被冻结:

•醒来后处于唤醒状态

计数器值可以从位ECNT中读出。

很明显,异常唤醒应该就是这个Counter计数值到达31了,CANFD报文应该是触发了格式错误
此处也已经给出了解决方案,就是配置CAN_FD_EN = ’ 1 '和DIS_ERR_CNT = ’ 1 ’

CAN Flexible Data Rate (CAN FD) Tolerant Mode

可以通过在寄存器SWK_CAN_FD_CTRL中设置位CAN_FD_ EN = ’ 1 '来激活CAN FD容忍模式。

在这种模式下,内部CAN帧解码停止为CAN FD帧格式:

•忽略CAN FD帧的高波特率部分,

•没有错误处理(位填充,CRC检查,表单错误)是适用于剩余的CAN帧字段(数字段,CRC字段,…),

•在CAN FD帧上不做唤醒。

当检测到CAN FD帧的帧结束(EOF)时,内部CAN帧解码器准备好接收新的CAN帧。CAN FD帧的识别基于EDL位,EDL位在CAN FD帧的Control Field中发送:

•EDL Bit = 1将当前帧标识为CAN FD帧并停止进一步解码。

•EDL Bit = 0标识当前帧为CAN 2.0帧,并继续处理该帧

image
EDL和FDF是同一位

通过这种方式,可以发送混合CAN帧格式,而不会通过错误计数器递增和随后的误导性唤醒影响选择性唤醒功能。除了CAN_FD_ EN位之外,还必须为CAN FD容忍模式提供一个滤波器设置。该滤波器设置定义了CAN FD主导位的最小主导时间,该主导位被认为是来自CAN FD帧解码器的主导位。该值必须与CAN网络中数据字段所选择的高波特率保持一致

也就是说还要配置滤波器设置

为了支持在CAN FD模式下通过CAN编程,可以使用专用SPI位DIS_ERR_ CNT来避免实现的错误计数器溢出(参见第5.6.2.4章)。

错误计数器的行为取决于位DIS_ERR_ CNT和CAN_FD_ EN的设置,如下表所示:

image

解决方式

需要配置DIS_ERR_ CNT和CAN_FD_ EN都为1

总结

修改之后,测试CANFD报文不会唤醒ECU。

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值