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

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

3天内不再提示

MCAL的CAN模块配置介绍

CHANBAEK 来源: 嵌入式老林 作者: 嵌入式老林 2023-12-12 15:31 次阅读

大家好,我是嵌入式老林,从事嵌入式软件开发多年,今天分享的内容是MCAL的CAN模块配置介绍,希望能对你有所帮助。

一、CAN模块配置介绍

之前也分享过Autosar的基础知识,不清楚且有兴趣的同学可参考之前的文章。

在做车载相关的项目中,一般都会用CAN(或CAN FD)通信,当然也有Lin,FlexRay,更高级的甚至用以太网。初学者对这几个常用的车载总线不太清楚的,可以移步之前的文章。

先简单介绍一下Autosar中CAN是如何通信的,数据流,Autosar如何配置。

先来回顾一下Autosar的架构:

图片

普通CAN报文接收流程:

CAN------CANIF------PDUR------COM

发送流程就是顺序反过来,从上到下

COM------PDUR------CANIF------CAN

上面这些是属于Autosar里面的BSW模块,除了这些需要配置,MCAL也需要进行配置才行,也就是非Autosar架构中的底层驱动,类似于SDK。

本文也主要分享MCAL的CAN配置需要配置哪些东西

图片

二、CAN控制器的配置

2.1 General配置

CanBusoffProcessing :BusOff的处理方式,中断(INTERRUPT)或者轮询(POLLING)

CanControllerActivation :是否激活这路CAN

CanControllerId :节点号,从0开始增加,必须连续。

CanRxProcessing :接收到报文后的处理方式,中断(INTERRUPT)或者轮询(POLLING)

CanTxProcessing :成功发送报文后的处理方式。中断(INTERRUPT)或者轮询(POLLING)。

CanWakeupFunctionalityAPI :Can唤醒的一些API函数是否可用,只有当支持CAN唤醒时,这个选项才可以勾选。

CanWakeupProcessing :CAN唤醒的处理方式,中断(INTERRUPT)或者轮询(POLLING)

CanWakeupSupport :是否支持CAN唤醒

CanControllerDefaultBaudrate :波特率的配置

CanPeripheralBusClockRef :CAN时钟源选择

图片

2.2 波特率配置

配置界面:

图片

标准CAN的波特率配置:

CanControllerProSeg:传播段

CanControllerSeg1:相位缓冲段1

CanControllerSeg1:相位缓冲段2

CanControllerSyncJumpWidth:同步跳转宽度

这几个参数的含义的话,之前调试过CAN驱动的应该就知道了,这里简单介绍一下,就是CAN波特率的计算方法:

波特率 =(CAN时钟 / 波特率分频系数) / 位时间

而 位时间 = tq + tBS1 + tBS2

CAN总线里通过对CAN 节点里的CANBTR寄存器的控制,来实现不同波特率的通信。

1)同步段 :一个位的起始位置,CAN-bus规定跳变沿为同步信号

2)传播段 :发送节点发送一个位跟接收节点接收到这个位之间存在网络传播延迟,传播段则是为了补偿这段传播延迟。

3)相位缓冲段1和相位缓冲段2 :由于采样点位置在相位缓冲段1跟相位缓冲段2之间,通过设置相位缓冲段1和相位缓冲段2的值,可以调整采样点位置,保证每个位采样点一致。缓冲段的长度调节范围则是由

4)同步跳转宽度(SJW) :决定了缓冲段的长度调节范围。

图片

CAN FD的波特率配置

根据实际项目需求配置对应的波特率即可

CanControllerTxBitRateSwitch:CAN波特率是否可变

图片

三、CanHardwareObject配置

3.1 General配置

配置界面如下:

1)配置这个HOH的类型是basic CAN (多个Pdu对应一个HardwareObject)还是Full CAN(一个Pdu对应一个HardwareObject)

2)配置CAN 报文是标准帧还是扩展帧。

3)配置HOH的ID号,从0开始

4)配置这个HOH是用来接收还是发送的

5)配置这个HOH属于哪一个CAN通道

图片

3.2 Filter配置

要接收的CANID都需要在filter中配置,CAN标准帧在StandardFilter,扩展帧的话是在ExtendFilter中添加

每一个item就是一个filter,每个filter里面可以配置ID0,ID1,filter type。对于每个接收报文的HOH来说,只有通过了这个filter,接收的CAN报文就会被分配到这个HOH,再往上传递到CANIF

Filter的类型有:

a) CAN_FILTER_ELEMENT_DISABLED :不使能filter

b) CAN_RANGE_FILTER :ID0 =< 接收ID <= ID1 则通过,也就是在ID0和ID1的范围内都能接收到

c) CAN_CLASSIC_BIT_MASK_FILTER :接收ID & ID1 == ID0 则通过,也就是这种类型的过滤,如果ID1配置为0X7FF,则只能接收到当前配置的CAN ID。

d) CAN_DUAL_ID_FILTER :ID0和ID1都通过,即只能接收ID0和ID1

图片

ID0和ID1的配置是取决于filter type的,下面以CAN_CLASSIC_BIT_MASK_FILTER类型为例介绍ID0和ID1的配置。

原理:能通过的报文ID数量完全取决于屏蔽码(掩码),设得宽,则可以通过的多(所有位为0,则任意报文ID都可以通过),设得窄,则通过的少(所有位设为1,则只有一个能通过)

图片

