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

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

3天内不再提示

Full CAN与Basic CAN配置错误导致信号跳变问题剖析

CHANBAEK 来源:开心果 Need Car 作者:开心果 Need Car 2023-10-01 10:16 次阅读

工程项目中,大家可能会注意到:不管哪家主机厂的网络拓扑,CAN总线是不可或缺的一种总线。所以,了解CAN总线似乎是一名汽车工程师的基础课,很多时候,我们可能觉得自己很懂,而实际呢?个人观点,最好的方式就是让工程问题去衡量你对CAN总线或者某个知识体系的理解深度。本文,就大家耳熟能详的CAN总线进行一个工程问题剖析:Full CAN与Basic CAN配置错误,导致信号跳变。

提示 :本工程问题对应英飞凌TC3xx芯片,EB配置MCAL

1、问题背景

标定测试中发现,一些信号变化异常,这些异常信号的值在某些时刻跳变成该信号的极限值,如下所示:

图片

显然,如上信号的跳变会给整车带来安全隐患,因此,测试也会将问题严重度设置较高等级,eg:S级或者A级。

2、根因分析

在进行根因分析之前,先补充一些MCAN基础信息

(一)Message RAM

在英飞凌的芯片中,MCAN模块有一块Message RAM,这块空间主要用来划分过滤空间、接收数据空间以及发送数据空间,至于如何切分Message RAM,由用户或者工具设置。虽然Message RAM区可以按需切割,但是,切割的顺序需要按照手册要求实现,Message RAM如下所示:

图片

解读:

  • Message RAM的总大小为4480 words;
  • 在切割Message RAM时,需要按照上图顺序排布,即:SIDFC.FLSSA->XIDFC.FLESA->RXF0C.F0SA->RXF1C.F0SA->RXBC.RBSA->TXEFC.EFSA->TXBC.TBSA->TMC.TMSA。当然,如果实际没有用到某些区域,则不用切割Message RAM,eg:可以不用Rx FIFO 1。

Message RAM在EB中的配置某个Can Controller示例如下所示:

图片

(二)Standard Message ID Filter Element解读

Message RAM开始区域就是设置ID过滤,具体会对应到StdMsgk_S0 (k=0-127)寄存器。StdMsgk_S0各位域如下所示:

图片

部分内容解释:

  • SFT (Standard Filter Type):00B Range filter from SF1ID to SF2ID (SF2ID≥SF1ID),可以过滤一段ID;01B Dual ID filter for SF1ID or SF2ID,过滤SF1ID或者SF2ID;10B Classic filter: SF1ID = filter, SF2ID = mask;11B Filter element disabled.
  • SFEC (Standard Filter Element Configuration):过滤后的处理方式,111B Store into Rx Buffer or as debug message, configuration of SFT[1:0] ignored,过滤匹配放到Rx Buffer缓存区。
  • SFID2 (Standard Filter ID 2):SFID2[5:0] defines the offset to the Rx Buffer Start Address RXBC.RBSA for storage of a matching message.如果SFT配置成10模式,则SFID2[5:0]表示此报文在Rx Buffer的偏移(offset)。

(三)EB中的MCAL配置错误

检查MCAL配置发现,某个FULL类型的CanHandleType位置放到了BASIC类型后面,如下所示:

图片

经过如上的MCAL配置调整以后,CanHardwareObject33的CanObjectId由原来的26变成了28。如此,会导致什么问题呢?对比生成的配置代码(本文Can_17_McmCan_kSIDFilterConfigCore0,配置文件Can_17_McmCan_PBcfg.c)如下所示(右侧是错误配置):

图片

就是因为如上的配置,导致本应放入Rx dedicated buffer区间的数据错误的放到了Tx Event区间。如何理解呢?分析如上变动,具体解释如下:

1、正确配置分析

0xba00001a进行二进制展开:1011 1010 0000 0000 0000 0000 0001 1010B。对照StdMsgk_S0寄存器各位域解释如下:

图片

如此配置,意味着0x200(CanHardwareObject33)接收的数据会放置到地址:0xF0200294+26*16 = 0xF0200434,此时,不会与Tx Event的起始地址0xF0200444位置重叠,数据可以正确处理。

2、错误配置分析

0xba00001c进行二进制展开:1011 1010 0000 0000 0000 0000 0001 1100B。对照StdMsgk_S0寄存器各位域解释如下:

图片

如此配置,意味着0x200(CanHardwareObject33)接收的数据会放置到地址:0xF0200294+28*16 = 0xF0200454,此时,会与Tx Event的起始地址0xF0200444重叠,进而造成接收数据被发送数据覆盖,这就是信号跳变的原因。

