• 658查看
  • 0回复

[芯片硬件] MCAL配置专题【三】CAN模块配置

[复制链接]


该用户从未签到

发表于 10-12-2023 08:10:10 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


今天分享的内容是MCAL的CAN模块配置介绍,希望能对你有所帮助

一、CAN模块配置介绍

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

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

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

先来回顾一下Autosar的架构:

MCAL配置专题【三】CAN模块配置w1.jpg

普通CAN报文接收流程:CAN------CANIF------PDUR------COM发送流程就是顺序反过来,从上到下
COM------PDUR------CANIF------CAN上面这些是属于Autosar里面的BSW模块,除了这些需要配置,MCAL也需要进行配置才行,也就是非Autosar架构中的底层驱动,类似于SDK。
本文也主要分享MCAL的CAN配置需要配置哪些东西
MCAL配置专题【三】CAN模块配置w2.jpg
二、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时钟源选择

MCAL配置专题【三】CAN模块配置w3.jpg

2.2 波特率配置

配置界面:

MCAL配置专题【三】CAN模块配置w4.jpg

标准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):决定了缓冲段的长度调节范围。

MCAL配置专题【三】CAN模块配置w5.jpg

CAN FD的波特率配置

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

CanControllerTxBitRateSwitch:CAN波特率是否可变

MCAL配置专题【三】CAN模块配置w6.jpg

三、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通道

MCAL配置专题【三】CAN模块配置w7.jpg

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

MCAL配置专题【三】CAN模块配置w8.jpg

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

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

MCAL配置专题【三】CAN模块配置w9.jpg

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

MCAL配置专题【三】CAN模块配置w10.jpg


快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 4-3-2025 22:27 , Processed in 0.555401 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.