CAN通信篇 - Can模块配置(一)


Can模块的是CAN控制器模块,该模块比较简单,只包括三个部分:Can控制器、Can硬件对象(CAN控制器手册中所描述的MailBox)以及通用配置中的Can主函数周期。下面所示为Davinci Configurator配置工具中Can模块的配置容器。
在这里插入图片描述
下面详细介绍下各部分配置及其参数意义。

CanConfigSet

CanConfigSet是Can模块的二级配置容器,包含了Can控制器和Can硬件对象,2个三级配置项容器。

CanControllers

CanController容器包含了所有Can控制器的配置。根据系统上实际使用的Can控制器硬件数量,在这里配置对应数量的控制器(就是每个控制器硬件对应的软件抽象,一对一关系)个数。下图所示是一个对应硬件Can控制器的配置容器的包含项,包括了:波特率和过滤器掩码,下面来一一介绍。
在这里插入图片描述
首先是Can控制器的通用参数配置,如下图所示。

在这里插入图片描述

其中需要特别注意的都已用红圈标明。其余配置项不是不重要,而是这些配置项有些是默认,有些是在MCAL导入达芬奇工具的arxml中已确定,属于预条件(比如,通过EB配置后,再导入达芬奇),这里不做过多详述。
这里需要注意的第一个是Can控制器的地址(Controller Base Address),即在MCU的寻址空间上,该控制器的位置,现在使用的Microp,基本都是内置Can控制器的,可以直接查芯Microp芯片手册获取该参数。
第二个是波特率选择,这里这个波特率是引用了子配置项波特率的配置。即实际波特率配置是在CanControllerBaudrateConfig容器配置的,这里仅仅是引用之。
第三个是时钟选择,这里引用自Mcu模块配置的给Can模块使用的时钟;
第四个是Tx/Rx处理方式,这里有两种选择,分别是中断式和轮询式,具体采用哪种方式,视具体项目需求而定;
第五个是唤醒处理方式,也分为中断和轮询两种方式,具体视项目需求而定;
第六个是唤醒源选取,唤醒源来自EcuM,这里仅是选取使用,具体后续在EcuM中做介绍;

CanControllerBaudrateConfig

波特率配置如下所示,具体每个参数及其意义,可查CAN通信原理,这里不做赘述。
在这里插入图片描述

CanFilterMask

在本容器进行过滤掩码配置,没有过多需要介绍的。

CanHardwareObjects

CanHardwareObjects包含了项目使用的MailBox数量及其配置。关于具体最多可以配置多少个Can硬件对象具体要参考所使用的Can控制器硬件手册,Can控制器硬件手册会说明该Can控制器最多支持多少个CanMailBox。MailBox分为接收和发送两种发送Can硬件对象如下所示:
发送型:
在这里插入图片描述
接收型:
在这里插入图片描述
这里配置上需要注意有以下:

  • Controller Ref ,引用CanController容器配置的Can控制器,表示该MailBox属于那个Can控制器;
  • Handle Type,有BASIC和FULL两种,表示该MailBox服务于的CAN类型,具体这两种CAN类型的区别,参考CAN基础知识,此处不做赘述;
  • Id Type,表示该MailBox可用于处理的CAN ID类型,有三种,分别为EXTENDED , MIXED 和 STANDARD,分别代表了扩展帧CAN报文(29bit-id)、混合CAN报文(扩展帧和标准帧都可以)和标准帧CAN报文(11bit-id);
  • Id Value,在FULL类型的Can硬件对象中,该值表示本Can MailBox处理的Can Id。在BASIC类型的Can硬件对象中,该值结合Filter Mask用于报文过滤;
  • Object Type,分为TRANSMIT和RECEIVE,用于定义该Can硬件对象是用于报文发送的MailBox还是用于接收MailBox
  • Filter Mask Ref ,引用CanController中定义的过滤掩码;

CanGeneral

