您的位置 首页 元件

MCAL的CAN模块配置介绍

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

做车载相关的项目中,一般都会用CAN(或CAN FD)通信,当然也有Lin,FlexRay,更高级的甚至用以太网。初学者对这几个常用的车载总线不太清楚的,可以移步之前的文章。
先简单介绍一下Autosar中CAN是如何通信的,数据流,Autosar如何配置。
先来回顾一下Autosar的架构:
wKgaomV4DA-AVgC_AAQFbgPOR_I866

图片
普通CAN报文接收流程:
CAN——CANIF——PDUR——COM
发送流程就是顺序反过来,从上到下
COM——PDUR——CANIF——CAN
上面这些是属于Autosar里面的BSW模块,除了这些需要配置,MCAL也需要进行配置才行,也就是非Autosar架构中的底层驱动,类似于SDK。
本文也主要分享MCAL的CAN配置需要配置哪些东西
wKgZomV4DA-AMfHiAABhTwbeVqs517

图片
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时钟源选择
wKgZomV4DA-AH-KCAAHnZxGIS1s160

图片
配置界面:
wKgaomV4DA-Aeu6aAADbbDD-vuw018

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

图片
CAN FD的波特率配置
根据实际项目需求配置对应的波特率即可
CanControllerTxBitRateSwitch:CAN波特率是否可变
wKgZomV4DA-AZaoSAAEmYuKXruw881

图片
配置界面如下:
1)配置这个HOH的类型是basic CAN (多个Pdu对应一个HardwareObject)还是Full CAN(一个Pdu对应一个HardwareObject)
2)配置CAN 报文是标准帧还是扩展帧。
3)配置HOH的ID号,从0开始
4)配置这个HOH是用来接收还是发送的
5)配置这个HOH属于哪一个CAN通道
wKgZomV4DA-ARxf2AAHun3US8JQ429

图片
要接收的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
wKgaomV4DA-AWu8sAAMlZpwlw54002

图片
ID0和ID1的配置是取决于filter type的,下面以CAN_CLASSIC_BIT_MASK_FILTER类型为例介绍ID0和ID1的配置。
原理:能通过的报文ID数量完全取决于屏蔽码(掩码),设得宽,则可以通过的多(所有位为0,则任意报文ID都可以通过),设得窄,则通过的少(所有位设为1,则只有一个能通过)
wKgZomV4DA-AX4njAAC_mwywPvc554

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

图片
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/349380.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部