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)



Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