目录
前言
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。
有以下几个系列,来自于Chat-GPT
NXP的S32K系列MCU怎么样? - 知乎
多核处理器的由来
多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产生过多热量且无法带来相应性能改善,但CPU性能需求大于CPU发展速度。尽管增加流水线提高频率,但缓存增加和漏电流控制不力造成功率大幅增加,性能反而不如之前低频率的CPU。功率增加,散热问题也严重了,风冷已经不能解决问题了。
那么新技术必须出现-多核处理器。早在1996年就有第一款多核CPU原型Hydra。2001年IBM推出第一个商用多核处理器POWER4,2005年Intal和AMD多核处理器大规模应用。
多核处理器越来越流行,无论在服务器、桌面、上网本、平板、手机还是医疗设备、国防、航天等方面。
概念
从硬件的角度来看,多核设计分为两类。如果所有的核心或CPU具有相同的构架,那么定义为同构多核(homogeneous);如果架构不同,那么称为异构(heterogeneous)多核。从应用来看,同构多核处理器中大多数由通用处理器核构成,每个核可以独立运行,类似单核处理器。而异构多核处理器往往同时继承了通用处理器、DSP、FPGA、媒体处理器、网络处理器等。每个内核针对不同的需求设定的,从而提高应用的计算性能或实时性能。
官网是最好的一手资料来源!!!学会去官网上找资料,学会搜索方法!!!
恩智浦 S32K3 在这里能找到官方的培训PPT在这里能找到官方的 软件和芯片外设培训PPT、数据手册、参考手册、MCU解决方案等等。
官网下载软件包界面的解释:
截取来自恩智浦官网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"是软件版本的成熟度级别的表示。
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处理器和微控制器的开发。
摘取自官方的文档:
个人理解:
有好多开发软件,针对不同MCU以及应用场景。
1用于S32系列,3适用范围更广(S32平台、Kinetis系列、LPC系列等),2主要针对ARM架构
PS:除了ARM架构,恩智浦还有其他架构的处理器:(下面是Chat-GPT提供)
由于工作需要,学习S32K344(车规级双核芯片)。
开发环境是S32DS:
此时3.4版本稳定,所以下载的是3.4版本。主要有两种开发方式,EB是另外一种,目前我采用第二种方式开发 RTD。
RTD(Real Time Drivers)是NXP官方新出的一个软件平台,它结合了 AUTOSAR 和专有软件体系结构的低级驱动程序,也就是说将以前的 MCAL 和 SDK 合并到了一个软件平台,它带来的好处有:
由于 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通用开发板
下面是同款的电机开发套件:
MCSPTE1AK344是一款开发套件,专用于无刷直流(BLDC)电机控制(面向制热、通风和空调(HVAC)及电动泵)和三相永磁同步电动机(PMSM)控制(面向主动悬架或电动传动系统、eTurbo或皮带起动发电机)。
它基于32位Arm® Cortex®-M7 S32K3微控制器和GD3000预驱动器,可以快速原型设计和评估BLDC和PMSM电机控制应用,而无需等待最终的硬件设计。
MCSPTE1AK344应用软件能够充分利用汽车计算和电机控制库(AMMCLib)套件及实时驱动程序(RTD)软件包,提供3相BLDC和PMSM电机控制应用的完整参考实施。
RTD软件可为AUTOSAR®和非AUTOSAR环境构建电机控制应用。
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)
第二步好像可以通过软件联网下载,不过这边采用官网下载安装包,在软件里面导入。
打开软件,会有联网下载方式
基础安装包的内容:
③导入示例工程,进行程序的编译。
1、打开 S32DS 3.5,进入菜单栏“File->New->S32DS Project from Example”,进入如下图 3.1 所示界面,选择相应的例程(若没有出现 S32K344 的例程,则需要重新加载 RTD 包),点击“Finish”。
图 3.1 选取程序例程界面
导入例程编译并不能通过,因为缺少配置文件。在官方的工程描述中有提及,所以要进行之后的步骤。
2、如图 3.2 所示,双击 .mex 文件,进入到配置界面。
3、如图 3.3 所示,点击“更新源代码”,并在接下来出现的界面点击“OK”。
5、如图 3.5 所示,更新源代码之后,会重生成一些文件,点击左上角的编译按钮,等待几秒之后右下角会显示程序编译完成。
6、至此,S32K344 的例程运行成功
注意:若不经过2、之后的步骤,编译程序会报错。
显示一堆头文件未包含:Mcu.h Gpt.h 等等未包含,报错。我以为是头文件路径没加对,折腾半天,后面发现没有配置,猜测2、之后的步骤是为了生成配置文件Mcu.h等等。
恩智浦 S32K3系列微控制器简介-CSDN博客
S32K汽车通用MCU | NXP 半导体
【专业技术贴】S32DS IDE使用Tips
S32DS使用Tips--SDK使用常见问题(FAQ)答疑
S32K SDK使用详解之S32 SDK软件编程思想详解_s32sdk_s32k3xx_rtm_4.0.1_zhengyad123的博客-CSDN博客
不管是NXP还是其他厂商的芯片,官方例程是很好的学习资源。上图是S32K344芯片的例程导入,右边描述翻译看看,介绍例程。
导入后,可以看到文件夹结构:
−Includes:工具链头文件。
−Project_Settings:启动和系统代码,以及链接器文件。
−Include:工程驱动文件。
−Src:主文件的源文件夹。
−RTD:包括来自RTD的(低压)驱动
−Board:板级支持。用于S32CT配置文件的配置工具文件夹(时钟和引脚)。
−Generate:外围配置文件(配置工具生成的)
−Project.mex文件:它保存配置工具的所有设置
......
手头有一个JTAG/SWD仿真器,后面发现电脑上有JLink的驱动,以及S32DS有JLink下载的选项,然后就在想这两者什么区别。以下是搜到的资料:(后面明白了,是自己孤落寡闻了,JLink是协议,JTAG是硬件(仿真器))
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的区别吗 - 知乎
仿真器供电一般不足以驱动芯片工作,所以都要加上外部供电。
步骤:
配置仿真烧录文件
小甲虫→Debug Configurations...
①JLink就选择双击该项,若是PE仿真器则点⑤处,双击后会新建一个仿真烧录文件,右键可以删除。
②点击
③在此处填上芯片设备
④选择JTAG(JLink就是基于JTAG)
基本就配置完成了
一个端口(PTA ~ PTG)包括最多32个引脚,可以并行输出或输入。(16个引脚为一组)
两个电源域:VDD_HV_A和VDD_HV_B
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博客
【S32K学习笔记】PIT_trgmux_且听风吟_YU的博客-CSDN博客
S32K3 Timer(PIT STM)使用介绍 ——基于LLD
DB9插针Pin脚定义:Pin2-->CAN-LOW ;Pin7-->CAN-High (2低7高)
引脚:
连接:
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从休眠模式进入待机模式后开始正常工作。
2路CAN转 USB
接线只需CANH CANL两根线,不需要连接地线。
用的是上图的can盒,can指示灯只有通信(收发报文)的时候会亮,其余时刻灭,所以插上不会亮,并不代表没连接成功。(曾一度怀疑没接好,后面才发现是CAN的时钟没配置对,哭死)
上位机软件是周立功的CAN Test,选择对应设备端口以及配置波特率,过滤ID等等。
单片机配置正确的波特率,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
①确定波特率:倘若要波特率500kbps
②确定时钟源:FlexCAN的时钟源 AIPS_PLAT_CLK=80M ,分频设置为10
③算出一共有多少Tq,合理分配:
500kbps=1/(x*(10/80M))
得x=16,将x分配至各个时间段
其中采样位置计算为:
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 | 根据实际传输线长大致估算 | 除去前面两段后平分 |
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博客
原本第一次报错:
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可以烧录了。但是这为后面编译埋下坑!!!(修改了编译链工具,编译就出问题了,那时候烧录不了是烧录配置的问题,跟编译链工具没太大关系)
就算修改回10.2也不行了。只能重新来。配置10.2编译链工具(编译才能成功),配置对烧录(才能下载)。
烧录的话,官方例程与我的烧录情况不同,自己需要配置。并不是下图官方例程所示的配置。而是 ${eclipse_home}../Drivers/Segger/JLinkGDBServerCL.exe
总结:
①工程右键 Clean Project,再Build Project。(清除构建目录并重新构建的原因有二:其一、有时候,构建目录中的一些临时文件可能会导致编译错误,所以有时候工程报错,试着把这些clean,再次编译可能会好些。其二、可以产生具体的错误信息方便查阅)
②编译链不要随意修改。由于烧录不进去,把10.2更换为9.2可以烧录(其实正确做法看③),导致后续工程根本无法编译成功。
编译链修改会导致一堆配置变更,就算你变回原先的也不好使了。
比如:原先10.2,改为9.2后又要改回10.2,但是很多配置变更了。
10.2的配置是这样。
改成9.2配置全变了(换成10.2也变不回去了)
③烧录不进去,有可能是配置问题。
Executalb : ${eclipse_home}../Drivers/Segger/JLinkGDBServerCL.exe
需要根据你自己的使用情况选择。我手头上用的是Segger的 JTAG/SWD仿真器。
一般都是采用配置工具配置外设,生成驱动代码。然后再自己写逻辑代码。
通过图形化配置后,生成代码。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模块的函数接口。
导入别的工程后编译报错:
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之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博客