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

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

3天内不再提示

FullCAN和BasicCAN是什么?有何区别

冬至配饺子 来源:开心果 Need Car 作者:开心果 Need Car 2022-08-29 17:21 次阅读

在搞清楚FullCAN和BasicCAN是什么之前,我们先搞清楚一些基础的东西。

1基础概念

提示:

英飞凌tc397为例。

1、CAN Module与CAN Node、Controller关系

平时开发中,我们说“ECU有3路CAN”,所说的“3路CAN”和3个Node是一个概念吗?不是。

我们平时所讨论的“3路CAN”是指3个网络,也就是我们口语中的“节点”。而芯片手册中(Data Sheet),一个CAN Module会包含多个Node(即,Controller),比如:tc397芯片手册中,MCMCAN Module包含3个CAN Module,每个Module包含4个Controller,如下所示:

pYYBAGMMg-OAYC3EAACJ9INnbJ4061.png

2、Controller与Transceiver关系

在实际的使用中,一个Controller必须配一个Transceiver,Controller+Transceiver = Network,如下所示:

pYYBAGMMg_qAOwu0AAByyEGH10M579.png

所以,平时我们口语话的“3路CAN”是指3个Controller+Transceiver组合,即:3个Network,我们也常称“3个节点”。

3、Controller与RAM资源关系

刚提到,tc397中,一个CAN Module包含4个Controller,那每个Controller可以发送多少个CAN报文,接收多少个CAN 报文呢?这里我们要区分硬件缓存CAN报文的数量和项目中要求发送/接收报文的数量。

硬件缓存CAN报文数量:是指上层请求发送报文或者接收报文时,CAN驱动最多能缓存的数量;

项目中要求发送/接收报文的数量:是指当前节点要外发或者接收的报文数量。

以发送CAN报文数量为例:需求要求当前网络节点发送100帧CanID不同的CAN报文,实际该节点CAN Controller可用的硬件发送缓存区最多有32,意味着底层硬件最多缓存32帧发送报文,如果超过32帧发送请求,则会因没有硬件空间缓存而发送请求失败。

tc397 CAN Module资源情况如下所示:

poYBAGMMhA-ALhjvAAEM-o0W0yY411.png

提示:上图中的Controller用“Node”表示。由上可以看出,3个CAN Module,共12个Controller。

每个CAN Module(4个Controller)共用32个发送Tx Buffer,共用64个Rx Buffer

...对于发送缓冲区,每个CAN Module共用32个发送缓冲区,如果配置了32个TxDedicated Buffer,则没有空间配置Tx FIFO/Queue;同理,每个CAN Module虽然有两个Rx FIFO,如果配置了64个Rx Dedicated Buffer,则没有空间配置Rx FIFO。一般,Tx/Rx Buffer配置时,会混合使用,比如:

20TxDedicated Buffer+ 12Tx Queue

40 RxDedicated Buffer+ 24Rx FIFO

MCMCAN

Module RAM区地址划分顺序如下所示:

poYBAGMMhCSAMIl3AADNZfS_IJs890.png

4、Mailbox、HRH、HWObject

Mailbox:邮箱,就是CAN驱动所具有的接收缓存区和发送缓存区,接收缓存区和发送缓存区均在RAM区。

HWObject:硬件对象,包含CAN ID、DLC、Data等信息的RAM区。

HRH:Hardware Receive Handle,接收句柄,一个HRH表示一个接收HWObject。

HTH:HardwareTransmitHandle,发送句柄,一个HTH表示一个发送HWObject。

Mailbox、HWObject、HRH、HTH、Controller、Transceiver之间的关系如下所示:

pYYBAGMMhDqAQ0yiAAC0PLOriVc031.png

2FullCAN和BasicCAN是什么?

首先,FullCAN和BasicCAN是CanIf模块配置的参数

BasicCAN:一个HWObject(HardwareObject)可以处理一段范围的CanId

FullCAN:一个HWObject(HardwareObject)只能处理单个CanId

Autosar对FullCAN和BasicCAN的解释如下所示:

poYBAGMMhImAcUxCAABo9GVkPgI211.png

将上述的解释进一步细化,如下所示:

pYYBAGMMhEqAXgHCAADCYTX5JVU641.png

