全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 汽车电子 >

ECU系统休眠后通过诊断报文唤醒ECU且唤醒网络

时间:2023-04-04 09:40

人气:

作者:admin

标签: AUTOSAR  ecu  收发器 

导读:ECU系统休眠后TJA1043的INH脚处于floating高阻态,系统休眠后通过硬件外部电路下拉到低电平状态/Low-level,ECU系统休眠前把TJA1043的INH脚配置为唤醒脚,系统休眠后如果收到任意的CAN报文,...

前言

最近遇到一个特殊需求:在ECU系统休眠后需要通过网络管理报文和诊断报文唤醒网络,但是应用报文不能唤醒网络。通常情况下,在ECU系统休眠后,AUTOSAR架构中只能配置通过网络管理报文唤醒网络或者所有报文都能唤醒网络,没有单独的诊断报文唤醒网络的配置。那在AUTOSAR架构下如何来实现这个功能了?

本文先详细介绍这个需求在AUTOSAR架构下遇到的问题,然后再给出一个具体的解决办法。

Note: 使用Vector的工具,以及TJA1043的CAN收发器

正文

1.面临的问题

1.1 TJA1043的INH脚唤醒事件

ECU系统休眠后TJA1043的INH脚处于floating高阻态,系统休眠后通过硬件外部电路下拉到低电平状态/Low-level,ECU系统休眠前把TJA1043的INH脚配置为唤醒脚,系统休眠后如果收到任意的CAN报文,TJA1043的INH脚会被拉高,产生CAN收发器的硬件唤醒事件(Low-Level to High-Level)。如果ECU系统是断电系统,那么INH脚应该接在SBC上,因为SBC是常电状态,检测到INH的唤醒事件后就会给ECU-MCU供电,MCU冷启动。如果是ECU系统是常电系统,INH脚应该接到MCU的一个中断唤醒脚上,检测到INH的唤醒事件后,中断唤醒MCU,MCU中的软件可以选择继续跑,也可以通过软件Reset后重新热启动。

参考文章:关于CanTrcv模块的几点思考

总之,无论是断电系统还是常电系统,在ECU系统休眠后,任意的CAN报文都能唤醒ECU。

1.2 EcuM配置网络唤醒

实现网络唤醒,需要在EcuM模块中配置唤醒源,同时配置唤醒源检测。

f562821e-d27c-11ed-bfe3-dac502259ad0.png

开启EcuM的网络唤醒源校验Validation后需要User实现三个Callout函数函数:

1) EcuM_StartWakeupSources(EcuM_WakeupSourceType);

2) EcuM_StopWakeupSources(EcuM_WakeupSourceType);

3) EcuM_CheckValidation(EcuM_WakeupSourceType);

f5805816-d27c-11ed-bfe3-dac502259ad0.png

f5af4da6-d27c-11ed-bfe3-dac502259ad0.png

参考文章:AUTOSAR架构下关于CanNm的几点思考

1.3 CanIf配置唤醒报文过滤

CanIf中可以配置Wakeup Check Valition,有两种配置可选:

1)所有报文可以通过校验

2)只有NM报文可以通过校验

f5d2d4c4-d27c-11ed-bfe3-dac502259ad0.png

1.4ComM网络唤醒

EcuM调用CanIf接口校验网络唤醒源成功后,EcuM就会调用ComM_EcuM_WakeUpIndication请求通信,ComM在CommunicationAlllowed后就会调转到Full Com状态开启网络。

f5ed4aac-d27c-11ed-bfe3-dac502259ad0.png

参考文章:AUTOSAR网络通信问题分析

1.5诊断报文唤醒面临的问题

我们的需求是:在ECU系统休眠后需要通过网络管理报文和诊断报文唤醒网络,但是应用报文不能唤醒网络。

但是从上文中我们可以得知:

1)如果CanIf配置为所有报文可以校验通过,那么应用报文也会通过校验,从而唤醒网络。

2)如果CanIf配置为只有NM报文可以通过校验,那么诊断报文也就不能通过校验, 从而诊断报文不能唤醒网络。

3)只要ECU被唤醒后,因为程序已经跑起来了,理论上肯定可以让诊断报文来唤醒网络的,但是在AUTOSAR架构下没有提供这个配置,代码框架已经被限制,要实现这个功能就不知道在哪里实现。

也就是说,在AUTOSAR架构下按通常配置是无法实现ECU系统休眠后需要通过网络管理报文和诊断报文唤醒网络,但是应用报文不能唤醒网络的。

2.解决的办法

如果能想办法在EcuM调用CanIf_CheckValication的时候能让诊断报文通过校验(NM报文也通过校验,应用报文不能通过校验)就能解决这个问题。

审核编辑 :李倩

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信