基于MCAL的S32K3 MCU使用

本文参考“不想取名字的底层人”大佬《S32K3之MCU模块》https://blog.csdn.net/Abler_xaing/article/details/134221589

0、简介

相比于参考文章,本文基于S32K312 介绍 MCU 的使用,环境如下:

MCU:NXP S32k312

RTD版本:SW32K3_S32M27x_RTD_R21-11_4.0.0_D2311

EB版本:tresos Studio 29.0

***本文目前主要是记录配置,后期不断完善配置内容的含义***

1、新建工程

1.1 建立EB工程

###### 方式1:基于RTD中LLD的example新建工程

在这里插入图片描述

在这里插入图片描述

1.2 加入MCU工程

在这里插入图片描述

1.3 General配置

​对于不同模块的general都差不多是使能一些API,整个模块的通用配置啥的,如果没啥特殊需求就按照demo来配置就好:
在这里插入图片描述

在这里插入图片描述
如果我们需要对多核做些操作,需要使能Core Boot Address Control。
在这里插入图片描述
这个模块主要是外部晶振配置,按照实际项目修改就好了。

1.4 McuClockSettingConfig

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

外部高速时钟(晶振),本工程使用16M

在这里插入图片描述
使能PLL
在这里插入图片描述

在这里插入图片描述
使能PHI0、PHI1,并设置分频系数
PLL_VCO = 16M/2*120 = 960M
​ PLL_PHI0 = 960M / ( 5 + 1) = 160M
​ PLL_PHI1 = 960M / ( 5 + 1) = 160M

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

关于MCGCgm0CLockMux0的配置建议:
用s32ds创建MCU例程(s32k312需要RTD2.0.0版本),打开时钟图,根据已有工程进行配置。

在这里插入图片描述
在这里插入图片描述

其中查找S32K3xx Reference Manual手册,可以看到关于s32k312的专属配置:

在这里插入图片描述
从McuCgm0ClockMux1 到McuCgm0ClockMux11的配置都一样,按需选择(STM、CAN、QSPI、TRACE等),我们只需要选择对于的时钟来源,设置好分频系数得到我们想要的频率就好。
在这里插入图片描述
在这里插入图片描述

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

此处的时钟参考点是和其他模块建立连接的,可以根据具体用到哪个模块来添加对应的时钟参考点。
在这里插入图片描述
在这里插入图片描述
​ 至此,MCU的时钟树配置基本完成。

tips:关于System clock progressive clock frequency switching (PCFS)让系统计算下频率即可。
在这里插入图片描述

1.5 McuModeSettingConf

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

1.5.1 General

在这里插入图片描述

1.5.1 McuPeripheral
在此配置中可以使能外设时钟。选择需要的外设。

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

最近更新

  1. TCP协议是安全的吗?

    2024-05-15 16:00:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-15 16:00:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-15 16:00:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-15 16:00:04       18 阅读

热门阅读

  1. Symbol类型的作用

    2024-05-15 16:00:04       11 阅读
  2. [前端] vue2的/deep/转化为vue3语法(笔记)

    2024-05-15 16:00:04       11 阅读
  3. vue3 动态加载页面

    2024-05-15 16:00:04       12 阅读
  4. error和exception的区别?

    2024-05-15 16:00:04       12 阅读
  5. ISBN查询图书api接口

    2024-05-15 16:00:04       13 阅读
  6. 解决方案:sql里的join跟left join有什么区别

    2024-05-15 16:00:04       10 阅读
  7. 探索Git:版本控制的革命(一文了解Git)

    2024-05-15 16:00:04       13 阅读
  8. 小米消金引领创新,打造重庆消费金融新生态

    2024-05-15 16:00:04       15 阅读
  9. 算法学习笔记(LCA)

    2024-05-15 16:00:04       14 阅读
  10. SQL中的LAG函数与LEAD函数用法

    2024-05-15 16:00:04       12 阅读
  11. Spring中事务的失效场景

    2024-05-15 16:00:04       14 阅读
  12. Windows下打包项目成Linux版本

    2024-05-15 16:00:04       10 阅读