全部
  • 全部
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
400-048-1230
订阅
  • 首页
  • 解决方案
  • 技术问答
  • 视频中心
  • 知识分享
  • 技术资讯
  • SEED产品
连载 | 带你深入了解NXP汽车通用控制器S32K3(十):CAN FD篇
来源:Arrow 发布:2024/10/24 浏览量:468

继上一篇 连载 | 带你深入了解NXP汽车通用控制器S32K3 ():用S32DS 开发 EB 配置Mcal的工程,今天将详细介绍如何通过一个示例来进一步了解CAN

 

CANCAN FD的区别

 

CAN 全称Controller Area Network — 控制器域网,由BOSCH公司开发, 并最终成为国际标准(ISO11898)。由于其具备的高可靠性和良好的错误检测能力,越来越受到汽车和工业等行业的青睐。但随着近来,汽车功能越来越多,越来越复杂,对CAN的数据负载提出了挑战。传统的CAN传输率最大为1Mbit/s(典型的<= 500kbit/s),数据帧超过50%的额外开销(overhead > 50%)。这两点制约着CAN的发展空间,为了缓解这些制约因素,2011年开始CAN FD协议的开发,于2015 ISO11898-1Classical CANCAN FD)修订版发布。CAN FD支持高达5Mbit/s甚至更高的传输速率,最长64bytes的数据长度,并且与传统CAN成本相差不大,还可以和传统CAN很好的兼容。这些优势促使了CAN FD协议这些年的进一步蓬勃发展。

 

大家可以通过如下几张图,在协议层看一下CANCAN FD的区别

 

我们用的开发板SEED-S32K3B_CORE_V1.0基于S32K344设计,支持 6FlexCAN,且支持CAN FD

 

通过示例了解CAN FD

 

下边我们通过一个示例来进一步了解CAN FD

 

以下实验基于ARROW的开发板SEED-S32K3B_CORE_v1.0

 

  • 软件环境:NXP S32 Design Studio for S32 Platform
  • 测试工具:

 

本文中利用S32DS,从零开始创建一个CAN FD收发工程,数据长度为64 byte

 

首先,看下开发板与CAN FD相关的硬件电路。CAN对外的接口为电路板上的CON2

 

CAN0_STB信号为电平转换芯片TJA1044GT的模式控制脚:

 

 

CAN FDMCU之间的接线如下:

 

现在,我们新建一个空工程,而后双击mex文件,进入图形配置界面

 

接下来添加引脚,包括CAN FD的收发引脚和TJA1044GT的模式控制引脚,并额外添加一个Led指示灯引脚(PTA29),添加完成后,如下图所示:

 

修改红框中的名字,该名字会生成到代码中,在main函数的用户代码中会用到这几个名字

 

进入外设的配置界面

 

如下图添加外设模块,我们的例程用到了FlexCANGPIO、中断这三个模块:

 

外设的配置主要是FlexCANGPIO模块不用配置,如下图我们进入FlexCAN模块的配置

 

设置CAN FD 的波特率,有两个波特率。一个属数据位的波特率,一个是除数据位之外的帧其他部分的波特率。

 

对于中断模块的配置,主要是点一下下图的加号,生成一下列表,其他不需要改动


 至此,我们CAN FD的工程的配置部分就已经结束。

 

接下来我们生成下代码,并进入到代码界面

 用如下代码替换main.c 文件中的内容

 

程序编译完成之后,全速运行工程:

 

打开CAN FD收发模块的上位机软件ECanTools进行数据交互。程序在刚开始阶段会默认先发一帧数据来验证连接是否正常(下图中的第一条数据),帧ID和代码中保持一致,长度与配置和代码中保持一致,为64byte,点击发送,返回结果如下图所示,SEED-S32K3B_CORE板卡的CAN FD和上位机通讯成功。

 

到此,关于S32K CAN FD的基本使用就结束了,大家也可以参考本文在自己的工程里添加CAN FD软件模块。

 

连载阅读 

汽车电子 NXP
请使用浏览器分享功能 请点击右上角,进行分享
关于艾睿 代理产品线 联系我们 条款和条件