使用工程中,MCAL会将缓存区分配成FIFO和Dedicated Buffer,FIFO和Dedicated Buffer的区别是什么呢?Dedicated Buffer区域,Hareware Object与HRH/HTH一一对应,而FIFO区域,一个HRH/HTH对应多个HarewareObject,如下所示:

pYYBAGMMhGqADKl6AAC7wZ8Ce7g609.png

3为什么需要FullCAN和BasicCAN?

在CAN驱动层,可以通过过滤的方式,过滤一段范围内的CanID,也就是说:会有一段范围内的报文接收进来,但是接收进来的这一段范围的报文并不一定都是上层所需要的,怎么办呢?用软件方式,再过滤一遍,由CanIf过滤所需要的CAN报文。因此,提出了FullCAN和BasicCAN的概念。

比如:HRH对应BASIC CAN类型,接收CanID范围:0x10~0x18,CanIf根据过滤算法,在0x10~0x18范围内过滤出需要的0x10、0x13、0x14、0x16、0x17送给上层,而其余的丢弃,如下所示:

poYBAGMMhJ-AQzbBAADAas-Dt-k646.png

CanIf可以通过设置CANIF_HRHRANGE_LOWER_CANID、CANIF_HRHRANGE_UPPER_CANID方式过滤,也可以通过设置CANIF_HRHRANGE_BASEID、CANIF_HRHRANGE_MASK进行过滤。

不同报文类型如何选择FULL CAN/BASICCAN

应用报文:一般选择配置成FULL CAN类型,对于应用报文,一般不需要缓存,使用最新接收的数据即可。对于发送的应用报文,都配置成FULL CAN类型需要一个前提:上层需要发送应用报文数量<底层硬件缓存区数量。比如:底层发送硬件缓存区数量为32,节点需要发送的应用报文数量为50,显然无法将50个发送的应用报文都配置成FULL CAN。遇到这种情况,一般会将重要的应用报文配置成FULL CAN,而其他要发送的应用报文配置成BASIC CAN。这样配置以后,硬件缓存区的分配就需要混用,即:Dedicated Tx Buffers+Tx Queue或者 Dedicated Tx Buffers+Tx FIFO,如下所示:

poYBAGMMhLKAa0SPAAC5rWvshB8966.png

如上图,ID3、ID15、ID20是比较重要的应用报文,配置成FULL CAN,分别给一个独立的缓存区;其他的缓存区则配置成BASIC CAN,即:一个缓存区可以发送多个不同CanID的报文。

诊断报文:一般选择配置成BASIC CAN类型(结合FIFO Buffer使用),因为诊断报文的请求/响应不能错序,需按照顺序处理,且数据不能覆盖;

网络管理报文:接收一般选择配置成BASIC CAN类型,因为一个节点一般会要求接收一段范围的网络管理报文,eg:0x500~0x53F。发送网络管理报文配置成FULL/BASIC CAN类型均可,如果资源够用,推荐配置成FULL CAN类型,因为每个节点的发送网络管理报文唯一;

标定报文:一般选择配置成FULL CAN类型。



审核编辑:刘清

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

    关注

    57

    文章

    2756

    浏览量

    463877
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1369

    浏览量

    114759
  • fifo
    +关注

    关注

    3

    文章

    389

    浏览量

    43718
