NXP S32k3 MCAL CAN &CANFD 配置

应用场景

        最近接触到汽车BMS产品。需要验证硬件开发板CAN&CANFD通信部分,CAN收发器使用TJA1463,本章将基于S32K358介绍 CAN 相关配置。CAN FD的也基本差不多的配置,相关参数打开即可。

原理介绍
        CAN

        S32K358提供8组CAN实例,FLEXCAN0~FLEXCAN7。每组都支持CANFD协议,通过配置可实现CAN通信或CANFD通信。CANFD支持一帧报文64字节的数据传送。CANFD除了设置仲裁段波特率还有一个数据段波特率。以往经验汽车网关中经常将前者设置为500kbps,后者设置为2Mbps。

        CAN的时钟可以选择由芯片内部时钟提供或者外部时钟提供。一般建议使用外部时钟,因为内部时钟可能不稳定增加CAN通信不稳定的因素。

        CANTJA1463对应的驱动也需要配置好,才能使用CANoe建立起链路,从而调试CAN通信。目前一般的CAN收发器驱动代码比较简单。S32K358的Demo板上用的是TJA1153(带功能安全的CAN收发器),这款收发器的驱动代码比较复杂一些,需要配置CAN报文并且发送指定的报文内容才可以驱动TJA1153工作。后续补上TJA1153的代码。

        CAN的采样率设置一般可配置成75%,80%等。采样率由seg1(相位段1),seg2(相位段2),propseg(传输段),syncseg(同步段)这几个参数决定。其中同步段参数固定为1.

                        采样率=(同步段+相位段1+传输段)/ (同步段+相位段1+相位段2+传输段)

例如  seg1 = 3, seg2 = 2 , propseg = 2 , syncseg = 1   

                        则采样率 = (1+2+3)/(1+2+3+2) = 75%

        CAN通信的Block Diagram:

       

配置工具

        工具:S32KDS3.5 。如果不知道如何使用该工具请自行查阅相关指导说明,以下内容默认读者对该软件具有一定的使用经验,比如如何导入例程等。

        软件版本:导入NXP的官方例程(S32K358对应版本),由于汽车行业目前使用EB配置MCAL的居多,可以选择带Autosar封装版本的Demo。导入Autosar接口封装的版本好处在于大部分配置项和EB差不多。NXP也提供了EB版本,但是由于时间有限,后期会在EB上配置该工程并验证。

配置步骤
        CAN 配置

        第一步:导入官方例程,带Autosar封装的版本。配置相关引脚,包含从TJA1463获取状态的引脚以及控制TJA1463相关的引脚。

        第二步:配置CAN时钟

        第三步:添加CANIF组件

        第四步:配置CAN组件,CAN General

        第五步:配置CAN Controller

        第六步:配置CAN HardwareObject 一个CAN controller对应两个CAN HardwareObject(接收和发送)。

      第七步:代码部分(配置了CAN0和ADC6)。以下代码为多张图片,代码是部分截图。

        以上就是配置CAN的全部。

代码详解

        硬件接通好CANoe之后可测试通信(一般会接一个外围电阻120欧姆)。进Read函数,找到对应的buffer数组,可查看CANoe发送的报文。mcu往外发的报文也可通过CANoe观察到。

        使用CANFD时,除了配置里打开相信的CANFD配置,代码里面的报文属性里,有一个是是否使能CANFD。需要将该结构体变量置位1,即使能。

注意事项

        在添加多个CAN 控制器时,添加CAN HardwareObject时,接收类型的Object要连续放在一起,不然CAN接收无法正常通信。

        If u think it's good , pls give a like。 Thanks a lot! 

  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值