S32K344学习

目录

前言

NXP单片机

恩智浦官网

开发环境

开发环境的搭建流程

S32K344学习

相关资料

例程导入

编译下载

JTAG、JLink、ULINK、ST-LINK是什么?区别?

时钟

IO

1、特性:

2、中断和DMA请求:

3、IO引脚类型

4、引脚框图

定时器PIT学习

FlexCAN

TJA1043 can芯片

can分析仪 、上位机软件

波特率设置

配置步骤:

公式总结:

Buad = 1/ Tbit = 1/ (x*Tq)=1/ (x* Div/f)

实例:

安全功能

报错EERROR

1、

2、

疑问


前言

我刚建了个S32K3的群,欢迎大家进群交流学习:613215239。

NXP单片机

有以下几个系列,来自于Chat-GPT

  1. Kinetis系列:
    • 代表型号:Kinetis K64F、Kinetis KL25Z
    • 特点:
      • 基于ARM Cortex-M内核,具有低功耗和高性能的特点。
      • 支持多个外设接口,如GPIO、UART、SPI、I2C等。
      • 提供丰富的开发工具和软件支持,如MCUXpresso IDE。
      • 适用于广泛的应用领域,如工业控制、物联网、汽车电子等。
  2. LPC系列:
    • 代表型号:LPC1768、LPC54608
    • 特点:
      • 基于ARM Cortex-M内核,具有高性能和低功耗的特点。
      • 提供丰富的外设接口和功能,如GPIO、UART、SPI、I2C、USB等。
      • 支持多种通信协议和总线,如CAN、Ethernet等。
      • 集成了丰富的模拟和数字外设,适用于多种应用领域。
  3. S32K系列:
    • 代表型号:S32K144、S32K118
    • 特点:
      • 面向汽车电子应用的车规级单片机。
      • 具备高度集成的外设和安全功能,如CAN、LIN、FlexRay、安全加密等。
      • 支持汽车标准和要求,如ISO 26262安全标准。
      • 适用于车身电子、驱动控制、车载通信等汽车应用领域。
  4. i.MX系列:
    • 代表型号:i.MX6ULL、i.MX8M Mini
    • 特点:
      • 面向嵌入式应用的高性能处理器系列。
      • 支持多核处理器和多媒体功能。
      • 集成了多种外设和接口,如GPIO、UART、SPI、I2C、Ethernet、USB等。
      • 适用于智能家居、工业自动化、医疗设备等多种应用领域。 需要注意的是,以上仅列举了部分恩智浦单片机系列和代表型号,恩智浦还有其他系列和产品,如QorIQ、S12等。每个系列和型号都有不同的特点和应用领域,选择适合自己需求的单片机需要综合考虑性能、功耗、外设接口、开发工具支持等因素。



NXP的S32K系列MCU怎么样? - 知乎

多核处理器的由来
  多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产生过多热量且无法带来相应性能改善,但CPU性能需求大于CPU发展速度。尽管增加流水线提高频率,但缓存增加和漏电流控制不力造成功率大幅增加,性能反而不如之前低频率的CPU。功率增加,散热问题也严重了,风冷已经不能解决问题了。

  那么新技术必须出现-多核处理器。早在1996年就有第一款多核CPU原型Hydra。2001年IBM推出第一个商用多核处理器POWER4,2005年Intal和AMD多核处理器大规模应用。

  多核处理器越来越流行,无论在服务器、桌面、上网本、平板、手机还是医疗设备、国防、航天等方面。

概念
  从硬件的角度来看,多核设计分为两类。如果所有的核心或CPU具有相同的构架,那么定义为同构多核(homogeneous);如果架构不同,那么称为异构(heterogeneous)多核。从应用来看,同构多核处理器中大多数由通用处理器核构成,每个核可以独立运行,类似单核处理器。而异构多核处理器往往同时继承了通用处理器、DSP、FPGA、媒体处理器、网络处理器等。每个内核针对不同的需求设定的,从而提高应用的计算性能或实时性能。

恩智浦官网

官网是最好的一手资料来源!!!学会去官网上找资料,学会搜索方法!!!

S32K344学习_第1张图片

恩智浦 S32K3  在这里能找到官方的培训PPT在这里能找到官方的 软件和芯片外设培训PPT、数据手册、参考手册、MCU解决方案等等。

官网下载软件包界面的解释:

S32K344学习_第2张图片

截取来自恩智浦官网S32K3 - S32 Design Studio

图中① 文档理解是:可以选择是先前的版本还是当下的版本。

名词解释:

3.3有三个版本,3.3是最先的版本,之后的两个是3.3的升级版:

"S32 Design Studio 3.3 Update 1 for S32K3"和"S32 Design Studio 3.3 Update 1 with support for S32K3"都是软件的更新压缩包,而不是独立的软件包。 这两个更新压缩包是为了在S32 Design Studio 3.3的基础上添加对S32K3系列微控制器的支持和功能。当你已经安装了S32 Design Studio 3.3后,你可以从NXP官网下载这两个更新压缩包,并将其解压缩到你的S32 Design Studio 3.3安装目录下。 "S32 Design Studio 3.3 Update 1 for S32K3"和"S32 Design Studio 3.3 Update 1 with support for S32K3"会更新和替换一些现有的文件和组件,以添加对S32K3系列的支持。这样,你就可以使用S32 Design Studio 3.3的功能和工具来开发S32K3系列微控制器的应用程序。 请注意,为了使用这两个更新压缩包,你必须先安装S32 Design Studio 3.3,并确保你的开发环境符合系统要求。

其中有对于软件版本的描述(见图中②):

"Maturity level: EAR"和"Maturity level: RTM"是软件版本的成熟度级别的表示。

  1. Maturity level: EAR(Early Access Release)代表早期访问版本。这是软件开发过程中的一个阶段,通常是在正式发布之前提供给用户的测试版本。EAR版本通常包含新功能、改进和修复,但可能还存在一些问题和缺陷。它主要面向开发者和技术爱好者,以便他们提前了解和体验新功能,并提供反馈和建议。
  2. Maturity level: RTM(Release to Manufacturing)代表面向制造业的发布版本。这是软件的正式发布版本,经过了充分的测试和验证,被认为已经稳定且可靠。RTM版本通常是供最终用户使用的,以满足他们的实际需求。 总结而言,EAR版本是早期访问版本,面向开发者和技术爱好者,用于提前了解和测试新功能;而RTM版本是面向最终用户的正式发布版本,被认为稳定可靠,用于实际应用。

SDK版本说明:

EAR:Early Assess Release,早期评价版,是SDK最先发布的版本,提供基本的SDK功能,可以做为早期软件评价使用。
BETA:Beta版是修复EAR版若干Bug后发布的SDK版本,相较于EAR版本,功能更加完善。
RTM:Ready To Manufacture,最终量产版本,提供最完善的API接口及外设IP配置选项,修复

学会如何找到所需的文件,非常重要!!!

根据上面的名词解释,寻找所需的文件。

开发环境

S32 Design Studio for S32 Platform、S32 Design Studio for ARM和S32 Design Studio IDE是针对不同的硬件平台和开发需求而设计的软件开发工具。它们之间的区别如下:

1、S32 Design Studio for S32 Platform:

S32 Design Studio for S32 Platform是专门为NXP S32平台(包括S32K、S32S、S32V等系列)的单片机和微控制器开发的集成开发环境(IDE)。

它提供了针对S32平台的特定功能和外设的支持,包括代码编辑器、编译器、调试器等,用于开发S32平台的应用程序。

S32 Design Studio for S32 Platform提供了专用的示例代码、驱动程序和工程模板,以加快S32平台的开发过程。

2、S32 Design Studio for ARM:

S32 Design Studio for ARM是为ARM架构的微控制器开发的集成开发环境(IDE)。

它支持多种ARM内核和系列的微控制器,包括S32平台的部分系列(如S32K系列)。

S32 Design Studio for ARM提供了一些通用的示例代码、驱动程序和工程模板,可用于ARM架构的微控制器开发,但在S32平台的特定功能和外设的支持上可能相对较少。

3、S32 Design Studio IDE:

S32 Design Studio IDE是NXP公司开发的通用集成开发环境(IDE),适用于处理器和微控制器的软件开发。

它支持多种NXP处理器和微控制器的开发,包括S32平台、Kinetis系列、LPC系列等。

S32 Design Studio IDE提供了一些通用的示例代码、驱动程序和工程模板,可用于各种NXP处理器和微控制器的开发,但在特定硬件平台的特定功能和外设的支持上可能相对较少。 总结来说,S32 Design Studio for S32 Platform是专门为S32平台的单片机和微控制器开发的IDE,提供了针对S32平台的特定功能和外设的支持;S32 Design Studio for ARM是为ARM架构的微控制器开发的IDE,也支持部分S32平台的系列,但在特定功能和外设的支持上可能相对较少;S32 Design Studio IDE是通用的NXP处理器和微控制器开发IDE,提供了一些通用的示例代码和驱动程序,可用于多种NXP处理器和微控制器的开发。

摘取自官方的文档:

S32K344学习_第3张图片

个人理解:

有好多开发软件,针对不同MCU以及应用场景。

1用于S32系列,3适用范围更广(S32平台、Kinetis系列、LPC系列等),2主要针对ARM架构

