S32K324 CANFD报文接收超限分析

news2024/11/24 2:38:10

文章目录

    • 前言
    • 问题描述
    • 原因分析
    • 问题处理
    • 总结

前言

随着汽车软件复杂度越来越高,传输的数据越来越多,CAN总线到CANFD总线已经是发展的必然了。CANFD总线中单个报文ID可以传递至多64byte数据,对CAN Driver来说,所需的MCU资源也将变多,对于NXP S32K3的CAN模块,如果是CANFD报文,能够接收的ID数量将大大减少。本文就基于开发中遇到的问题,来进行分析,并给出一个可行的解决方案。

问题描述

将MCAL中的CAN升级为CANFD后,Control需要配置CanRamBlock,将RamBlock全配置为64byte之后,再配置mailbox时,会报RamBlock溢出

报错示例如下:
image
报错之后无法生成代码,报错意思是RAM_BLOCK_1超了

原因分析

要弄清原因,需要搞清楚S32K324的FLEXCAN Canfd的关系。

如下图所示:

image
每个FlexCAN支持的buffer不一样,只有CAN0支持的最大,在CANFD的模式下,可以到21个mailbox

然后看下Ram block的定义

简单解释下:对于S32K324,有三个Ramblock,每个ramblock可以配置payload,不同的payload即表示能支持的最大mailbox,同时,payload越大,canfd支持传输的数据越多
image
通过FDCTRL为每个Block分配payload

image
payload只支持4种配置,8,16,32,64
image
•选择8字节payload时:
−Block R0: 0x0080~0x027F, 512bytes,分配给MB0 ~ MB31。

−Block R1: 0x0280~0x047F, 512bytes,分配给MB32 ~ MB63。

−Block R2: 0x0480~0x067F, 512bytes,分配给MB64 ~ MB95。

•当选择64字节的payload时:

−Block R0: 0x0080~0x0277, 504bytes,分配给MB0 ~ MB6。

−Block R1: 0x0280~0x0477, 504bytes,分配给MB7 ~ MB13。

−Block R2: 0x0480~0x0677, 504bytes,分配给MB14 ~ MB20。

由上面的定义,可以知道之前报错的具体原因:

Ramblock1配置了payload为64,导致mailbox最大只有7个,而我们配置了8个,所以超了。

问题处理

知道了Ramblock的原理,如果全部配置为64byte,则最多只能配置21个mailbox(包括Tx和Rx),但OEM给的通信矩阵中超过了这个数量。如何解决这个问题呢?
换芯片估计很难了。

我的思路是从需求出发,将通信矩阵中的每个报文的DLC统计(实际除了Nm报文,Xcp报文,其他应用报文和诊断报文,都是64byte),同时将实际使用的信号所在的位置记录,统计所需的最大报文长度

统计完后,就可以分配Block了,示例:

分配2个64byte的Ramblock,1ge 16byte的Ramblock,可以装载14个64byte的报文,21个16byte的报文。
这样,我们最大可以处理35个Canfd报文。
image
然后按照统计好的数据,给对应的Mailbox分配Ramblock即可,此处示例分配给RAM_BLOCK_1
image

总结

这种方案不是完全解决的方案,如果需求的CAN报文数量更多的话,可能也无法满足。所以在最开始MCU选型的时候,最好将CAN的报文容量也考虑进去,而不是简单的只看CAN通道和是否支持CANFD,包括各路CAN的容量是不是一致的。(S32K3就只有CAN0能支持payload64到21byte).如果在原理图设计阶段,没有选择CAN0,也是可能导致问题的原因。

参考:

17_S32K3xx_Communication_Modules_FlexCAN_Training.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1591839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据集学习

1,CIFAR-10数据集 CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。 数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机…

Ubuntu桌面系统安装成功后的简单配置

目录 更换软件源设置系统时间同步 更换软件源 本文使用的换源方法仅限于桌面版 前提有网络连接,能够访问互联网 在Ubuntu18.04桌面版中,点击左下角“显示应用程序”,搜索“软件更新器”,点击进入。 暂时不要点击立即安装&#xff…

ES6: promise对象与回调地狱

ES6: promise对象与回调地狱 一、回调地狱二、Promise概述三、Promise的组成四、用函数封装Promise读取文件操作 一、回调地狱 在js中大量使用回调函数进行异步操作,而异步操作什么时候返回结果是不可控的,所以希望一段程序按我们制定的顺序执…

免费ssl证书能一直续签吗?如何获取SSL免费证书?

免费SSL证书是否可以一直续签。我们需要了解SSL证书的基本工作原理。当你访问一个使用HTTPS协议的网站时,该网站实际上在使用一个SSL证书。这个证书相当于一个数字身份证明,它验证了网站的真实性和安全性。而这个证明是由受信任的第三方机构——通常是证…

Unity之C#面试题(二)

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之C#面试题(二) TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&a…

配置交换机SSH管理和端口安全——实验2:配置交换机端口安全

