S32K3学习笔记---S32K3之MCU模块

S32K3学习笔记—S32K3之MCU模块

1、前言

​ 后续关于MCAL的配置都是基于EB29.0,RTD3.0的配置,MCU是基于S32K324。前期312、344也都使用过,也是第一次使用NXP的多核,后续将记录各个模块学习过程。

环境安装及参考资料如下:

​ 芯片手册:S32K3XXRM.pdf

​ EB工具 :EB29.0安装包

​ RTD及demo路径:RTD3.0和Demo

​ EB安装步骤:该博主写的很详细,参考一下[S32K3从0入门]NXP S32K3 环境安装及配置

2、模块作用

​ 对于刚开始接触MCAL来讲,MCU模块算是比较基础且重要的一个模块,因为基本上所有的外设都和MCU模块相关联。此模块很大如果不搞清楚可能导致很多问题,因此单独记录一下这个模块。MCU模块最主要的作用就是配置时钟、设置工作模式等。此模块主要是根据芯片手册来配置,一定要多看芯片手册

3、EB配置

​ 关于这个模块的配置,可以按照以下顺序来进行配置。先分总的几个大类时钟源,再具体到某些特定的模块。否则要做很多无用功。

3.1.通用配置

​ 对于不同模块的general都差不多是使能一些API,整个模块的通用配置啥的,如果没啥特殊需求就按照demo来配置就好

10

1.对于时钟源,我们不用的就需要失能,比如SXOCS如果不失能,会影响GPI功能

2.如果我们需要对多核做些操作,需要使能Core Boot Address Control


image-20231104122402773

1.这个模块主要是外部晶振配置,按照实际项目修改就好了

3.2.时钟配置

​ 根据芯片手册第六章Clocking得知,MCU的时钟源可由FIRC、SIRC、FXOCS、SXOCS、(锁相环)PLL生成,这些时钟都可以按照手册推荐的配置。下面是这几种时钟源的配置

image-20231029193242381

image-20231029004722030

1.如果FIRC在MCU控制下,则将其设置为TRUE。如果为FALSE,则MCU驱动程序将不会写入相应的寄存器

2、3.根据FIRC时钟分频因子,就可以得到时钟频率

4.是否支持standby模式使用

image-20231029005420494

1.这个是特定的,供其他参考时钟使用,如果没用到,可以失能

image-20231029005918330

1.默认使能晶振功能。如果我们需要用到GPI功能的IO,一定要失能该功能,否则功能不正常

2.指定了“计数值结束”,用于在重置后或开启时由振荡器稳定计数器进行比较。

3、4. 晶振断电控制,使能需要外接晶振

接下来就是PLL时钟的配置。

image-20231105055047251
image-20231105055144929

image-20231105053320627
image-20231105053600153

1.使能PLL时钟

3.调制类型选择-以标称频率为中心

4.StepSize = [McuPllFdMdp * (Mfi + McuPllFdMfn / 18432) * 18432] / (100 * McuPllFmStepNo).

5.StepNo=McuPllClockSelection)/(2McuPllFdFmodMcuPllDvRdiv)

6、7、8.使能PHI0、PHI1,并设置分频系数

9、2. PLL_VCO = 16M/2*120 = 960M

​ PLL_PHI0 = 960M / ( 5 + 1) = 160M

​ PLL_PHI1 = 960M / ( 5 + 1) = 160M

​ 接下来关于MC_CGM mux 0 clocks的时钟树,在EB里面选择时钟来源,和选择对应的分频系数得到我们所需要的频率就好。

image-20231029194537024

image-20231029194751575

1.选择时钟源,按需选择,我此处选择PLL_PHI0_CLK

2.从PLL_PHI0_CLK 给到CORE_CLK的时钟需要的分频系数

3.默认Common trigger divider update,两种触发更新手册有详细的介绍,包括具体流程

4.PLL_PHI0_CLK时钟/分频系数 = 你需要的频率

其他的几个时钟也是类似,按照芯片手册设置好分频系数就行

​ 从McuCgm0ClockMux1 到McuCgm0ClockMux11的配置都一样,我们只需要选择对于的时钟来源,设置好分频系数得到我们想要的频率就好。