PS:除了ARM架构,恩智浦还有其他架构的处理器:(下面是Chat-GPT提供)

  1. Power Architecture(PowerPC)架构:Power Architecture是一种RISC架构,最初由IBM开发。NXP的一些单片机(如Qorivva MPC5xxx系列)采用了Power Architecture。
  2. ColdFire架构:ColdFire架构是Motorola(现在的NXP)开发的32位微处理器架构,基于Motorola 68000系列的改进。NXP的一些单片机(如ColdFire V1、V2、V3和V4系列)采用了ColdFire架构。
  3. HCS08架构:HCS08架构是NXP为嵌入式系统设计开发的8位微控制器架构,具有低功耗、高性能和丰富的外设资源。HCS08架构的单片机广泛应用于汽车、电子消费品和工业控制等领域。
  4. HC12架构:HC12架构是Motorola(现在的NXP)开发的16位微控制器架构,具有强大的计算能力和丰富的外设资源。HC12架构的单片机广泛应用于汽车、电子消费品和工业控制等领域。

由于工作需要,学习S32K344(车规级双核芯片)。

开发环境是S32DS:

此时3.4版本稳定,所以下载的是3.4版本。主要有两种开发方式,EB是另外一种,目前我采用第二种方式开发 RTD。

S32K344学习_第4张图片

RTD(Real Time Drivers)是NXP官方新出的一个软件平台,它结合了 AUTOSAR 和专有软件体系结构的低级驱动程序,也就是说将以前的 MCAL 和 SDK 合并到了一个软件平台,它带来的好处有:

  • 适用于 AUTOSAR 的高级接口,适用于非 AUTOSAR 的低级接口
  • 兼容 S32 处理器解决方案
  • 符合 ISO26262 功能安全等级(最高可达到 ASIL D)
  • 综合代码质量变高
  • 免费:
    • S32K3 的 MCAL 免费
    • S32K1中 MCAL 有费用,但是使用 RTD 配置 MCAL 是免费的

由于 RTD 保留了两套接口(MCAL 以及 SDK 风格的API),使用的配置工具也有两套(EB Tresos Studio 和 S32 Design Studio),为了区分两种接口,我们使用“RTD MCAL”和“RTD LLD(Low Level Driver)”来将两者区分开,“RTD MCAL”对应 MCAL,“RTD LLD”对应以前的 SDK。LLD 的配置界面已经更加偏向 MCAL 的配置风格了,但是 API 层面还是两套接口,可以让以前 SDK 用户最大程度保持之前的习惯。

来自官方对RTD的介绍:

S32-based platform products offer Real Time Drivers (RTD) software supporting both AUTOSAR and non-AUTOSAR (similar to traditional SDKs) applications. Both are ISO 26262 functional safety compliant up to ASIL D.
A wide range of standard low-level drivers (LLD) and complex device drivers (CDD) create a rich ecosystem integrated into a unified development environment with highly optimized code. Each driver provides two sets of APIs: one compliant with AUTOSAR and the other directly accessing the hardware. For a non-AUTOSAR application, any interface can be used, according to the scope of the application.

基于S32的平台产品提供实时驱动程序(RTD)软件,支持AUTOSAR和非AUTOSAR(类似于传统的SDK)应用程序。两者都符合ISO 26262功能安全标准,达到ASIL D。
广泛的标准低级驱动程序(LLD)和复杂设备驱动程序(CDD)创建了一个丰富的生态系统,集成到具有高度优化代码的统一开发环境中。每个驱动程序提供两组API:一组与AUTOSAR兼容,另一组直接访问硬件。对于非AUTOSAR应用程序,根据应用程序的范围,可以使用任何接口。

硬件是:

S32K3x4-Q172通用开发板  S32K3x4-Q172通用开发板

S32K344学习_第5张图片

下面是同款的电机开发套件:

MCSPTE1AK344是一款开发套件,专用于无刷直流(BLDC)电机控制(面向制热、通风和空调(HVAC)及电动泵)和三相永磁同步电动机(PMSM)控制(面向主动悬架或电动传动系统、eTurbo或皮带起动发电机)。

它基于32位Arm® Cortex®-M7 S32K3微控制器和GD3000预驱动器,可以快速原型设计和评估BLDC和PMSM电机控制应用,而无需等待最终的硬件设计。

MCSPTE1AK344应用软件能够充分利用汽车计算和电机控制库(AMMCLib)套件及实时驱动程序(RTD)软件包,提供3相BLDC和PMSM电机控制应用的完整参考实施。

RTD软件可为AUTOSAR®和非AUTOSAR环境构建电机控制应用。

S32K344学习_第6张图片

 S32K344学习_第7张图片

Get Started with the MCSPTE1AK344 Development Kit | NXP Semiconductors

电机开发套件资料↑

开发环境的搭建流程

