文章目录
- CanConfigSet
- CanControllers
- CanControllerBaudrateConfig
- CanFilterMask
- CanHardwareObjects
- CanGeneral
- CanMainfunctionRWPeriods
- 总结
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交互;