CanGeneral是Can模块的通用配置容器,包含了许多配置参数。根据不同的芯片,配置项未必完全相同,此处参考的是Infineo TriCore平台。

  • Change Baudrate Api, 定义Can_ChangeBaudrate Api是否使能;
  • Counter Ref,引用Os模块定义的OS Counter,用于本模块;
  • Dev Error Detection, DET使能开关;
  • Ecc Init,指定Can驱动是否初始化Can报文RAM,当报文RAM使用了parity或ECC功能,建议硬件复位后初始化报文RAM;
  • Enable optimizations for hardware buffer lengths , 如果选中此项,FullCAN的硬件缓冲区将被限制为要接收的实际消息的帧长度。一般来说,这可以节省硬件资源,但如果收到帧长度较长的CAN-FD消息,它们可能会被驱动程序丢弃。如果禁用此功能,硬件缓冲区将配置为能够接收所有消息长度的最大值。
  • Fd NISO,指定CAN-FD帧格式一致性(ISO11898-1或博世CAN FD V1.0);
  • Fd Support,指定支持的CAN FD类型,NONE表示不支持,BRS表示支持,但DLC最大为8字节,FULL表示支持,且DLC最大为64字节;
  • Generic Confirmation,定义是否使能通用确认函数;
  • Generic Confirmation API2,此参数更改“CanGenericConfirmation”的签名,以支持总线镜像(第二种使用情形是支持CDD镜像组件进行总线镜像。另请参见“CanMirrorModeSupport”。)
  • Generic Pre Transmit,此参数定义是否为所有Tx消息调用通用的预传输函数。在发送消息之前,使用此选项可更改数据或中止传输。
  • Generic Precopy,此参数定义是否调用通用预拷贝函数。如果使能,任何Rx事件都会调用该函数。
  • Get Status, 该参数定义是否使能API Can_GetStatus();
  • Hardware Cancel By Appl, 该参数定义是否可以取消硬件loop检查,仅当CanHardwareLoopCheck使能时才可使用;
  • Hardware Loop Check, 该参数使能硬件loop检查,以避免死循环(仅在硬件支持时才可用);
  • Interrupt Category,如果采用中断式处理,指定所采用的中断等级;
  • Interrupt Lock,该参数指定由谁处理中断锁,可选DRIVER,APPL或BOTH;
  • Main Function Busoff Period[ms], 指定函数Can_MainFunction_Busoff的调用周期;
  • Main Function Mode Period[ms],指定函数Can_MainFunction_Mode的调用周期;
  • Main FunctionWakeup Period[ms],指定函数Can_MainFunction_Wakeup的调用周期;
  • Multiple Basic CAN Object,当使用多个基本CAN硬件消息来优化接收时激活该选项,这允许使用更多硬件消息过滤器和硬件消息缓冲区(仅在硬件支持时才有效)。
  • Multiple Basic CAN Tx Object,当使用多个TX基本CAN硬件消息优化传输时激活该想想,这允许使用更多硬件消息缓冲区(仅在硬件支持时才有效)。
  • ReInitialization While Start Transition,该选项定义是否在启动传输时执行整个处理器初始化(包括硬件Rx和Tx邮箱和控制寄存器)。

CanMainfunctionRWPeriods

对于采用轮询方式处理Can报文处理的场景,CanMainfunctionRWPeriods容器用于定义函数Can_MainFunction_Read和Can_MainFunction_Write的执行周期。
在这里插入图片描述

总结

以上就是Davinci Configurator中关于Can模块的配置介绍。

  • 这个模块主要进行Can控制器相关参数和Can模块的Tx和Rx的MailBox配置。至于CanGeneral的配置,一般保持默认即可。另外关于轮询式Can报文处理的周期定义,仅在配置为轮询式处事方式时才需要,对于配置为中断式的,空置即可。
  • 这个模块可以理解为是AUTOSAR架构下Can通信的最低层(暂不考虑MCAL),直接与CanBus交互;
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子开发攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值