NXP S32K358 davinci cfg can驱动配置

发布时间:2023年12月28日

? ? ? ?NXP S32K358一共有8路can,都支持Can FD和Classical Can。其中FlexCan0-2是增强型CAN,支持8byte的mailbox 96个。FlexCan3-7支持8byte的mailbox 64个。

1.增强型Can和普通Can波特率采样点设置区别

在NXP S32K358中增强CAN的波特率采样点的寄存器和普通CAN是不同,一共有五个寄存器和波特率采样点相关。

增强型can的采样点计算公式如下,在采用增强型CAN模块工具会自动配置如下两个寄存器

普通can CTRL1寄存器

普通Can FD寄存器配置

2.增强型can FD采样点配置

配置CAN0,can模块时钟为40M,仲裁帧波特率为500K,采样点为80%,数据帧波特率为2M,采样点为75%。

下面介绍两个缩写

Tseg1:Time Segment1

Tseg2:Time Segment2

采样样点计算= (Tseg1+SYNC_SEG)/(Tseg1+SYNC_SEG+Tseg2)

SYNC_SEG:固定为1

Tseg1=controller prop seg +cantroller seg1(davinci cfg配置项)=NTSEG1(芯片寄存器)+1

Tseg2=cantroller seg2(davinci cfg配置项)=NTSEG2(芯片寄存器)+1

Can时钟为40M,仲裁帧配置如下8分频,则分配到can模块的时钟为5M,仲裁帧波特率为500k,则每个bit time有10个Tq。采样点为80%,则cantroller seg2 = 2,controller prop seg +cantroller seg1 = 7

则如下图配置:

Can时钟为40M,数据帧配置如下1分频,则分配到can模块的时钟为40M,仲裁帧波特率为2000k,则每个bit time有20个Tq。采样点为75%,则cantroller seg2 = 5,controller prop seg +cantroller seg1 = 14

SYNC_SEG:固定为1

Tseg1=controller prop seg +cantroller seg1(davinci cfg配置项)=DTSEG1(芯片寄存器)+1

Tseg2=cantroller seg2(davinci cfg配置项)=DTSEG2(芯片寄存器)+1

则如下图配置:

由于数据帧和仲裁帧速率不同,需要勾选BRS选项。

生成代码关联寄存器如下:

3.Classical Can采样点配置

配置CAN3,can模块时钟为40M,波特率为500K,采样点为80%。在davinci cfg中CAN3属于普通can,因此和增强can是两个模块,区别如下图:

采样样点计算= (Tseg1+SYNC_SEG)/(Tseg1+SYNC_SEG+Tseg2)

SYNC_SEG:固定为1

Tseg1=controller prop seg +cantroller seg1(davinci cfg配置项)=EPROPSEG+

EPSEG1(芯片寄存器)+2

Tseg2=cantroller seg2(davinci cfg配置项)=EPSEG2(芯片寄存器)+1

Can时钟为40M,仲裁帧配置如下8分频,则分配到can模块的时钟为5M,仲裁帧波特率为500k,则每个bit time有10个Tq。采样点为80%,则cantroller seg2 = 2,controller prop seg +cantroller seg1 = 7

则如下图配置:

生成代码如下图:(如果只用Classical Can个人理解CBT寄存器和CTRL1寄存采样点配置是一样的)

注意如果普通can配置Can FD的话自己写寄存器有如下区别:

Tseg1=controller prop seg +cantroller seg1(davinci cfg配置项)=FPROPSEG+

FPSEG1(芯片寄存器)+1(此处在手写驱动代码采样点容易算错)

Tseg2=cantroller seg2(davinci cfg配置项)=FPSEG2(芯片寄存器)+1

4.Can的FilterMask配置

此处发现目前所配置davinci cfg的配置生成代码是采用RxFiFO filter配置,没找到mailbox+mask寄存配置的选项,如下图:

Filter code value 是想收的canID,如图想收canID:0x3c0

Filter mask value是相对于Filter code value为基准,bit=1校验该位,0忽略此配置,此配置是只接收0x3c0

Rx FIFO的结构如下,可以进行128个ID的点对点滤波

5.CanHardware配置

CanHardware配置Rx在前,Tx在后。

Rx hardwaare如下配置,

配置如下Fd Padding Value:大于8byte长度的canfd数据填充值

Handle Type: BASIC? 一对多接收,可以通过底下Filter mask ref来决定收那些can id,或者不进行滤波,接收所有的canid

? ? ? ? ? ? ? ? ? ? ? ? ?Full? ?一对仪接收,一个CanHardware只能接收一个canID。

如果存在多个Rx?CanHardware,应该是Full Rx在前,basic Rx在后

Object type :接收的CanHardware或者发送的CanHardware

6.Can的基础配置

主要几个rx tx busoff 和唤醒功能怎么处理。如果采样轮询方式需要配置mainfunction的周期。如果采用中断方式需要在os中配置中断。

轮询方式配置调用:

中断方式的os配置,can0-2有四个中断,can3-7有三个中断,此处的isr interrupt source在数据手册中查找。

7.General配置

文章来源:https://blog.csdn.net/qq_21513281/article/details/135251307
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。