主要参考博文:

1、超详细S32K344 开发环境的搭建教程!_WPG大大通的博客-CSDN博客

(好几个软件包,下载地址找不到(不知道什么原因),可以结合下面这个篇博文看看。)

2、【S32K 进阶之旅】S32K3 RTD MCAL 开发环境搭建(详细教程)

该文给出了下载地址(但是不知道怎么在官网一步步找到这个地址)

https://nxp.flexnetoperations.com/control/frse/product?entitlementId=98472408&lineNum=1&authContactId=78954348&authPartyId=52135888

基于RTD开发的S32DS安装流程:S32K3xx实时驱动程序(RTD)安装指南-培训

主要分为三步:

第一步参考博文2、的链接 。二三步参考博文1、的链接。

①需要下载以下三个安装包:

S32DS V3.5 软件(SW32K3xx_S32 DS_3.5.0_D2303)
基础开发包(4_R21-11_3.0.0_D2303)
RTD 包(4_R21-11_3.0.0_D2303_DS_updatesite)

②安装S32DSV3.5 软件,打开S32DSV3.5软件加载基础开发包和RTD包(SDK)

第二步好像可以通过软件联网下载,不过这边采用官网下载安装包,在软件里面导入。

打开软件,会有联网下载方式

S32K344学习_第8张图片

基础安装包的内容:

  1. PEMicro Software:PEMicro Software是一家专注于嵌入式系统开发工具的软件公司。安装PEMicro Software是为了使用他们提供的调试器、编程器、仿真器等工具,以支持嵌入式系统的开发和调试。根据具体需求,如果需要使用PEMicro提供的工具,则PEMicro Software是必须安装的。
  2. S32 Design Studio:S32 Design Studio是NXP公司提供的一款集成开发环境(IDE),用于开发基于NXP S32系列微控制器的嵌入式应用程序。S32 Design Studio提供了代码编辑器、编译器、调试器和仿真器等开发工具,帮助开发人员进行嵌入式软件的开发、调试和部署。安装S32 Design Studio是必须的,因为它是进行S32系列微控制器开发的主要开发环境。
  3. S32 Design Studio S32K3 FreeMASTER:S32 Design Studio S32K3 FreeMASTER是S32 Design Studio的一个插件,用于实时监控和调试嵌入式系统。它提供了一个直观的图形界面,可以实时监视和控制嵌入式系统的参数和变量。安装S32 Design Studio S32K3 FreeMASTER是可选的,如果需要使用FreeMASTER进行实时监控和调试,则需要安装此插件。
  4. S32 Design Studio S32K3xx development package 3.4.3:S32 Design Studio S32K3xx development package是用于支持S32K3xx系列微控制器开发的软件包。它提供了与S32 Design Studio集成的工具和库,以便开发人员可以针对S32K3xx系列微控制器进行开发。安装S32 Design Studio S32K3xx development package是可选的,如果您计划使用S32K3xx系列微控制器进行开发,则需要安装此软件包。
  5. S32 Design Studio Tools GCC 10.2 Build 1728:S32 Design Studio Tools GCC 10.2 Build是S32 Design Studio的GCC 10.2版本的构建工具链。它用于编译和构建嵌入式应用程序。安装S32 Design Studio Tools GCC 10.2 Build是可选的,如果您需要使用GCC 10.2版本的编译器进行开发,则需要安装此工具链。
  6. S32 Design Studio Tools GCC 9.2 Build 1649:S32 Design Studio Tools GCC 9.2 Build是S32 Design Studio的GCC 9.2版本的构建工具链。它也用于编译和构建嵌入式应用程序。安装S32 Design Studio Tools GCC 9.2 Build是可选的,如果您需要使用GCC 9.2版本的编译器进行开发,则需要安装此工具链。

③导入示例工程,进行程序的编译。

1、打开 S32DS 3.5,进入菜单栏“File->New->S32DS Project from Example”,进入如下图 3.1 所示界面,选择相应的例程(若没有出现 S32K344 的例程,则需要重新加载 RTD 包),点击“Finish”。

S32K344学习_第9张图片

图 3.1 选取程序例程界面

导入例程编译并不能通过,因为缺少配置文件。在官方的工程描述中有提及,所以要进行之后的步骤。

S32K344学习_第10张图片

2、如图 3.2 所示,双击 .mex 文件,进入到配置界面。

S32K344学习_第11张图片

3、如图 3.3 所示,点击“更新源代码”,并在接下来出现的界面点击“OK”。S32K344学习_第12张图片

4、点击右上角的“C/C++”图标,返回程序编写界面。
S32K344学习_第13张图片

5、如图 3.5 所示,更新源代码之后,会重生成一些文件,点击左上角的编译按钮,等待几秒之后右下角会显示程序编译完成。

