前面
上篇文章介绍了一个DBC文件的诞生过程,它是AutoSAR CAN模块配置的前提。
CAN模块的配置是一块很难啃的骨头,作者也是初学,这篇文章只是给大家介绍一个CAN模块在Davinci CFG配置过程中会使用到的一些参数选项,打好基础。
导入DBC文件
打开Davinci CFG软件,新建工程,这一步就省略了。
打开文件导入工具,选择咱们配置好的dbc文件.
5如果有多个ECU的话,选自自己现需要配置的。
进入Basic Editor界面,选择CAN
Can Controllers
通用配置
你会发现已经存在一个CAN控制器了,双击进入
这一大列都是需要进行配置的参数
Busoff Processing:用于处理 Busoff事件,选择中断或者轮循的方式调用指示函数通知上层发生了Busoff事件。
Clock Frequency【MHz】:用于设置CAN模块的时钟。如果选项Cpu Clock Ref 设置了,这里可以不填。
Common CAN:在某些型号的单片机上,每个Node都有专属于自己的硬件 MO (Message Object),这些MO不能配置给其他的Node使用,这样就限制了该Node可以配置的FULLCAN的个数。而如果使用该功能,那么就可以将两个物理Node合并成一个逻辑Channel,从而可以在这个逻辑Channel上使用更多的FULLCAN。该功能对英飞凌系列的单片机并不适用,因为英飞凌的单片机上的所有硬件MO都是可以被配置给任何一个
Node的。
Controller Activation:是否使能该控制器。
Controller Default Baudrate:设置波特率。
Cpu Clock Ref:引用的CAN模块的时钟。该时钟在MCU模块配置。
Interrupt Priority:CAN模块的中断优先级。发送、接收共用同一个中断优先级。
Number Of CAN Obj:使用的CAN OBJ的个数。
Physical Node:CAN节点。
Receive Input Selection:接收引脚的选择。
Rx Processing:接收数据的处理方式,中断或者轮循。
Tx Processing:发送数据的处理方式,中断或者轮循。
Type of Service Control:中断由哪个CPU来处理。
波特率配置
Baudrate Clock:CAN模块配置的波特率的时钟,由Controller Default Baudrate参数的值定义而来的。
Baudrate Div8:预分频时钟8分频。
- false:一个时间单元等于(BRP+1)个时钟周期;
- ture:一个时间单元等于8×(BRP+1)个时钟周期。
Baudrate Prescaler:简称BRP,波特率预分频,描述见上面的Baudrate Div8。
Controller Baud Rate:设置CAN波特率的值。
Controller Baud Rate Config ID:该ID值被SetBaudrate函数作为参数使用,用于设置哪个控制器的波特率。
Controller Prop Seg:传播段的时间。它定义了CAN总线上发送输出驱动器和收发电路的物理传播延迟。
Controller Segl:采样点前的时间段。
Controller Seg2:采样点后的时间段。
Controller Sync Jump Width:同步跳跃宽度,用于重同步的时间。
过滤器配置
这里的过滤器可不是滤波器,更像是校验,把不符合要求的报文过滤掉。
Filter Code Value,Filter Mask Value:过滤器被设计成Code和Mask两个部分。
只有符合下面的条件才被认为通过:
- Received CAN ID &.Mask== Code
Filter只被用于Rx Basic CAN中。
Is Locked:用于指示代码生成器在生成代码的时候不要优化CanFilterMask的值。
CanHardwareObjects
前面配置好了Can控制器软件层面的一些东西,CanHardwareObjects更多的是一些硬件层的协议参数。
ShortName:该硬件MO的名字,在代码中主要用于注释以体现是哪个硬件MO。
Common CAN Node:如果参数Common CAN被激活,那么该参数用于该硬件MO选择它所属的物理CHANNEL。注意:只有RXFULLCAN的硬件MO才可以配置,其他的MO的值都是A。
Controller Ref:该 MO所属的 CAN 节点。
Enable Polling Processing:该 MO是否使用轮循的方式去发送CAN报文。目前的版本不支持这个配置。
Handle Type:FULL CAN(一个 MO只能发送或接收一个 CAN 报文)或者 BASIC CAN(一个MO可以接收或发送多个CAN报文)。
Id Type:标准帧或扩展帧。
Id Value:CAN ID。
Main Function RW Period Ref:引用一个读写发送周期的值,该值在CanGeneral→CanMainFunction RWPeriods中定义。
Object Hw Handle:定义硬件MO的索引号,也即该消息使用第几个MO来发送CAN 报文。
Object Hw Size:定义该消息使用硬件MO的个数。
Object Id:定义该硬件MO所属的逻辑handle的ID号。
Object Type:接收还是发送。
Filter Mask Ref:设置该MO的掩码。
Rx Object配置选项与TxObject类似,故不再说明。
最后
关于CanGeneral配置,放在下一篇博客里,这些参数也太多了,查不过来了