收藏 人收藏

    评论

    相关推荐

    你听说过MIPS吗?它和ARM区别

    基于MIPS指令集的君正X2000处理器。有些工程师对于MIPS不怎么了解,究竟MIPS和ARM区别呢?本期文对MIPS做一个简单介绍。MIPS和ARM都属于
    的头像 发表于 11-23 01:05 262次阅读
    你听说过MIPS吗?它和ARM<b class='flag-5'>有</b><b class='flag-5'>何</b><b class='flag-5'>区别</b>?

    【迅为电子】龙芯LS2K1000LA和LS2K1000区别

    【迅为电子】龙芯LS2K1000LA和LS2K1000区别
    的头像 发表于 11-13 14:13 285次阅读
    【迅为电子】龙芯LS2K1000LA和LS2K1000<b class='flag-5'>有</b><b class='flag-5'>何</b><b class='flag-5'>区别</b>?

    TPA3112D1PWPR与TPA3112D1PWP区别

    TPA3112D1PWPR与TPA3112D1PWP区别
    发表于 09-09 07:48

    请问单端音频和差分音频区别

    单端音频和差分音频区别?一个是单声道一个是立体声?
    发表于 08-13 07:37

    谷景带你了解共模绕线电感和共模电感区别

    谷景带你了解共模绕线电感和共模电感区别 编辑:谷景电子 电感是电子电路中的关键电感元件,它对电路稳定性的影响有着非常重要的作用。在众多电感类型,共模电感和绕线电感是应用比较多的两种。有人想知道共
    的头像 发表于 04-28 23:26 413次阅读

    英伟达AI服务器NVLink版与PCIe版区别?又如何选择呢?

    在人工智能领域,英伟达作为行业领军者,推出了两种主要的GPU版本供AI服务器选择——NVLink版(实为SXM版)与PCIe版。这两者本质区别?又该如何根据应用场景做出最佳选择呢?让我们深入探讨一下。
    的头像 发表于 03-19 11:21 5660次阅读
    英伟达AI服务器NVLink版与PCIe版<b class='flag-5'>有</b><b class='flag-5'>何</b><b class='flag-5'>区别</b>?又如何选择呢?

    蓝牙降噪耳机的工作原理是什么?主动降噪和通话降噪的技术区别

    蓝牙降噪耳机的工作原理是什么?主动降噪和通话降噪的技术区别? 蓝牙降噪耳机的工作原理是通过一系列技术手段来消除环境噪音,使用户能够更好地享受音乐、通话等体验。主动降噪和通话降噪是两种常见的降噪
    的头像 发表于 03-14 15:46 3635次阅读

    什么是励磁电感?与漏磁电感区别呢?

    什么是励磁电感?与漏磁电感区别呢? 励磁电感和漏磁电感是电感元件中的两个重要概念,它们在电磁学和电路应用中有着不同的作用和特性。本文将详细介绍励磁电感和漏磁电感的定义、特点以及区别
    的头像 发表于 03-08 16:39 6902次阅读

    数组和链表区别

    数组和链表的区别,这个问题,不仅面试中经常遇到,考研的同学也得掌握才行。
    的头像 发表于 02-19 15:33 526次阅读
    数组和链表<b class='flag-5'>有</b><b class='flag-5'>何</b><b class='flag-5'>区别</b>

    作为导线,铜线和铝线区别?可以接在一起吗?

    作为导线,铜线和铝线区别?可以接在一起吗? 铜线和铝线是两种常用的导线材料,用于电力输送和电器连接。虽然它们都具备导电功能,但在性能、用途和优势方面存在一些区别。本文将对铜线和铝线
    的头像 发表于 02-18 13:52 6431次阅读

    译码不只有DECB,还有DEC,它们区别

    译码不只有DECB,还有DEC,它们区别? DECB译码和DEC译码都是编码技术中常见的方法,它们在使用上有一些区别。 首先,让我们了解一下什么是译码。在计算机科学中,译码是将计算
    的头像 发表于 02-18 11:14 1313次阅读

    晶振频率和时钟频率本质上有区别呢?时钟频率什么作用?

    晶振频率和时钟频率本质上有区别呢?时钟频率什么作用? 晶振频率和时钟频率是两个相关但又有所不同的概念。下面我们将逐一介绍这两个概念的含义、区别和作用。 首先,我们来了解晶振频率。晶
    的头像 发表于 01-24 16:11 3327次阅读

    UPS负载箱与负载模拟器区别

    UPS负载箱与负载模拟器区别? UPS负载箱和负载模拟器是用于测试UPS设备性能和稳定性的重要工具。虽然它们在某些方面有一些共同之处,但它们在工作原理、使用方法和功能上存在一些重要区别
    的头像 发表于 01-18 16:07 803次阅读

    串行线调试与JTAG区别

    在基于ARM7的ADuC器件上,通过JTAG调试和下载到Flash。在AduCM360上,JTAG被串行线调试取代。 串行线调试与JTAG区别?我是否需要新的工具和新的仿真器?
    发表于 01-15 07:35

    ADuCM360与ADuCM361什么区别

    ADuCM360与ADuCM361区别
    发表于 01-15 07:29