码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【MCAL_CANDriver】-1.5-图解CANFD如何兼容经典Classical CAN 2.0及其解决方案


    点击返回「《Autosar_MCAL高阶配置》总目录」

    目录

    1 图解CANFD网络兼容Classical CAN

    1.1 Classical CAN节点接收CANFD帧检出错误原因

    1.2 CAN FD升级解决方案选择

    2 CANFD对硬件设计要求

    END


    1 图解CANFD网络兼容Classical CAN

    关于CANFD帧和Classical CAN帧结构差异,详见博文《【图解CAN总线】-1-CANFD和经典CAN2.0帧结构对比https://blog.csdn.net/qfmzhu/article/details/122802584》和《【图解CAN总线】-4-详述CANFD和Classic CAN的Frame帧结构差异https://blog.csdn.net/qfmzhu/article/details/122806246》。

    下面我们以图1-1为例,来看CANFD和Classical CAN的兼容问题:Node A/B/D为CANFD节点;Node C为Classical CAN节点。

     图1-1

    发送节点

    发送帧类型

    接收节点情况

    CANFD节点

    Tx Classical CAN Standard/Extended Frame

    Classical CAN节点

    正常接收

    CANFD节点

    正常接收

    Tx CANFD Standard/Extended Frame

    Classical CAN节点

    检出错误

    CANFD节点

    正常接收

    Classical CAN节点

    Tx Classical CAN Standard/Extended Frame

    Classical CAN节点

    正常接收

    CANFD节点

    正常接收

    从这个表格中,您可以清楚的看出:在CANFD网络中,只有在所有CANFD节点发送“Classical CAN Standard/Extended Frame”的情况下,才能兼容Classical CAN节点。

    1.1 Classical CAN节点接收CANFD帧检出错误原因

    下面以Classical CAN节点接收CANFD Standard Frame为例。

    在Classical CAN Standard Frame和CANFD Standard Frame的IDE位前(前14Bit)都是相同的,IDE位后,开始存在差异,详见图2-1。

    • Classical CAN Standard Frame中,R0位显性;
    • CANFD Standard Frame中,FDF位(原R0位)隐性;Res位显性;BRS位隐性,开始切换Bit Rate(显性不切换Bit Rate);ESI位显性。
    • ......

    Classical CAN节点在接收到CANFD Standard Frame时,会接收到异常的DLC,但此时不会报错,接着由于CANFD Standard Frame的数据段Bit Rate变化,让Classical CAN节点在CAN Frame数据段(19 Bit之后)检出“Bit Stuffing位填充”错误,见图2-3。

    如果CANFD Standard Frame选择“不加速(数据段和仲裁段使用相同Nominal bit time)”,此时Classical CAN节点在接收该帧时,会检出CRC错误。

    图2-1

    一个CANFD的CANoe脚本工程,接收到CANFD帧,见图2-2。

     图2-2

    一个Classical CAN的CANoe脚本工程,接收同一帧CANFD帧的效果,见图2-3。

    图2-3

    1.2 CAN FD升级解决方案选择

    如果CAN网络当中传输CANFD帧,则所有CAN节点都需要升级至CANFD节点。

    如果CAN网络当中不传输CANFD帧,则原先的部分Classical CAN节点可以继续使用,但其它升级至CANFD的节点只能发送Classical CAN帧。

    2 CANFD对硬件设计要求

    CANFD的使用意味着:一个Bit time需要比以往使用更多,更小的Tq(详见博文“【MCAL_CANDriver】-1.4-Tq与Bit Rate,Sync_Seg,Prop_Seg,Phase_Seg1, Phase_Seg2之间的关系https://blog.csdn.net/qfmzhu/article/details/126892968”的第3章),这对crystal oscillator晶体振荡器的Oscillator Clock的大小提出了更高要求(选型时,可能要使用20Mhz,40Mhz…的晶振)。

    END

    获取更多“汽车电子资讯”和“工具链使用”,

    请关注“汽车电子助手”,做您的好助手。

  • 相关阅读:
    KWin全解析 —— overview.md(1)
    【Pytorch】2022 Pytorch基础入门教程(完整详细版)
    Linux学习命令之export
    二、Prometheus常用exporter安装详解
    【多线程的线程安全问题(常见的四种线程安全问题)】【两种解决:synchronized、volatile】
    cmake 选择 vs编译器
    【Python零基础入门篇 · 2】:掌握各种运算符和变量、input()输入输出、映射函数map()结合input()和split()函数实现多值输入
    整理笔记——二极管
    Python 遍历字典的若干方法
    MATLAB算法实战应用案例精讲-【大模型】LLM算法(最终篇)
  • 原文地址:https://blog.csdn.net/qfmzhu/article/details/126904151
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号