实验目的 通过本实验可以掌握: 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法 实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 实验步骤 (1&#x…

EasyPoi表格导入添加校验

EasyPoi表格导入添加校验 项目添加maven依赖实体类自定义校验controller测试结果 项目添加maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2…

【目标检测数据集】VOC2007 数据集介绍

一、介绍 VOC 数据是 PASCAL VOC Challenge 用到的数据集&#xff0c;官网&#xff1a;http://host.robots.ox.ac.uk/pascal/VOC/ 备注&#xff1a;VOC数据集常用的均值为&#xff1a;mean_RGB(122.67891434, 116.66876762, 104.00698793) Pytorch 上通用的数据集的归一化指…

(三)ffmpeg 解码流程以及函数介绍

一、视频解码流程 二、函数介绍 1.avformat_network_init 函数作用&#xff1a; 执行网络库的全局初始化。这是可选的&#xff0c;不再推荐。 此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本&#xff0c;或者不使用它们&#…

AI大模型探索之路-应用篇1:Langchain框架概述—快速构建大模型应用

目录 一、什么是LangChain&#xff1f; 二、LangChain解决了哪些问题&#xff1f; 三、LangChain总体架构 四、代码实践样例 总结 一、什么是LangChain&#xff1f; 为大模型应用提供简便之道。 LangChain&#xff0c;专为构建庞大的语言模型应用程序设计的框架&#xff0…

神级浏览器,大小不到2MB

今天分享2个神级浏览器&#xff0c;大小不到2MB&#xff0c;第一个是崇尚速度与简约的手机浏览器&#xff0c;支持广告拦截、插件定制、主题自定义等功能 https://github.com/tuyafeng/Via &#xff0c;安装包大小不过2MB。 资源嗅探可以很方便的下载网页视频&#xff1a; 第2个…

Ubuntu 22.04 安装 zabbix

Ubuntu 22.04 安装 zabbix 1&#xff0c;Install Zabbix repository2&#xff0c;安装Zabbix server&#xff0c;Web前端&#xff0c;agent3&#xff0c;安装mysql数据库3.1 创建初始数据库3.2 导入初始架构和数据&#xff0c;系统将提示您输入新创建的密码。3.3 在导入数据库架…

尚硅谷html5+css3(3)布局

1.文档流normal flow -网页是一个多层结构 -通过CSS可以分别为每一层设置样式 -用户只能看到最顶层 -最底层&#xff1a;文档流&#xff08;我们所创建的元素默认都是从文档流中进行排列&#xff09; <head><style>.box1 {background-color: blue;}/*它的父元…

今日arXiv最热大模型论文:清华大学发布,ChatGML又添新功能,集成“自我批评”,提升数学能力

引言&#xff1a;数学问题解决在大语言模型中的挑战 在当今的人工智能领域&#xff0c;大语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;已经在理解和生成人类语言方面取得了显著的进展。这些模型在文本摘要、问答、角色扮演对话等多种语言任务上展现…

JVM性能调优——OOM分类及解决方案

文章目录 1、概述2、OOM案例1&#xff1a;堆内存溢出3、OOM案例2&#xff1a;元空间溢出4、OOM案例3:GC overhead limit exceeded5、OOM案例4&#xff1a;线程溢出6、小结 在工作中会经常遇到内存溢出(Out Of Memory,OOM)异常的情况&#xff0c;每当遇到OOM&#xff0c;总是让人…

今天我们来聊一聊Java中的Semaphore

写在开头 在上几天写《基于AQS手写一个同步器》时&#xff0c;很多同学留言说里面提到的Semaphore&#xff0c;讲得太笼统了&#xff0c;今天趁着周末有空&#xff0c;咱们就一起详细的学习和梳理一把 Semaphore。 什么是Semaphore&#xff1f; 在前面我们讲过的synchronize…

【计算机毕业设计】人事管理系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

【刷题】代码随想录算法训练营第十一天|20、有效的括号,1047、删除字符中的所有相邻重复项,150、逆波兰表达式求值

目录 20、有效的括号1047、删除字符中的所有相邻重复项150、逆波兰表达式求值 20、有效的括号 讲解&#xff1a;https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html 括号匹配是使用栈解决的经典问题。 三种不匹配&#xff1a;第一种是缺少匹…

Axure RP中的相关概念及高保真原型构建方法

1 Axure RP中概念介绍 对于构建高保真原型来说&#xff0c;需要知道事件&#xff08;Event&#xff09;、Case、Action等概念。Axure RP中给出这些概念&#xff0c;是为了方便原型的构建&#xff0c;尤其是高保真原型的构建。 事件&#xff08;Event&#xff09;是附着于控件…

.vue文件引入路径正确,但报错

问题描述 使用Vue挂载组件时&#xff0c;导入路径正确&#xff0c;但是一直提示 Already included file name ‘绝对路径/index.vue’ differs from file name ‘绝对路径/Index. vue’ only in casing. The file is in the program because: Imported via ‘./components/ind…