将如上的分析简化示意如下所示:

图片

3、解决措施

既然是MCAL配置异常导致的问题,问题的修复也就明了,修改EB中的MCAL配置,将同一个Controller的Full CAN移动到Basic CAN之前,严格按照EB手册约束配置。关于CanObject配置注意事项,可以参考前文《MCMCAN:CAN hardware object配置规则》。

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

    关注

    66

    文章

    2144

    浏览量

    138337
  • CAN总线
    +关注

    关注

    145

    文章

    1927

    浏览量

    130605
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2709

    浏览量

    463252
  • 信号
    +关注

    关注

    11

    文章

    2774

    浏览量

    76574
收藏 人收藏

    评论

    相关推荐

    介绍C167CR的CAN中断结构功能和标准CAN中断结构的应

    microcontrollers allows communication between several stations (CAN nodes) in BASIC-CAN functionality and in FULL-CAN
    发表于 07-01 11:47 17次下载

    浅析CAN总线错误分析与解决

    CAN总线上有干扰,导致CAN控制器发生接收错误CAN总线上的信号经过收发器转化为差分电平
    发表于 10-08 14:31 5154次阅读
    浅析<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>分析与解决

    关于CAN总线错误的相关知识

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误
    的头像 发表于 05-27 17:56 3051次阅读

    CAN总线错误的类型介绍

    在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误的基础概念、CAN总线错误
    的头像 发表于 06-13 16:08 8126次阅读

    剖析IVI PLC的CAN及IOT功能

    通过对IVI PLC的IOT及CAN剖析,从而加深对于CAN及IOT技术的理解。
    的头像 发表于 01-05 09:19 882次阅读
    <b class='flag-5'>剖析</b>IVI PLC的<b class='flag-5'>CAN</b>及IOT功能

    DBC文件格式错误导致Davinci Configurator报错问题总结

    存在各种问题,导致Davinci工具也报各种错误,由于以前没有Davinci的使用经验,解决问题的过程也比较痛苦,这里把遇到的DBC文件格式错误导致Davinci报错问题记录一下。
    的头像 发表于 03-08 13:34 8765次阅读

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-09 09:46 2098次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>错误</b>类型

    虹科干货 | 带你全面了解“CAN总线错误”(三)——CAN节点状态与错误计数器

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-09 09:46 2304次阅读
    虹科干货 | 带你全面了解“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(三)——<b class='flag-5'>CAN</b>节点状态与<b class='flag-5'>错误</b>计数器

    虹科干货 | 带你全面认识“CAN总线错误”(一)——CAN总线错误错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 05-27 10:39 4522次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(一)——<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>与<b class='flag-5'>错误</b>帧

    虹科干货 | 带你全面认识“CAN总线错误”(二)——CAN错误类型

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-02 09:41 1376次阅读
    虹科干货 | 带你全面认识“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(二)——<b class='flag-5'>CAN</b><b class='flag-5'>错误</b>类型

    虹科干货 | 带你全面了解“CAN总线错误”(四)——在实践中生成和记录CAN错误

    AsimpleintrotoCANerrorsCAN总线错误介绍在本系列文章中,我们将为您详细介绍CAN总线错误的相关知识,包括CAN总线错误
    的头像 发表于 06-09 10:21 1620次阅读
    虹科干货 | 带你全面了解“<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>”(四)——在实践中生成和记录<b class='flag-5'>CAN</b><b class='flag-5'>错误</b>

    认识CAN总线错误 CAN总线错误分析与解决

    认识CAN 总线错误的第一步就是了解认识CAN 总线协议和它的具体功能,这样才能更容易地理解CAN 总线是如何去发现并解决错误的。
    发表于 08-14 15:18 5825次阅读
    认识<b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b> <b class='flag-5'>CAN</b>总线<b class='flag-5'>错误</b>分析与解决

    如何用示波器排查CAN的各种错误帧呢?

    ,在CAN通信中,错误帧可能会导致设备故障和通信中断,因此排查CAN错误帧非常重要。本文将详细介绍如何使用示波器排查
    的头像 发表于 12-07 11:09 1094次阅读

    CAN数据传输错误的常见原因有哪些?

    电源波动或其他电气问题可能会影响CAN信号的质量并导致“帧错误”。例如,波特率不匹配或者节点没有初始化,也可能导致没有ACK(应答)
    发表于 04-02 09:30 987次阅读

    CAN总线错误状态的种类

    CAN总线错误状态的种类主要包括以下几种,每种状态都反映了CAN总线网络中节点或总线的不同错误情况,以及相应的通信能力和限制。
    的头像 发表于 09-03 14:17 812次阅读