S32K344学习_第14张图片

6、至此,S32K344 的例程运行成功

注意:若不经过2、之后的步骤,编译程序会报错。

显示一堆头文件未包含:Mcu.h Gpt.h 等等未包含,报错。我以为是头文件路径没加对,折腾半天,后面发现没有配置,猜测2、之后的步骤是为了生成配置文件Mcu.h等等。

S32K344学习

相关资料

恩智浦 S32K3系列微控制器简介-CSDN博客

S32K汽车通用MCU | NXP 半导体

【专业技术贴】S32DS IDE使用Tips

S32DS使用Tips--SDK使用常见问题(FAQ)答疑

S32K SDK使用详解之S32 SDK软件编程思想详解_s32sdk_s32k3xx_rtm_4.0.1_zhengyad123的博客-CSDN博客

例程导入

S32K344学习_第15张图片

不管是NXP还是其他厂商的芯片,官方例程是很好的学习资源。上图是S32K344芯片的例程导入,右边描述翻译看看,介绍例程。

导入后,可以看到文件夹结构:

−Includes:工具链头文件。

−Project_Settings:启动和系统代码,以及链接器文件。

−Include:工程驱动文件。

−Src:主文件的源文件夹。

−RTD:包括来自RTD的(低压)驱动

−Board:板级支持。用于S32CT配置文件的配置工具文件夹(时钟和引脚)。

−Generate:外围配置文件(配置工具生成的)

−Project.mex文件:它保存配置工具的所有设置

......

编译下载

手头有一个JTAG/SWD仿真器,后面发现电脑上有JLink的驱动,以及S32DS有JLink下载的选项,然后就在想这两者什么区别。以下是搜到的资料:(后面明白了,是自己孤落寡闻了,JLink是协议,JTAG是硬件(仿真器))

JTAG、JLink、ULINK、ST-LINK是什么?区别?

JTAG是一种并行协议;LINK是让JTAG支持串口USB的转换器;ULINK是KEIL专用的仿真器,增加了一些功能;ST-LINK是STM8和STM32的专用仿真器。

JTAG协议
JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、 TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。 相关JTAG引脚的定义为:

TMS:测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;
TCK:测试时钟输入;
TDI:测试数据输入,数据通过TDI引脚输入JTAG接口;
TDO:测试数据输出,数据通过TDO引 脚从JTAG接口输出;

JTAG协议在定义时,由于当时的计算机(PC机)普遍带有并口,因而在连接计算机端是定义使用的并口。而计算机到了今天,不要说笔记本电脑,现在台式计算机上面有并口的都很少了,取而代之的是越来越多的USB接口。那么能不能让JTAG支持USB协议,用USB接口来调试ARM呢?这就要说到JLINK和ULINK了。

JLink仿真器
J-Link是德国SEGGER公司推出基于JTAG的仿真器。简单地说,是给一个JTAG协议转换盒,即一个小型USB到JTAG的转换盒,其连接到计算机用的是USB接口,而到目标板内部用的还是jtag协议。它完成了一个从软件到硬件转换的工作。

ULINK仿真器
ULINK是ARM/KEIL公司推出的仿真器,目前网上可找到的是其升级版本,ULINK2和ULINKPro仿真器。ULINK/ULINK2可以配合Keil软件实现仿真功能,并且仅可以在Keil软件上使用,增加了串行调试(SWD)支持加了串行调试(SWD)支持加了串行调试(SWD)支持加了串行调试(SWD)。

ST-LINK
ST-LINK是专门针对意法半导体STM8和STM32系列芯片的仿真器。

你了解JLink、ST-Link、ULink、JTAG、SWD、SWIM的区别吗 - 知乎

仿真器供电一般不足以驱动芯片工作,所以都要加上外部供电。

步骤:

配置仿真烧录文件

S32K344学习_第16张图片

小甲虫→Debug Configurations...

S32K344学习_第17张图片

①JLink就选择双击该项,若是PE仿真器则点⑤处,双击后会新建一个仿真烧录文件,右键可以删除。

②点击

③在此处填上芯片设备

④选择JTAG(JLink就是基于JTAG)

基本就配置完成了

时钟

  1. FXOSC(Fast Oscillator):FXOSC是指用于提供高频时钟信号的振荡器。它通常用于处理器核心、高速外设和其他需要高频时钟信号的部件。FXOSC的频率通常较高,用于支持快速的数据处理和高性能的操作。
  2. SXOSC(Slow Oscillator):SXOSC是指用于提供低频时钟信号的振荡器。它通常用于低功耗模式、实时时钟(RTC)或其他需要较低频率时钟信号的部件。SXOSC的频率通常较低,用于支持低功耗操作和长时间运行。 

IO

1、特性:

