NXP S32K358 davinci cfg can驱动配置

本文详细解释了NXPS32K358中的8路CAN接口,包括增强型CAN(FlexCan0-2)和传统CAN(FlexCan3-7)的配置,涉及波特率、采样点设置、FilterMask、硬件配置以及轮询和中断方式的使用。
摘要由CSDN通过智能技术生成

       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配置

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值