【RTD MCAL 篇3】 K312 MCU时钟系统配置

【RTD MCAL 篇3】 K312 MCU时钟系统配置

  • 一,文档简介
  • [二, 时钟系统理论与配置](#二, 时钟系统理论与配置)
    • [2.1 K312 时钟系统](#2.1 K312 时钟系统)
      • [2.1.1 PLL](#2.1.1 PLL)
      • [2.1.2 MUX_0系统](#2.1.2 MUX_0系统)
      • [2.1.3 MUX_6 时钟输出](#2.1.3 MUX_6 时钟输出)
      • [2.1.4 option B推荐方案](#2.1.4 option B推荐方案)
    • [2.2 EB 配置](#2.2 EB 配置)
      • [2.2.1 General 配置](#2.2.1 General 配置)
      • [2.2.2 McuClockSettingConfig配置](#2.2.2 McuClockSettingConfig配置)
        • [2.2.2.1 McuFIRC配置](#2.2.2.1 McuFIRC配置)
        • [2.2.2.2 McuSIRC配置](#2.2.2.2 McuSIRC配置)
        • [2.2.2.3 McuFXOSC配置](#2.2.2.3 McuFXOSC配置)
        • [2.2.2.4 McuCgm0ClockMux0配置](#2.2.2.4 McuCgm0ClockMux0配置)
        • [2.2.2.5 McuCgm0ClockMux1配置](#2.2.2.5 McuCgm0ClockMux1配置)
        • [2.2.2.6 McuCgm0ClockMux3配置](#2.2.2.6 McuCgm0ClockMux3配置)
        • [2.2.2.7 McuCgm0ClockMux4配置](#2.2.2.7 McuCgm0ClockMux4配置)
        • [2.2.2.8 McuCgm0ClockMux5配置](#2.2.2.8 McuCgm0ClockMux5配置)
        • [2.2.2.9 McuCgm0ClockMux6配置](#2.2.2.9 McuCgm0ClockMux6配置)
        • [2.2.2.10 McuCgm0ClockMux11配置](#2.2.2.10 McuCgm0ClockMux11配置)
        • [2.2.2.11 McuRtcClockSelect配置](#2.2.2.11 McuRtcClockSelect配置)
        • [2.2.2.12 McuPLL配置](#2.2.2.12 McuPLL配置)
        • [2.2.2.13 McuClockReferencePoint配置](#2.2.2.13 McuClockReferencePoint配置)
      • [2.2.3 McuModeSettingConf 配置](#2.2.3 McuModeSettingConf 配置)
      • [2.2.4 PORT 配置](#2.2.4 PORT 配置)
  • 三,测试结果
    • [3.1 CLKOUT FIRC_CLK DIV2](#3.1 CLKOUT FIRC_CLK DIV2)
    • [3.2 CLKOUT SIRC_CLK DIV2](#3.2 CLKOUT SIRC_CLK DIV2)
    • [3.3 CLKOUT FXOSC_CLK DIV10](#3.3 CLKOUT FXOSC_CLK DIV10)
    • [3.4 CLKOUT PLLPH0 CLK DIV10](#3.4 CLKOUT PLLPH0 CLK DIV10)
    • [3.5 CLKOUT CORE CLK DIV10](#3.5 CLKOUT CORE CLK DIV10)
    • [3.6 CLKOUT PLLPH1 CLK DIV4](#3.6 CLKOUT PLLPH1 CLK DIV4)
    • [3.7 CLKOUT HSE CLK DIV10](#3.7 CLKOUT HSE CLK DIV10)
    • [3.8 CLKOUT AIPS_PLAT CLK DIV10](#3.8 CLKOUT AIPS_PLAT CLK DIV10)
    • [3.9 CLKOUT AIPS_SLOW CLK DIV10](#3.9 CLKOUT AIPS_SLOW CLK DIV10)

一,文档简介

很久没开张了,理由省掉一万字,结论为绝非偷懒!抓着2024的尾巴尖,再次激活下写文章系统。既然新的一年要开始了,那么就从MCU的小心脏跳动起来: 谈谈如何在K3芯片MCAL的MCU中配置时钟系统。这个话题之前在做LLD的时候,一直是不屑去讲的,因为K3的时钟系统实在是太过简单,内部快慢时钟源,外部快慢时钟源,一个PLL倍频,然后各路内核外设来分羹,K3的RM甚至还做了几个option把规则给框了起来,从LLD的角度,尤其是S32DS CT配置的角度,更是简洁明了,来个CT图秀一下:

图 1


图 2

就这么个时钟系统,小手点点戳戳几下,一生成代码不就完事了。但是在LLD里面太过自由,到了MCAL却时常磕磕碰碰,所以,索性花些许时间把这个MCAL MCU的整个时钟系统给整的明明白白,本文以K312为例来讲解,其他的K3系列类似。

二, 时钟系统理论与配置

2.1 K312 时钟系统

从RM的时钟章节,可以看到整个系统框图情况:

图 3

这个框图把每个部分的情况都画的很清晰,时钟来源有四种:

内部快速时钟FIRC:48MHz, +/-5%误差,启动最大25us

内部慢速时钟SIRC: 32KHz,+/-10%误差,启动最大3ms

外部快速时钟FXOSC: 8-40MHz, 启动稳定时间FXOSC_CTRL[EOCV] × 128

外部慢速时钟SXOSC:32.768KHz, 启动稳定时间SXOSC_CTRL[EOCV] x 128

一个PLL:输入8-40MHZ,VOC输出640M-1280Mhz,PLL_PHIn_CLK输出25-480MHz。

MUX_0:输出CORE_CLK, AIPS_PLAT_CLK, AIPS_SLOW_CLK, HSE_CLK,DCM_CLK

MUX_1: 输出系统定时器STM0_CLK

MUX_3: 输出FLEXCAN0-2时钟

MUX_4: 输出FLEXCAN3-5时钟

MUX_5: 输出CLKOUT_STANDBY

MUX_6: 输出 CLKOUT_RUN

MUX_11: 输出TRACE_CLK

RTC_CLK:RTC时钟

2.1.1 PLL

从PLL角度,需要知道倍频和哪些值有关,可以通过如下公式去计算:

图4

如果是整数情况,上图的红色框是常用的方式,本文也会用上面的方式去配置。

PLL_PHI是最终PLL输出的时钟,供给其他MUX对应的MC去选择的。

2.1.2 MUX_0系统

从RM中可以看到细节的MUX_0系统:

图 5

可以看到,MUX_0的时钟源头可以是两种:PLL或者内部FIRC。

然后后面是可以生成内核时钟,AIPS_PLAT_CLK, AIPS_SLOW_CLK, HSE_CLK, DCM_CLK.

那么具体是生成时钟的频率是多少?原则上是符合各个模块对应的最大时钟即可,但是K3系列里面还做了一些option的推荐,比如K312推荐RUN的时候用optionB模式,尤其HSE的时钟,通常是需要严格满足option的推荐。

2.1.3 MUX_6 时钟输出

为了检查芯片内对应时钟情况,可以通过CLKOUT引脚输出对应的时钟,CLKOUT引脚可以对应多个时钟源的选择,具体情况如下:


图 6

图中黄色的内容是K312的CLKOUT_RUN所能支持的,后续配置时钟之后,将会具体选择对应的时钟测试是否输出和配置一致。

2.1.4 option B推荐方案

本文K312将会在EB中配置optionB的时钟情况。

图 7

2.2 EB 配置

首先先新建一个K312的EB工程,具体新建方法可以参考之前的文章:

S32K3 工具篇8:如何移植RTD现有demo到其他K3芯片

本文将重点讲解基于RTD400 MCAL的MCU模块对应的时钟配置,对于MCU配置,两个文档需要作为工具书查阅:

C:\NXP\SW32K3_S32M27x_RTD_R21-11_4.0.0\eclipse\plugins\Mcu_TS_T40D34M40I0R0\doc下的:RTD_MCU_UM.pdf和RTD_MCU_IM.pdf

有些不知道怎么配置的,就按照文档推荐的默认值配置即可。

下图是mcu的概览,主要配置的模块有如下三个组件:

General, McuClockSettingConfig, McuModeSettingConf

图8

2.2.1 General 配置

除了图8,需要打开内部外部快慢速时钟控制以及PLL控制,并且添加对应API, 以及晶振频率情况,如果这边不打开,后面的对应配置将会无法配置。

图 9

2.2.2 McuClockSettingConfig配置

   这里是MCU时钟配置的核心区域,里面包含了时钟源,PLL,以及各大MUX情况。

首先需要先添加一个时钟配置:

图 10

点击进去,里面会有详细的配置:

图 11

里面一共17个选项,对于第1,6可以保持默认配置,5外部慢速晶振,由于板子没接,所以不配置。其余要根据实际情况配置,下面予以一一讲解:

2.2.2.1 McuFIRC配置

内部快速时钟,48MHz:

图 12

2.2.2.2 McuSIRC配置

内部慢速时钟32Khz

图 13

2.2.2.3 McuFXOSC配置

外部晶振16MHZ,根据实际连接情况填写。

图 14

2.2.2.4 McuCgm0ClockMux0配置

Mux0配置,这里配置的有内核时钟,AIPS_PLAT_CLK,AIPS_SLOW_CLK,HSE, DCM_CLK,是满足optionB要求,并且时钟来源于PLL_PHI0_CLK,真正配置的时候,先配置PLL时钟输出正确的PLL_PHI0_CLK, PLL_PHI1_CLK时钟。

图 15

2.2.2.5 McuCgm0ClockMux1配置


图16

可以根据实际模块需要的时钟源情况去配置。

2.2.2.6 McuCgm0ClockMux3配置

配置FLEXCAN0-2模块的时钟源:

图 17

2.2.2.7 McuCgm0ClockMux4配置

配置FLEXCAN3-5模块的时钟源:

图 18

2.2.2.8 McuCgm0ClockMux5配置

配置CLKOUT_STANBY模块的时钟源:

图19

2.2.2.9 McuCgm0ClockMux6配置

配置CLKOUT_RUN模块的时钟源

图20

2.2.2.10 McuCgm0ClockMux11配置

配置TRACE_CLK模块的时钟源

图21

2.2.2.11 McuRtcClockSelect配置

配置RTC模块的时钟源

图22

2.2.2.12 McuPLL配置

配置PLL模块的时钟源

图23

2.2.2.13 McuClockReferencePoint配置

配置参考时钟,外设模块的时钟源选择接口。

图24

到这里,时钟就配置结束了。

下面为了验证,可以使用CLKOUT_RUN这个输出,将对应的时钟输出到引脚PTD10查看。

2.2.3 McuModeSettingConf 配置

Mcu中的McuModeSettingConf->McuPeripheral这里需要把使用到的外设给打开:

图 25

2.2.4 PORT 配置

 因为需要将内部时钟输出到CLKOUT_RUN, K312的PTD10 MSCR106查看,所以添加PORT引脚如下:


图26

三,测试结果

下面在S32K312-EVB板子上,通过修改EB的CLKOUT_RUN的时钟源测试看看时钟是否和配置的能够对上。

对应的main代码如下:

3.1 CLKOUT FIRC_CLK DIV2


图27

可以看到对于FIRC原本48Mhz的时钟做2分频输出,得到了24Mhz的时钟波形,正确!

3.2 CLKOUT SIRC_CLK DIV2


图28

可以看到对于SIRC原本32Khz的时钟做2分频输出,得到了16khz的时钟波形,正确!

3.3 CLKOUT FXOSC_CLK DIV10


图29

可以看到对于FXOSC原本16Mhz的时钟做10分频输出,得到了1.6Mhz的时钟波形,正确

3.4 CLKOUT PLLPH0 CLK DIV10


图30

可以看到对于PLLPH0原本120Mhz的时钟做10分频输出,得到了12Mhz的时钟波形,正确

3.5 CLKOUT CORE CLK DIV10


图31

可以看到对于CORE原本120Mhz的时钟做10分频输出,得到了12Mhz的时钟波形,正确

3.6 CLKOUT PLLPH1 CLK DIV4


图32

可以看到对于PLLPH1原本48Mhz的时钟做4分频输出,得到了12Mhz的时钟波形,正确

3.7 CLKOUT HSE CLK DIV10


图33

可以看到对于HSE原本60Mhz的时钟做10分频输出,得到了6Mhz的时钟波形,正确

3.8 CLKOUT AIPS_PLAT CLK DIV10


图34

可以看到对于AIPS_PLAT_CLK原本60Mhz的时钟做10分频输出,得到了6Mhz的时钟波形,正确

3.9 CLKOUT AIPS_SLOW CLK DIV10


图35

可以看到对于AIPS_SLOW_CLK原本30Mhz的时钟做10分频输出,得到了3Mhz的时钟波形,正确

相关推荐
不能只会打代码20 分钟前
32单片机从入门到精通之软件编程——初始化设置(八)
单片机·嵌入式硬件·32单片机
就叫飞六吧21 分钟前
单片机端口操作和独立引脚操作
单片机·嵌入式硬件
Vizio<3 小时前
微机——计算机中的数制
笔记·单片机·51单片机
GCSXP3 小时前
PT8026 六触控六输出IC
单片机·嵌入式硬件
aloneboyooo7 小时前
SPI通信-(STM32)
stm32·单片机·嵌入式硬件
唯创知音9 小时前
基于W2605C语音识别合成芯片的智能语音交互闹钟方案-AI对话享受智能生活
人工智能·单片机·物联网·生活·智能家居·语音识别
爱学电子的刻刻帝10 小时前
STM32传感器系列:GPS定位模块
stm32·单片机·嵌入式硬件·gps
lucy1530275107911 小时前
DC-DC 降压转换器设计提示和技巧
单片机·嵌入式硬件·智能手机·便携式视盘播放器·cd-rom
沐欣工作室_lvyiyi11 小时前
基于单片机的核辐射探测系统设计(论文+源码)
stm32·单片机·嵌入式硬件·物联网·智能家居
就叫飞六吧11 小时前
STC单片机内部常见寄存器及其作用
单片机·嵌入式硬件