一个端口(PTA ~ PTG)包括最多32个引脚,可以并行输出或输入。(16个引脚为一组)

2、中断和DMA请求:

  • 32个IRQ引脚–每8个引脚共享一个中断矢量。
  • 上升沿或下降沿,带数字毛刺滤波器。
  • 16个引脚链接到DMA请求。

S32K344学习_第18张图片

两个电源域:VDD_HV_A和VDD_HV_B

  • 可以在不同的S32K3引脚上同时施加3.3 V和5 V电压

3、IO引脚类型

S32K344学习_第19张图片

4、引脚框图

S32K344学习_第20张图片

IO 口按照A、B、C、D、E、F、G编号分成了7组(以 BGA257 为例),每组有0~31号共32个IO口,而H和L分别代表高16位和低16位,所以 PTA29实际属于高16位的第13-Pin,其他引脚以此类推。

配置和控制Siul2(System Integration Unit Lite 2)模块的软件库

"Siul2_Dio"是指用于数字输入/输出控制的SiUL2模块中的相关功能。它提供了对数字引脚的配置、读取和写入等操作的接口。

"Siul2_Port"是指用于管理一组引脚或接口的SiUL2模块中的相关功能。它允许对引脚的配置、中断处理、电气特性和其他参数进行设置和控制。

[S32K3从0入门]S32DS工程创建及烧录_s32ds烧录程序_ct5ctl的博客-CSDN博客

【S32K3系列GPIO及其中断使用介绍】_s32k3can中段标志_何飞阳的博客-CSDN博客

定时器PIT学习

【S32K学习笔记】PIT_trgmux_且听风吟_YU的博客-CSDN博客

S32K3 Timer(PIT STM)使用介绍 ——基于LLD

FlexCAN

DB9插针Pin脚定义:Pin2-->CAN-LOW ;Pin7-->CAN-High (2低7高)

TJA1043 can芯片

引脚:

S32K344学习_第21张图片

连接:

VCC,连接5V;VBAT,连接电源;INH,连接电源芯片使能端;VIO,连接MCU电压;

TXD,数据输出;RXD,数据接收;

CANL,can低输出;CANH,can高输出;

STB_N,连接MCU的GPIO;EN,连接MCU的GPIO;(这两引脚决定工作模式)

VIO

引脚VIO应连接到微控制器的电源电压。这将导致引脚TXD、RXD、STB_N、EN和ERR_N的信号电平被调整到微控制器的I/O电平,实现与不同电平(3.3V---5V)设备的接口兼容性。

唤醒与休眠工作机制

休眠机制:控制器在一段时间接收不到网络管理或特定CAN帧,控制器的主芯片MCU通过GPIO口控制TJA1043 CAN芯片管脚STB_N为低电平和管脚EN为高电平,经过最小保持时间后芯片进入休眠模式,CAN芯片INH管脚置低。TLE8366电源芯片使能管脚EN置低(INH连接至电源管理芯片EN脚),停止输出主5V电源,主芯片不工作,整个控制器断电不再工作。TJA1043进入低功耗状态,仅由汽车电池对管脚VBAT提供基础工作电源。

唤醒机制:控制器收到网络管理或特定CAN帧,TJA1043短时唤醒,INH管脚置高。电源芯片使能管脚EN置高(INH连接至电源管理芯片EN脚)开始输出主5V电源,主芯片开始工作,MCU进入工作状态后立即控制CAN TJA1043芯片管脚STB_N为高电平和EN为高电平,使TJA1043从休眠模式进入待机模式后开始正常工作。

can分析仪 、上位机软件

2路CAN转 USB

S32K344学习_第22张图片

接线只需CANH CANL两根线,不需要连接地线。

用的是上图的can盒,can指示灯只有通信(收发报文)的时候会亮,其余时刻灭,所以插上不会亮,并不代表没连接成功。(曾一度怀疑没接好,后面才发现是CAN的时钟没配置对,哭死)

上位机软件是周立功的CAN Test,选择对应设备端口以及配置波特率,过滤ID等等。

S32K344学习_第23张图片

单片机配置正确的波特率,CAN连接上后,发送数据才能成功。如果代码配置不对,一直点发送,会显示发送失败。(不像一些串口的软件,接线发送能发,能不能收到不知道。该软件建立CAN连接后发送数据才能成功 )

波特率设置

配置步骤:

①确定需要的波特率 

②进而确定时钟源、分频值 

③算出一共有多少Tq,合理分配

下列公式来自官方手册(S32K3参考手册74.3.10.8 Protocol timing对位定时详细描述):
Tq=(PRESDIV + 1)/fCANCLK
CAN bit time = (Number of time quanta in 1 bit time) × Tq
Bit rate =1/CAN bit time
 

