Based on EB tresos
1、波特率及采样点
其中,CAN时钟分频在Mcal Mcu Clock Config中已进行,如下图所示
因此BaudRate中,Fasyn/(DBRP + 1)项为40MHz,其余介绍如下:
1、SynCseg同步段,标准1个Tq
2、Propseg传播段,在mcal中对应Can设置为CanControllerPropSeg,单位Tq
3、Phaseseg1相位缓冲段1,在mcal中对应Can设置为CancontrollerSeg1,单位Tq
4、Phaseseg2相位缓冲段2,在mcal中对应Can设置为CancontrollerSeg2,单位Tq
这些变量与波特率和采样点有关,下面是典型配置,供参考,can采样点80%,canfd仲裁段80%,数据段70%
其中mcal还可配置一个参数,CanControllerSyncJumpWidth,该值用于相位缓冲器加长或缩短量的上限,由于再同步,传播段和相位缓冲段1可能会延长或者相位缓冲段2可能会缩短,为了使得采样点能存在容错的配置项,需要在系统级测试时进行标定处理,这里配置成典型值4
2、Canfd第二采样点
CAN总线节点在发送过程中,是要对输入信号进行回采的,以进行总线仲裁以及错误判断。如果在一定时间内没有回采到预期值,则会出现位错误。该时间阈值取决于CAN时钟频率。
当使用CANFD时,由于可变波特率,CAN位时间发生了变化,会导致该延时阈值较短,也就是需要硬件在更短的时间进行回读,但硬件的延时相对较为固定,这个时候就容易误报位错误。也就是实际该帧发送正常,但是硬件回读时间大于阈值。
在mcal中,可配置项在配置canfd数据段波特率时可选
配置时可根据mcal can um中描述的进行配置,由于波特率和CAN时钟频率都与例子一致,因此配置成16
3、CanHwObject
CanHwObject,下文简称为邮箱。
在使用mcal配置can模块时,应该碰见过CanHwObject和Cancontroller的顺序导致的报错,要注意配置CanHwObject时要按照,CanController的Id的顺序,并按照RECEIVE在前,TRANSFER在后的循序进行配置CanHwObject的Id
4、CanHwFilter
对于ObjectType为RECEIVE的邮箱,不管是FULL CAN还是BASIC CAN,都需要配置过滤器,过滤器用于过滤该邮箱所不需要的报文,降低由于无用报文导致的程序频繁进入接收中断,或加入RXFIFO,对CpuLoad造成影响;在配置时需要注意,mcal中有两个配置,一个FilterCode,一个FilterMask,Mask界定哪些位进行过滤,Code则标注目标值;假设需要过滤一个报文,id为0x456,那么配置Mask为0x7FF,Code为0x456即可;假设要过滤0x4xx的报文,那么Mask不能配置0xXX的配置,可以设为0x700,code配置为0x400即可(以上均为标准帧,id最大为0x7ff)