至此,MCAL的CAN模块就配置完成了,配置完成后,点击保存,然后再右键选择Verify Project,看看是否有报错,没报错就点击Generate Project,生成配置代码,然后同步到编译整个项目的工程中

图片

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

    关注

    112

    文章

    15231

    浏览量

    171205
  • 嵌入式
    +关注

    关注

    4982

    文章

    18286

    浏览量

    288479
  • CAN模块
    +关注

    关注

    0

    文章

    19

    浏览量

    8676
  • 车载总线
    +关注

    关注

    0

    文章

    4

    浏览量

    1196
收藏 人收藏

    评论

    相关推荐

    CAN发送的底层逻辑:CANwrite函数机制介绍

    这个系列是全新的系列,整个系列会通过实际操作,调试实际的代码,以CAN为例,完整的解析AUTOSAR的从底层MCAL 到COM等上层模块的通信链路层。重点讲述数据的流向,以及各个模块
    的头像 发表于 07-17 15:47 3173次阅读
    <b class='flag-5'>CAN</b>发送的底层逻辑:CANwrite函数机制<b class='flag-5'>介绍</b>

    port的eb mcal配置方法

    port的eb mcal配置方法
    发表于 07-28 06:16

    请问如何对Mcal Port进行配置

    请问如何对Mcal Port进行配置
    发表于 10-20 07:06

    MCAL配置S32K344 EVB的CAN0,卡在函数FlexCAN_Ip_SendBlocking中怎么解决?

    我用 NXP MCAL 配置了 S32K344 EVB 的 CAN0,但它会卡在函数 FlexCAN_Ip_SendBlocking 中。我已经阅读了下面的链接并相应地设置了波特率和 UntouchPin。请检查我的项目是否受到
    发表于 03-23 06:27

    Mcal Can模块产品配置代码使用s32ds配置工具失败怎么解决?

    我用s32ds配置一个Mcal CAN模块,RTD版本是1.0.1,但是当我生成代码时,有几个错误警告如下图所示。然后我发现生成的文件FlexCAN_Ip_Cfg.h是空的,项目构建失
    发表于 04-03 09:18

    CAN2ETH/ETH2CAn获取模块警告是怎么回事?

    我们正在研究 CAN2ETH/ETH2CAn 项目,我们从 PFE-DRV_S32_M7_MCAL_BETA_0.9.7 中获取了 NXP 参考项目软件包:EBTresos
    发表于 04-11 07:10

    S32K144搭载S32K1XX_MCAL4_2_RTM_1_0_6以及S32DS编译软件使用CAN模块无法发送报文怎么解决?

    我们团队在使用MCALCAN模块时无法发送报文的问题,MCAL版本是S32K1XX_MCAL4_2_RTM_1_0_6评估版,使用EB
    发表于 11-13 08:29

    英飞凌MCAL和VADC模块配置资料说明

    本文档的主要内容详细介绍的是英飞凌MCAL和VADC模块配置资料说明。
    发表于 01-25 08:00 150次下载
    英飞凌<b class='flag-5'>MCAL</b>和VADC<b class='flag-5'>模块</b><b class='flag-5'>配置</b>资料说明

    AUTOSAR MCAL-基于Infineon TC3xx芯片的ADC模块

    ADC模块配置,和芯片特性强相关的地方还是有很多地方(AUTOSAR MCAL标准定义的配置项都是一样的),本文将详细介绍基于Infine
    的头像 发表于 01-29 16:45 6268次阅读

    简单聊聊MCAL的最小工程

    英飞凌的芯片在汽车电子里用得可谓是颇多,最近刚好在摸TC3系列的CAN模块,来简单聊聊MCAL的最小工程。
    的头像 发表于 03-21 09:25 2040次阅读

    浅析AutoSAR CAN Stack在配置工具中的实现

    当时在开发MCAL相关模块的时候,偶尔会看下CAN整个模块配置,由于CAN相关的
    的头像 发表于 06-14 14:26 1185次阅读

    云途正式发布量产版本AUTOSAR MCAL驱动软件和配置工具

    云途MCAL软件包RTM v1.1.0包含了YTM32B1ME05 和YTM32B1MD1两个系列车规MCU的片上外设模块的驱动程序代码和MCAL驱动模块所需的相应桩
    的头像 发表于 07-19 15:29 1601次阅读
    云途正式发布量产版本AUTOSAR <b class='flag-5'>MCAL</b>驱动软件和<b class='flag-5'>配置</b>工具

    经纬恒润为国产芯片MCAL软件开发赋能

    设备驱动等十几个驱动模块。同时,基于合作伙伴提供的EBtresosStudio工具开发了MCAL产品的配置工具界面,可以为用户提供方便快捷的配置使用方式。该
    的头像 发表于 12-27 08:00 316次阅读
    经纬恒润为国产芯片<b class='flag-5'>MCAL</b>软件开发赋能

    使用FSP配置RA的CAN模块(上)

    使用FSP配置RA的CAN模块
    的头像 发表于 08-05 08:08 154次阅读
    使用FSP<b class='flag-5'>配置</b>RA的<b class='flag-5'>CAN</b><b class='flag-5'>模块</b>(上)

    使用FSP配置RA的CAN模块(下)

    使用FSP配置RA的CAN模块
    的头像 发表于 08-05 08:08 142次阅读
    使用FSP<b class='flag-5'>配置</b>RA的<b class='flag-5'>CAN</b><b class='flag-5'>模块</b>(下)