公式总结:

记波特率为Buad(含义:比特速率(波特率)=1s/1 CAN bit 时间, 即单位时间传输多少比特),输入CAN的频率为f(需分频),分频值为Div,Tbit 为CAN 传输1bit的时间,Tq为(Tbit的)时间段(每个Bit Time被分为多个时间段Tq:同步段    传播时间段    相位缓冲段1    相位缓冲段2),x为Tq的总数(每个时间段需配置Tq的个数)

Tq=Div / f

Tbit= x *Tq

Buad = 1/ Tbit = 1/ (x*Tq)=1/ (x* Div/f)

实例:

①确定波特率:倘若要波特率500kbps

②确定时钟源:FlexCAN的时钟源 AIPS_PLAT_CLK=80M ,分频设置为10

S32K344学习_第24张图片

③算出一共有多少Tq,合理分配:

500kbps=1/(x*(10/80M))

得x=16,将x分配至各个时间段

S32K344学习_第25张图片

其中采样位置计算为:
Samping  position = 1 - (PhaseSegment2 / ( SynchronizationSegment + PropagationSegment + PhaseSegment1 + PhaseSegment2)* 100%)

CAN FD数据速率的计算方式也一样。

PS:

有关采样点的配置,根据CiA(CAN in Automation)的建议是:
(1)一般配置在75-80%的位置
(2)选择采样点位置在85%左右为佳
(3)波特率 > 800K:75%  波特率 > 500K:80%  波特率 <= 500K:87.5%

同步段 传播时间段 相位缓冲段1 相位缓冲段2
各位段 SS PTS PBS1 PBS2
通常是1 根据实际传输线长大致估算 除去前面两段后平分

S32K344学习_第26张图片

gAutosar通信入门系列01-CAN通信位时间、Tq及采样点同步_can tq_initiallizer_行稳致远的博客-CSDN博客

CAN位时序及相关参数 - 知乎

CAN通讯之位定时与同步 - 知乎

CAN总线的同步有哪几种

S32K的bootloader CAN总线实现_s32k bootloader_阿衰0110的博客-CSDN博客

  • CAN协议内部自带CRC校验,因此不需要在数据帧中加入校验字节

  • CAN协议内部自带ACK段,因此使用CAN发送数据出去,在总线上必须有设备接收此包数据,否则会导致发送端根据ACK段判断数据发送失败,如果同时使能了自动重发,则需要发送的数据会一直堵塞在发送FIFO,导致其他数据发送不出去!

安全功能

小猫爪:S32K3学习笔记09-S32K3之Safety简介_小猫爪的博客-CSDN博客

报错EERROR

1、

原本第一次报错:

make: *** [makefile:39: Pit_Ip_example_S32K344.elf] Error 1   

错误信息太少,根本不知道哪里有错。

进行下面的操作:

工程右键 Clean Project,再Build Project(清除构建目录并重新构建的原因有二:其一、有时候,构建目录中的一些临时文件可能会导致编译错误。其二、可以产生具体的错误信息方便查阅)

清除后再编译,会多许多错误信息:
selected processor does not support `bkpt #0' in ARM mode  
selected processor does not support `bkpt #0' in ARM mode   
selected processor does not support `dsb' in ARM mode   
selected processor does not support `isb' in ARM mode  

芯片封装选错了吧。(封装不同,S32K344有 172MQFP 和257BGA封装)

更换封装会导致配置信息被更改。更换后编译还是有错误。不知道为什么,还没解决。不过我重新创建工程了。

所以一定不要选错型号!就算找到解决办法,不同封装之间资源不兼容,很多配置会被修改。


续上个EERROR

经过多次尝试还是没解决。

官方例程是257 BGA封装,手头上的开发板是172的。

第一次编译下载例程都没问题,第二次改一点点代码都会报错(还是上述的报错)。

再去修改完封装还是解决不了。

就算一开始就修改封装172也是一样,第一次编译下载没问题,第二次修改一点点代码都会报错(还是上述的报错)。


最终解决了。原因是配置问题。

之前编译链工具 10.2版本烧录下不进去,然后修改为9.2可以烧录了。但是这为后面编译埋下坑!!!(修改了编译链工具,编译就出问题了,那时候烧录不了是烧录配置的问题,跟编译链工具没太大关系)

S32K344学习_第27张图片

就算修改回10.2也不行了。只能重新来。配置10.2编译链工具(编译才能成功),配置对烧录(才能下载)。

烧录的话,官方例程与我的烧录情况不同,自己需要配置。并不是下图官方例程所示的配置。而是 ${eclipse_home}../Drivers/Segger/JLinkGDBServerCL.exe

S32K344学习_第28张图片

总结:

工程右键 Clean Project,再Build Project。(清除构建目录并重新构建的原因有二:其一、有时候,构建目录中的一些临时文件可能会导致编译错误,所以有时候工程报错,试着把这些clean,再次编译可能会好些。其二、可以产生具体的错误信息方便查阅)

编译链不要随意修改。由于烧录不进去,把10.2更换为9.2可以烧录(其实正确做法看③),导致后续工程根本无法编译成功。

编译链修改会导致一堆配置变更,就算你变回原先的也不好使了。

比如:原先10.2,改为9.2后又要改回10.2,但是很多配置变更了。

10.2的配置是这样。

S32K344学习_第29张图片

改成9.2配置全变了(换成10.2也变不回去了)

S32K344学习_第30张图片

③烧录不进去,有可能是配置问题。

Executalb : ${eclipse_home}../Drivers/Segger/JLinkGDBServerCL.exe

需要根据你自己的使用情况选择。我手头上用的是Segger的 JTAG/SWD仿真器。

S32K344学习_第31张图片

一般都是采用配置工具配置外设,生成驱动代码。然后再自己写逻辑代码。

通过图形化配置后,生成代码。main.c中需要包含相应的头文件,一般都是一些以IP.h为结尾的文件,比如Pit_IP.h ,Can_IP.h 等等。

在S32DS的工程中,以IP为结尾的.h文件是指特定外设模块的配置文件,其中IP是指Integrated Peripherals的缩写。 Integrated Peripherals是指集成外设,也就是芯片内部集成的各种外设模块,如UART、SPI、I2C、CAN等。这些外设模块提供了各种功能和接口,用于与外部设备进行通信和控制。 以IP为结尾的.h文件通常包含了与特定外设模块相关的寄存器定义、配置参数和函数接口等内容。通过包含这些.h文件,可以方便地使用和配置特定外设模块,加快开发过程。 以Pit_IP.h为例,其中的IP代表PIT(Periodic Interrupt Timer)。PIT是一种定时器模块,用于生成周期性的中断信号。Pit_IP.h文件提供了与PIT模块相关的寄存器定义和配置参数,以及控制PIT模块的函数接口。

2、

导入别的工程后编译报错:

Description Resource Path Location Type
make: *** [src/unified_stack/auto_lib/src/subdir.mk:20: src/unified_stack/auto_lib/src/autolibc.o] Error 1 S32K344_CAN_bootlloader_RTD2d0 C/C++ Problem
make: *** [src/unified_stack/UDS_stack/TP/src/LIN_TP/subdir.mk:23: src/unified_stack/UDS_stack/TP/src/LIN_TP/LIN_tp.o] Error 1 S32K344_CAN_bootlloader_RTD2d0 C/C++ Problem
make: *** [src/unified_stack/UDS_stack/UDS/src/subdir.mk:23: src/unified_stack/UDS_stack/UDS/src/uds_app_cfg.o] Error 1 S32K344_CAN_bootlloader_RTD2d0 C/C++ Problem
make: *** [src/unified_stack/UDS_stack/UDS/src/subdir.mk:23: src/unified_stack/UDS_stack/UDS/src/uds_app.o] Error 1 S32K344_CAN_bootlloader_RTD2d0 C/C++ Problem
make: *** Waiting for unfinished jobs.... S32K344_CAN_bootlloader_RTD2d0 C/C++ Problem

可能原因:

1. Make sure you have installed the correct RTD version. S32 DS V3.4 + RTD 2.0.0
2. Make sure the working path does not contain Chinese characters

一个是(SDK+编译器)版本不对,一个是路径有中文(中文不行,空格也不行!!!)。

疑问

can的 FIFO 和邮箱MB 的方式 有啥区别

以及采用配置工具生成的回调函数和采用中断号有啥区别?

S32K344学习_第32张图片

S32K344学习_第33张图片

各模块学习笔记:

S32K344之PSMC(电机控制模块)-CSDN博客

S32K344之eMIOS-CSDN博客

S32K344之TRGMUX-CSDN博客

专栏持续更新中...

博客注释:

【见某某内容】

(补充内容)

摘用手册的资料

  • 分点

其他:

 S32DS  博客

S32DS3.5平台工程文件建立及配置工具使用_语明芃的博客-CSDN博客

S32K学习(一)S32DS入门及相关配置 - 知乎

S32DS IDE使用Tips--参考汽车电子expert成长之路_s32ds是干什么的_woshizuopie的博客-CSDN博客

其他

百度搜索: 百度安全验证

[S32K3从0入门]NXP S32K3 环境安装及配置_ct5ctl的博客-CSDN博客

S32DS_Platfrom_3.4 安装_wlwx66的博客-CSDN博客

你可能感兴趣的:(汽车领域,#,S32K344车规级芯片,嵌入式硬件)