image-20231104094807002

image-20231104095126869

1.选择STM0_CLK的时钟源,从芯片手册看有三个FXOSC_CLK、FIRC_CLK、AIPS_PLAT_CLK

2.使能STM0_CLK时钟输出

3、4.根据你需要的频率去配置分频系数

​ 在配置完MCU模块之后,就需要将这些时钟给到其他模块使用,EB里面是在McuClockReferencePoint里面操作,类似于索引

image-20231030003538697

此处的时钟参考点是和其他模块建立连接的,可以根据具体用到哪个模块来添加对应的时钟参考点。

​ 至此,MCU的时钟树配置基本完成,对于S32K3的时钟有个大的了解,之后在新增模块啥的,也知道怎么去配置时钟。主要是提供一种思路,具体细节还需要多看手册,具体到需求去配置。

3.3.模式配置

​ S32K3模式有两种,正常模式和低功耗模式,主要看MCU休眠方案,一般MCU断电就可不考虑低功耗模式,下面介绍一种正常工作的配置,低功耗模式后续再记录

1.选择工作模式: RUN

2.只有在 Mode为SOC_STANDBY才可以选择主核

3.是否使能锁步核,该配置只用古S32K39X

image-20231104111947643

1.使能Partition0的所有配置

2.CM7_0默认配置,不受MCU控制

3、4、5 :主要是从核的启动流程决定的,使能CM7_1时钟以及启动地址

​ 外设时钟使能,这个地方很容易遗忘,前期在刚开始配置的时候可以全部外围时钟先使能,负载率会高点而已,等后期将负载率或优化的时候把不用的外围时钟再使能。本人前期再此犯过错,最后调试的时候看寄存器发现时钟没使能,挺难查的。

3.4.其他

​ 有些比较细节的东西都是犯过错才总结出来的。如果用到高速的时钟我们需要使能LMAUTOEN,不使能可能导致大量的热量积攒导致MCU烧掉,这个NXP论坛也是提出了解决方案。具体参考如下:S32K344 Last Mile Regulator

image-20231104121008239

image-20231104121209262

1.RTD3.0是支持单独使能LMAUTOEN的,此处使能就好了,如果不支持就像论坛那样,不进行电源管理初始化,给到默认值就行

3.5 展望

​ MCU模块很庞大,有很多的配置项启动没有用过,只能说后续有需要再继续研究。一般都是在出问题之后去查芯片手册,然后解决问题。

​ 后续将不会单独的以一个模块来记录,感觉这样比较空旷,不便于理解,后续将以实现某功能来记录各个模块。

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
S32K3x4EVB-Q257是一款基于ARM Cortex-M内核的汽车电子控制系统的评估板。以下是入门指南: 1. 硬件准备:首先,确保你有一块S32K3x4EVB-Q257评估板、一台电脑和必要的USB连接线。 2. 软件安装:在电脑上安装相关的开发工具和软件。这可能包括S32 Design Studio集成开发环境(IDE)、S32 SDK软件开发套件、S32K Power Software Examples等。 3. 连接电源:将评估板插入电脑上的USB接口,并连接电源线到评估板上。 4. 下载示例代码:在S32 Design Studio中创建一个新项目,并下载示例代码到评估板上。这些示例代码将帮助你了解基本的功能和操作。 5. 硬件连线:根据需要,使用连接线将评估板与其他外部设备(例如传感器、显示屏等)连接起来。评估板上的引脚和接口可以通过手册查阅获得。 6. 运行代码:编译和下载代码到评估板上,并运行它。通过调试器或串口等方式,观察代码的执行情况和输出结果。 7. 进一步学习:通过阅读相关文档、手册和参考资料,了解评估板的更多功能和特性。你可以尝试修改示例代码或编写自己的代码,以实现特定的功能。 注意事项:在使用评估板时,务必遵循相关的安全操作规程,不要超过硬件的额定电压和电流,并保持设备的正确连接和操作。 以上是关于S32K3x4EVB-Q257入门的简要指南。希望这些信息对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值