S32K324芯片学习笔记-Clock

文章目录

    • Clock详解
      • 特征
      • 时钟生成
      • MC_CGM mux 0时钟
      • 时钟输出概述
      • 其他时钟
      • 整体框图
      • 时钟源
        • 芯片时钟源
        • 芯片输入时钟
        • 芯片输出时钟
        • FIRC快速内部RC振荡器
          • 待机模式下的FIRC_CLK行为
        • SIRC慢速内部RC振荡器
          • 待机模式下的SIRC行为
        • FXOSC快速外部晶振
        • 慢速外部晶振
        • PLL
          • 锁相环配置
            • PLL配置序列
        • 芯片时钟输出
      • MC_CGM时钟生成模块
        • MC_CGM时钟多路复用器类型
        • MC_CGM时钟源映射
      • 时钟细节
        • 系统时钟频率限制
        • 参考使用case
      • MC_CGM register descriptions
        • MC_CGM memory map
        • Clock Mux 0 Select Control Register (MUX_0_CSC)
        • Clock Mux 0 Select Status Register (MUX_0_CSS)
        • Clock Mux 0 Divider 0-6 Control Register (MUX_0_DC_0-6)
        • Clock Mux 0 Divider Trigger Control Register (MUX_0_DIV_TRIG_CTRL)
        • Clock Mux 0 Divider Trigger Register (MUX_0_DIV_TRIG)
        • Clock Mux 1 Select Control Register (MUX_1_CSC)
        • Clock Mux 1 Select Status Register (MUX_1_CSS)
        • Clock Mux 1 Divider 0 Control Register (MUX_1_DC_0)
    • Fast Internal RC Oscillator (FIRC)
      • FIRC register descriptions
        • FIRC memory map
        • Status Register (Status_Register)
        • Standby Enable Register (STDBY_ENABLE)
        • Configuration REG_GPR (CONFIG_REG_GPR)
    • Slow Internal RC Oscillator (SIRC)
      • SIRC register descriptions
        • SIRC memory map
        • Status Register (SR)
        • Miscellaneous input (MISCELLANEOUS_IN)
    • Fast Crystal Oscillator Digital Controller (FXOSC)
      • Functional description
      • FXOSC memory map
        • FXOSC Control Register (CTRL)
        • Oscillator Status Register (STAT)
    • Slow Crystal Oscillator Digital Controller (SXOSC)
      • 操作模式
        • Crystal mode
        • Bypass mode
      • SXOSC register descriptions
        • SXOSC memory map
        • Oscillator Control Register (SXOSC_CTRL)
        • Oscillator Status Register (SXOSC_STAT)
    • PLL Digital Interface (PLLDIG)
      • 工作模式
      • 输入时钟频率
      • Clock configuration时钟配置
      • 频率调制
        • 调频编程
      • PLLDIG register descriptions
        • PLL Control (PLLCR)
        • PLL Status (PLLSR)
        • PLL Divider (PLLDV)
        • PLL Frequency Modulation (PLLFM)
        • PLL Fractional Divider (PLLFD)
        • PLL Calibration Register 2 (PLLCAL2)
        • PLL Output Divider (PLLODIV_0 - PLLODIV_1)
    • Real Time Clock (RTC)
      • 特点
      • 功能描述
        • RTC
        • API功能描述
        • 工作模式
          • 功能模式
          • Debug mode
      • RTC register descriptions
        • RTC memory map
        • RTC Supervisor control register (RTCSUPV)
        • RTC Control register (RTCC)
        • RTC Status register (RTCS)
        • RTC Counter register (RTCCNT)
        • API Compare value register (APIVAL)
        • RTC Compare value register (RTCVAL)

Clock详解

特征

多个时钟源可选用于时钟生成:

  • 快速内部RC振荡器(FIRC)
  • 慢速内部RC振荡器(SIRC)
  • 快速外部晶体振荡器(FXOSC)
  • 慢速外部晶体振荡器(SXOSC)

    注意:SXOSC没有100-MAX QFP和48针LQFP封装。具体请参见“简介”章节“S32K3xx芯片的特性比较”表。
  • 锁相环(PLL)

    调频锁相环输出时钟,减少电磁辐射

    用于计时和通信功能的精确时钟

    无故障时钟开关时钟生成模块(MC_CGM)时钟选择器

    系统时钟渐进时钟频率开关(PCFS)

    时钟监控单元(CMU_FC, CMU_FM)检查时钟完整性

    使用模式输入模块(MC_ME)分区进程配置寄存器的核心和外围时钟门控

时钟生成

S32K324芯片学习笔记-Clock_第1张图片

MC_CGM mux 0时钟

S32K324芯片学习笔记-Clock_第2张图片
对于HSE_B, TCK和HSE_CLK时钟之间的时钟频率关系必须是1:1.5的最小比例。例如,如果HSE_CLK等于80 MHz,那么TCK必须小于或等于53 MHz (80 MHz ÷ 1.5)。(TCK来自于JTAG_TCK/SWD_CLK)

时钟输出概述

S32K324芯片学习笔记-Clock_第3张图片
在待机模式下CLKOUT_RUN不可用

S32K324芯片学习笔记-Clock_第4张图片

其他时钟

S32K324芯片学习笔记-Clock_第5张图片

整体框图

S32K324-P723/4649

S32K324芯片学习笔记-Clock_第6张图片

S32K324芯片学习笔记-Clock_第7张图片

时钟源

芯片包含以下时钟源模块:

•FIRC-快速内部RC振荡器

  • “FIRC_CLK”为系统默认时钟源。

    •SIRC- 慢速内部RC振荡器

    •锁相环

    •FXOSC-快速外部晶振输出时钟

    •SXOSC (S32K311无)慢速外部晶振输出时钟

    以下列表显示了时钟系统的一些功能:

    •所有时钟源都支持开启或关闭的软件配置。

    •除SXOSC_CLK外,所有时钟源在功能复位时初始化为默认状态。

    •SXOSC_CLK支持跨功能复位的RTC应用程序,并在破坏性复位时复位。

    只有SIRC_CLK和FIRC_CLK在复位后启用,并且在任何功能复位时启用。其他时钟源在复位时关闭。

芯片时钟源

S32K324芯片学习笔记-Clock_第8张图片

S32K324芯片学习笔记-Clock_第9张图片

芯片输入时钟

Pin 描述
XTAL FXOSC相关
EXTAL FXOSC相关
OSC32K_XTAL SXOSC相关
OSC32K_EXTAL SXOSC相关
EMAC_MII_RMII_TX_CLK EMAC TX时钟/EMAC RMII时钟(S32K311或S32K312不支持)
EMAC_MII_RX_CLK EMAC RX时钟(S32K311或S32K312不支持)
JTAG_TCLK/SWD_CLK JTAG/SWD时钟
SAIn_MCLK 从模式下SAI_n时钟(S32K311或S32K312不支持)
SAIn_BCLK 从模式下SAI_n位时钟(S32K311和S32K312不支持)
LPSPIn_SCK 从模式下LPSPIn串行时钟
LPI2Cn_SCL LPI2C_n时钟
LPI2C_n时钟 LPI2C_n第二时钟

芯片输出时钟

Pin 描述
CLKOUT_RUN 运行模式下可用,待机模式下不可用
CLKOUT_STANDBY 在运行和待机模式下均可用
LPSPIn_SCK 主机模式下SPI时钟输出
LPI2Cn_SCL I2C时钟输出
LPI2Cn_SCLS I2C第二时钟输出
LPI2Cn_SCL I2C时钟输出
EMAC_MII_RMII_MDC 用于将控制数据传输到PHY的EMAC时钟(在S32K311或S32K312上不可用)
EMAC_MII_RMII_TX_CLK EMAC传输时钟(S32K311或S32K312上没有)
TRACE_ETM_CLKOUT ETM跟踪时钟(在S32K311、S32K312或S32K342/S32K322/S32K341上不可用)
SAIn_BCLK 主模式SAI_n位时钟(在S32K311或S32K312上不可用)
QuadSPI_SCKFA 用于串行闪存设备A的QuadSPI串行时钟(fast)(在S32K311或S32K312上没有)

FIRC快速内部RC振荡器

该芯片具有FIRC,具有以下特点:

•在上电和任何复位事件后,作为系统时钟源。

-重要的是检测FIRC_CLK故障和恢复

•作为芯片的安全时钟,用于与安全相关的应用。

•在运行模式下始终启用,在待机模式下可选启用。

•用作以下时钟源:

  • MC_RGM
  • FCCU和FOSU
  • SIUL2过滤器
待机模式下的FIRC_CLK行为

FIRC_CLK可以通过配置FIRC.STDBY_ENABLE[STDBY_EN]在Standby模式下可选启用。

当PMC确认进入待机模式时,FIRC_CLK从On状态切换到FIRC选择的Standby模式配置,通过FIRC.STDBY_ENABLE[STDBY_EN]配置。从Standby模式唤醒时,FIRC_CLK配置从Standby模式配置状态切换到On状态。

3 MHz的FIRC仅用于低功耗运行模式。如果芯片需要进入待机模式,那么在待机模式下,FIRC必须配置为48 MHz, FIRC_DIV_SEL为’0b11’。退出待机模式后,如果需要,FIRC可以更改为3 MHz。

SIRC慢速内部RC振荡器

该芯片有一个SIRC,具有以下特点:

•在运行模式下始终启用,在待机模式下可选启用。在降低待机模式下的芯片功耗时,始终启用SIRC可以确保各种swt的时钟始终可用,从而提高系统的健壮性。

•用作以下时钟源:

  • SWT
  • POR_WDG
待机模式下的SIRC行为

通过配置SIRC.MISCELLANEOUS_IN[STANDBY_ENABLE],可以选择在Standby模式下启用SIRC。

当PMC确定进入待机模式时,SIRC从On状态切换到SIRC选择的待机模式,通过SIRC.MISCELLANEOUS_IN[STANDBY_ENABLE]配置。从Standby模式唤醒时,SIRC配置从Standby配置状态切换回On状态。

FXOSC快速外部晶振

该芯片支持8-40 MHz的快速晶体振荡器,具有以下特点:

•作为PLL的参考。

•如果使用外部振荡器,支持晶体输入模式和旁路模式。

•作为通信模块的时钟源:

—FlexCAN

—QuadSPI

—EMAC (EMAC_CLK_TS)

慢速外部晶振

该芯片支持慢速晶体振荡器(SXOSC), SXOSC具有以下特性(S32K311上没有):

•支持晶体输入模式。

•作为RTC时钟源。SXOSC不受功能复位的影响,支持跨功能复位的RTC操作。SXOSC仅在破坏性复位时复位。

PLL

通过PLL对晶振超频,输出稳定时钟

锁相环配置

锁相环输出预分频频率取决于锁相环增益PLLDIG.PLLDV[RDIV]和PLLDIG.PLLDV[MFI]配置。通过配置PLLDIG.PLLODIV_0[DIV]可以进一步划分锁相环压控振荡器时钟PLL_PHI0_CLK, PLLDIG.PLLODIV_1[DIV]用于PLL_PHI1_CLK(有关配置详细信息,请参阅“PLL数字接口(PLLDIG)”章节)。

PLL配置序列

在启用PLL之前,必须启用FXOSC_CLK并等待它稳定。FXOSC.STAT[OSC_STAT]必须被监控以确定FXOSC_CLK的状态。

要禁用锁相环,软件必须先禁用锁相环,然后才禁用FXOSC(如果需要)。

芯片时钟输出

该芯片支持两个CLKOUT_x引脚,用于查看一些内部时钟,如下所示:

•CLKOUT_STANDBY

-用于显示运行和待机模式下可用的时钟。

•CLKOUT_RUN

-仅用于显示运行模式时钟。

注意:当芯片进入待机模式时,CLKOUT_STANDBY寄存器被锁存,并按待机模式顺序重置。因此,需要在Standby模式退出时重新配置CLKOUT_STANDBY信号

CLKOUT_STANDBY可用于两个pad GPIO[12]和GPIO[138],但CLKOUT跨功能复位和standby仅支持GPIO[12]和OBE(输出缓冲区使能)由DCM GPR位控制。具体请参见DCMRWP1[3] bit。

MC_CGM时钟生成模块

MC_CGM控制芯片的时钟功能。有关MC_CGM时钟控制的详细信息,请参阅时钟生成模块(MC_CGM)章节。

MC_CGM时钟多路复用器类型

在该芯片中,CLKOUT_RUN、CLKOUT_STANDBY和TRACE_CLK多路复用器是软件控制的多路复用器。其余的是硬件控制的多路复用器(有关软件和硬件多路复用器的详细信息,请参阅“时钟生成模块(MC_CGM)”章节)。

S32K324芯片学习笔记-Clock_第10张图片

S32K324芯片学习笔记-Clock_第11张图片

S32K324芯片学习笔记-Clock_第12张图片

S32K324芯片学习笔记-Clock_第13张图片

MC_CGM时钟源映射

S32K324芯片学习笔记-Clock_第14张图片

S32K324芯片学习笔记-Clock_第15张图片
1.所有未显示的时钟选择器索引都被保留。

2.S32K311的“SXOSC_CLK”不可用。

3.PLL_AUX_PHIn_CLK仅支持S32K388和S32K358。

4.S32K311和S32K312不支持EMAC_RMII_TX_CLK和EMAC_RX_CLK

时钟细节

系统时钟频率限制

S32K324芯片学习笔记-Clock_第16张图片

S32K324芯片学习笔记-Clock_第17张图片

参考使用case

高性能模式(CORE_CLK @ 160 MHz)

S32K324芯片学习笔记-Clock_第18张图片

S32K324芯片学习笔记-Clock_第19张图片

S32K324芯片学习笔记-Clock_第20张图片
1.该表不适用于S32K311和S32K312。

2.MC_CGM.MUX_10_CSC[SELCTL]和MC_CGM.MUX_11_CSC[SELCTL]必须等于1001b。

3.MC_CGM.MUX_0_CSC[SELCTL]必须等于1000b。

MC_CGM register descriptions

MC_CGM memory map

S32K324芯片学习笔记-Clock_第21张图片

S32K324芯片学习笔记-Clock_第22张图片

S32K324芯片学习笔记-Clock_第23张图片

S32K324芯片学习笔记-Clock_第24张图片

S32K324芯片学习笔记-Clock_第25张图片

Clock Mux 0 Select Control Register (MUX_0_CSC)

该寄存器为0号时钟mux提供了时钟源选择控制。Clock mux 0实现硬件控制时钟切换,确保时钟切换以正常的方式发生(没有故障)。

此寄存器仅在破坏性复位时复位。

对该寄存器中所有pcfs相关字段的更新必须是原子写入,这意味着单个写入必须更新CLK_SW、RAMPDOWN和RAMPUP字段。即使您希望触发RAMPUP或RAMPDOWN进程,也必须将RAMPUP和RAMPDOWN位设置在一起,否则将无法执行所需的PCFS序列。

S32K324芯片学习笔记-Clock_第26张图片
SELCTL-时钟源选择0000b - FIRC 1000b - PLL_PHI0_CLK

SAFE_SW-将1写入该位向FIRC发出安全时钟切换请求。在请求安全时钟切换操作后,该位将自动清除,并在状态寄存器中设置相应的位。

CLK_SW-对该位写入1将对时钟mux 0发出时钟切换请求。在请求时钟切换操作后,该位将自动清除,并在状态寄存器中设置相应的位。

RAMPDOWN-pcf缓降

将1写入该位将使PCFS斜率下降请求为mux 0计时。在请求PCFS斜率下降操作后,该位将被自动清除,并在状态寄存器中设置相应的位。

RAMPUP-pcf缓升

向这个位写入1会产生PCFS对时钟mux 0的递增请求。请求PCFS递增操作后,将自动清除该位,并在状态寄存器中设置相应的位。

Clock Mux 0 Select Status Register (MUX_0_CSS)

该寄存器为0号时钟mux提供当前的时钟源选择状态。

此寄存器仅在破坏性复位时复位。

S32K324芯片学习笔记-Clock_第27张图片

S32K324芯片学习笔记-Clock_第28张图片

S32K324芯片学习笔记-Clock_第29张图片

Clock Mux 0 Divider 0-6 Control Register (MUX_0_DC_0-6)

该寄存器为时钟mux 0控制时钟分压器0-6。

这个分频器是50%占空比的分频器。

关于50%占空比分频器,解释如下:

50%占空比分频器产生一个真正的分压器时钟。除法因子总是整数,但不限于偶数。分频时钟的上升沿始终与分频源时钟的上升沿同步,但下降沿与上升沿或下降沿同步,这取决于分频因子是偶数还是奇数。如果输入时钟占空比为50%,则分频输出时钟保持相同的50%占空比。

S32K324芯片学习笔记-Clock_第30张图片

寄存器:
S32K324芯片学习笔记-Clock_第31张图片

S32K324芯片学习笔记-Clock_第32张图片
DE-分频使能
DIV-实际分频因子为DIV+1

Clock Mux 0 Divider Trigger Control Register (MUX_0_DIV_TRIG_CTRL)

该寄存器选择在写入相应的除法器配置寄存器时立即更新与时钟mux0相关的除法器(称为Immediate divider update),还是仅在写入MC_CGM_MUX_0_DIV_TRIG寄存器时更新(称为Common trigger divider update)。当配置了公共触发器更新时,该寄存器还使用片上AXBS控制中止握手协议的启动。当需要改变时钟分压器之间的除法值比例时,需要软件配置与片上AXBS握手的HHEN字段。

S32K324芯片学习笔记-Clock_第33张图片
HHEN:选择是否终止握手协议 0B-没有启动停止握手协议。

TCTL:配置分频触发方式,0b-立即更新 1b-共同更新

分频时钟图参考:
S32K324芯片学习笔记-Clock_第34张图片

Clock Mux 0 Divider Trigger Register (MUX_0_DIV_TRIG)

S32K324芯片学习笔记-Clock_第35张图片
当上面的Trigger配置为Common时,向该寄存器写入任何值都会触发除法器。

S32K324芯片学习笔记-Clock_第36张图片

Clock Mux 1 Select Control Register (MUX_1_CSC)


该寄存器为时钟mux 1提供了时钟源选择控制。时钟mux 1实现硬件控制时钟切换,确保时钟切换以正常的方式发生(没有故障)。

S32K324芯片学习笔记-Clock_第37张图片
SELCTL:选择时钟源 0_0000b - FIRC 0_0010b - FXOSC 1_0110b - AIPS_PLAT_CLK
SAFE_SW-将1写入该位向FIRC发出安全时钟切换请求。在请求安全时钟切换操作后,该位将自动清除,并在状态寄存器中设置相应的位。

CLK_SW-对该位写入1将对时钟mux 0发出时钟切换请求。在请求时钟切换操作后,该位将自动清除,并在状态寄存器中设置相应的位。

Clock Mux 1 Select Status Register (MUX_1_CSS)

反馈MUX1时钟状态

S32K324芯片学习笔记-Clock_第38张图片

S32K324芯片学习笔记-Clock_第39张图片
SWIP:反馈时钟切换状态

Clock Mux 1 Divider 0 Control Register (MUX_1_DC_0)

Mux1时钟分频
S32K324芯片学习笔记-Clock_第40张图片
其他Mux时钟和上面的类似,只是输出时钟不同,分频图如下:

S32K324芯片学习笔记-Clock_第41张图片

S32K324芯片学习笔记-Clock_第42张图片

Fast Internal RC Oscillator (FIRC)

FIRC数字接口控制内部48 MHz RC振荡器系统。

FIRC register descriptions

FIRC memory map

S32K324芯片学习笔记-Clock_第43张图片

Status Register (Status_Register)

S32K324芯片学习笔记-Clock_第44张图片

S32K324芯片学习笔记-Clock_第45张图片

Standby Enable Register (STDBY_ENABLE)

S32K324芯片学习笔记-Clock_第46张图片

S32K324芯片学习笔记-Clock_第47张图片

Configuration REG_GPR (CONFIG_REG_GPR)

S32K324芯片学习笔记-Clock_第48张图片

S32K324芯片学习笔记-Clock_第49张图片

Slow Internal RC Oscillator (SIRC)

SIRC数字接口控制内部芯片上32 KHz RC振荡器系统。

SIRC register descriptions

SIRC memory map

S32K324芯片学习笔记-Clock_第50张图片

Status Register (SR)

S32K324芯片学习笔记-Clock_第51张图片

Miscellaneous input (MISCELLANEOUS_IN)

S32K324芯片学习笔记-Clock_第52张图片

Fast Crystal Oscillator Digital Controller (FXOSC)

对于S32K344/S32K324/S32K314:对于Bypass模式应用,当FXOSC处于关闭/禁用状态时,EXTAL引脚应该被拉低。

•初始化FXOSC时:当FXOSC为Bypass模式时,只有使能FXOSC后,才能使能外部时钟源。

•禁用FXOSC功能时:当FXOSC功能在Bypass模式下使用时,必须外部时钟源已经处于非激活状态,才能禁用FXOSC功能。

S32K324芯片学习笔记-Clock_第53张图片

Functional description

S32K324芯片学习笔记-Clock_第54张图片
Power-Down模式是FXOSC在任何重置后的默认条件:POR、破坏性或功能

FXOSC memory map

FXOSC base address: 402D_4000h

S32K324芯片学习笔记-Clock_第55张图片

FXOSC Control Register (CTRL)

S32K324芯片学习笔记-Clock_第56张图片

S32K324芯片学习笔记-Clock_第57张图片
OSC_BYP:绕过内部振荡器。

COMP_EN:Crystal mode为1,Single-Input Bypass设置为0

EOCV:指定计数结束。

振荡器计数器在除4的晶体时钟上运行,并计数到EOCV 128。这个计数周期确保外部振荡器时钟信号在系统选择FXOSC作为源之前是稳定的。

注意:必须将EOCV设置为适当的值,以允许时钟和占空比稳定下来,并确保OSC_STAT在晶体启动时间内得到设置。

-在crystal模式下,EOCV值必须使用初始化FXOSC中的公式根据晶体规格计算到合适的值。

-在Single-Input Bypass模式下,EOCV值无关紧要。FXOSC保持计数器复位。

• 修改EOCV前,必须禁用FXOSC

GM_SEL:选择由FXOSC放大器应用的跨导。此设置取决于晶振规格

•在crystal模式下,FXOSC将不能在零跨导(GM_SEL = 0000b)下工作。

S32K324芯片学习笔记-Clock_第58张图片
ALC_D-是否启用自动电平控制
OSCON-是否使能FXOSC

Oscillator Status Register (STAT)

S32K324芯片学习笔记-Clock_第59张图片

S32K324芯片学习笔记-Clock_第60张图片
指示FXOSC状态是否稳定

Slow Crystal Oscillator Digital Controller (SXOSC)

•在功能振荡器模式下产生32 KHz时钟输出
•包含一个状态寄存器,当晶体稳定时间完成时,状态寄存器的值变为1
•包含一个可以下电的振荡器

操作模式

Crystal mode

在此模式下晶振生成时钟

Bypass mode

在这种模式下,晶振从extal和xtal端口中移除,extal由旁路时钟驱动,xtal不连接。

SXOSC register descriptions

SXOSC memory map

S32K324芯片学习笔记-Clock_第61张图片

Oscillator Control Register (SXOSC_CTRL)

S32K324芯片学习笔记-Clock_第62张图片

S32K324芯片学习笔记-Clock_第63张图片
CURR_PRG_SF-这些位指定电平移位电流的可编程性。

CURR_PRG_COMP-这些位指定比较器电流的可编程性。

EOCV-这些位指定计数值的结束。当振荡器稳定计数器被打开时,这个值被用于比较。这个计数周期确保外部振荡器时钟信号在被系统选择之前是稳定的。振荡器计数器运行在晶振时钟除以4,计数值到EOCV * 128。

GM_SEL-晶振超速保护。该电场设置决定了XOSC放大器所应用的跨导,它将取决于晶体规格

OSCON- 0b -晶体振荡器关闭 1b -晶体振荡器处于ON状态

Oscillator Status Register (SXOSC_STAT)

S32K324芯片学习笔记-Clock_第64张图片

S32K324芯片学习笔记-Clock_第65张图片
指示SXOSC状态是否稳定

PLL Digital Interface (PLLDIG)

该芯片最多有2个PLLDIG模块,S32K324只有一个

S32K324芯片学习笔记-Clock_第66张图片

S32K324芯片学习笔记-Clock_第67张图片
PLLODIV_0和PLLODIV_1寄存器只支持word访问。写入这些寄存器时,必须保留保留字段的默认值。
PLLDIG仅支持向下扩展调制高达160 MHz的PLL PHI时钟输出。

S32K324芯片学习笔记-Clock_第68张图片

工作模式

S32K324芯片学习笔记-Clock_第69张图片

输入时钟频率

输入时钟为外部晶振频率,8-40M

Clock configuration时钟配置

各个模式下fpll_VCO的计算方式

S32K324芯片学习笔记-Clock_第70张图片
fpll_phi频率计算:


举例如下:
输入晶振为16M,配置为integer-only mode,PLLDV[RDIV]配置为2,PLLDV[MFI]配置为120,PLLDV[ODIV2]配置为1,PLLDIV_0[DIV]配置为5,则:

fpll_VCO = 16M/2 * 120=960M

fpll_phi_0 = 960M/(1*(5+1)) = 160M

频率调制

在调频模式下,锁相环产生一个调频时钟。

将1写入PLLFM[SPREADCTL]以选择向下扩展调制。下图显示了own-spread调制的示例。

S32K324芯片学习笔记-Clock_第71张图片

调频编程

调制深度和调制频率编程使用步长(PLLFM[STEPNO])和步长(PLLFM[STEPSIZE])。下表显示了为调频编程锁相环时计算过程中使用的变量

S32K324芯片学习笔记-Clock_第72张图片
使用下面的公式配置锁相环用于调频。

S32K324芯片学习笔记-Clock_第73张图片
只有满足公式9才可以实现调频

必须将0写入PLLFM[SSCGBYP],将1写入PLLFD[SDMEN]才能启用调频

PLLDIG register descriptions

PLL寄存器描述

S32K324芯片学习笔记-Clock_第74张图片

S32K324芯片学习笔记-Clock_第75张图片

PLL Control (PLLCR)

S32K324芯片学习笔记-Clock_第76张图片
PLLPD:为1时禁止PLL

PLL Status (PLLSR)

S32K324芯片学习笔记-Clock_第77张图片
LOL:PLL失锁状态,1为检测到失锁

LOCK:指示PLL是否Lock,1为locked

PLL Divider (PLLDV)

S32K324芯片学习笔记-Clock_第78张图片

S32K324芯片学习笔记-Clock_第79张图片
ODIV2:fpll_VCO分频因子

RDIV:输入时钟预分频因子

MFI:设置锁相环反馈回路中分频器的值,用来超频

PLL Frequency Modulation (PLLFM)

频率调制配置
S32K324芯片学习笔记-Clock_第80张图片

S32K324芯片学习笔记-Clock_第81张图片
SSCGBYP:屏蔽频率调制,为1时屏蔽

SPREADCTL:表示调制扩散到标称频率以下。这个字段必须写1

STEPSIZE:调频模式下,调制深度和频率的步长

STEPNO:提供在频率调制模式中实现调制深度的Step数

PLL Fractional Divider (PLLFD)

开启和配置调频
S32K324芯片学习笔记-Clock_第82张图片

S32K324芯片学习笔记-Clock_第83张图片

S32K324芯片学习笔记-Clock_第84张图片
SDMEN:启用分数模式。

SDM2:当您处于分数模式(SDMEN = 1)时,将1写入该字段。

SDM3:当您处于分数模式(SDMEN = 1)时,将1写入该字段。

MFN:设置分数环除法因子的分子。必须将小于18432的值写入该字段。禁用分数模式时,必须写入000_0000_0000_0000b。

PLL Calibration Register 2 (PLLCAL2)

S32K324芯片学习笔记-Clock_第85张图片

S32K324芯片学习笔记-Clock_第86张图片
ULKCTL:定义实现解锁所需的精度。

如果参考周期窗口中的VCO时钟周期数超出此字段定义的周期数,则锁定计数器决定解锁。

00b -解锁范围=期望值±9(当PLLFM[SSCGBYP] = 1时推荐)解锁范围=期望值±9(当PLLFM[SSCGBYP] = 1时推荐)

01b -解锁范围=期望值±17(当PLLFM[SSCGBYP] = 0时推荐)解锁范围=期望值±17(当PLLFM[SSCGBYP] = 0时推荐)

10b -解锁范围=期望值±33

11b -解锁范围=期望值±5

PLL Output Divider (PLLODIV_0 - PLLODIV_1)

S32K324芯片学习笔记-Clock_第87张图片

S32K324芯片学习笔记-Clock_第88张图片
DE:使能分频
DIV:分频因子,实际分频值为DIV+1

Real Time Clock (RTC)

该芯片包含一个RTC(实时时钟)定时器和API(自主周期性中断)定时器实例,两者都可以执行32位比较。

RTC始终处于ON状态中,因此可在RUN模式和STANDBY模式下使用。RTC和API定时器都可以在低功耗模式下产生中断和唤醒。
RTC支持1μs的分辨率,具有高速内部振荡器时钟(1/48MHz (FIRC) * 48 (RTC计数器)= 1μs)

该芯片支持通过时钟源SIRC和SXOSC进行功能复位的无缝RTC操作
API能够在不停止计时器的情况下独立地更改计时器比较值(APIVAL)
API还可以与Comparator模块结合使用。在STANDBY模式配置中,API被配置为生成一个START / NEXT类型的信号来通知Comparator模块必须进行“比较”

实时时钟(RTC)是一种自由运行的计数器,用于计时应用。RTC可以配置为在预定义的时间间隔内产生中断,而不受操作模式(运行模式或低功耗模式)的影响。如果在低功耗模式下,达到RTC间隔,RTC首先生成唤醒,然后断言中断请求。RTC还支持一个API函数,用于生成定期唤醒请求以退出低功耗模式或中断请求。

S32K324芯片学习笔记-Clock_第89张图片

S32K324芯片学习笔记-Clock_第90张图片

S32K324芯片学习笔记-Clock_第91张图片

特点

32位计数器

可选的时钟源

可选512预分频器和可选32预分频器来运行32位计数器。

RTC中断使能中断。

计数器在所有操作模式下运行。

当计数器被软件禁止并复位到RTC模块时RTC counter复位

自主周期性中断支持包括:

  • 32位比较值支持唤醒间隔/中断范围
  • API逻辑有一个单独的enable来支持在RTC运行时更改比较值
  • API中断使能中断
  • 可在所有模式下运行
  • API比较值可以在RTC运行时修改

    可选中断RTC匹配,API匹配,和RTC翻转。

功能描述

RTC

RTC由一个32位的CNTEN位启用的空闲运行计数器组成(当CNTEN为负时,异步重置计数器并在启用时同步启用计数器)。禁用CNTEN后,RTCVAL, APIVAL,需要再次写入所需的功能。计数器的值可以通过RTC计数器寄存器(RTCCNT)寄存器读取。请注意,由于时钟同步,RTC计数器寄存器(RTCCNT)的值可能代表以前的计数器值。计数器和读取值之间的差值取决于计数器时钟和总线时钟的比值。两者之间的最大可能差异是6个计数值

计数器的时钟源是通过CLKSEL字段选择的,该字段为RTC/API提供了四个时钟选项。4个时钟源分别为:时钟源0、时钟源1、时钟源2和时钟源3。时钟多路复用器的输出可以被512和32的组合所除,从而为不同的时钟源提供不同的计数周期。注意,当切换RTC/API时钟源时,CNTEN位应该被禁用。

当计数器位31-0的RTC计数器寄存器(RTCCNT)计数器值与RTCVAL字段中的32位值匹配时,将设置RTCF中断标志位(在正确的时钟同步之后)。如果设置了RTCIE中断使能位,则产生RTC中断请求。RTC比较值寄存器(RTCVAL)只有在INV_RTC位为清零时才能写入寄存器。最初INV_RTC=0,因此RTC比较值寄存器(RTCVAL)可以写入一次,因此INV_RTC得到设置。这个位现在只能通过启用RTC计数器来清除。

在计数器被启用后,RTC比较值寄存器(RTCVAL)可以在任何时候写入,直到RTC再次被禁用。RTC比较值寄存器(RTCVAL)首先同步到RTC时钟域,因此,如果RTC比较值寄存器(RTCVAL)在接下来的2-3个RTC时钟中由于之前的RTCVAL而发生计数器匹配时更新,RTCF标志将被设置。但是,如果RTC比较值寄存器(RTCVAL)在没有计数器匹配之前更新,则在计数器匹配新的RTC比较值寄存器(RTCVAL)时设置RTCF标志。

如果在低功耗模式下发生匹配,则RTC首先生成唤醒请求强制唤醒到运行模式,然后设置RTCF标志

如果RTC比较值寄存器(RTCVAL)在计数器匹配后更新,新的RTC比较值寄存器(RTCVAL)值不应该在接下来的6个RTC计数器值之内

当RTC计数器从0xFFFF_FFFF到0x0000_0000时会触发一个翻转唤醒或中断。翻转标志通过设置ROVREN位使能。如果使能RTCIE,将为RTC计数器翻转生成中断请求。如果系统处于低功耗模式,RTC计数器翻转与此位导致从低功耗模式唤醒

翻转唤醒和RTC唤醒都在禁用CNTEN时异步解除断言。

所有标志和计数器值都与总线时钟同步。假设通过CLKSEL选择的Bus时钟和RTC时钟的关系如下:
总线时钟>= (1.5 * RTC时钟)/(div_factor)

•如果DIV32EN和DIV512EN都被禁用,则div_factor = 1

•如果DIV32EN=1和DIV512EN=0,则div_factor = 32

•如果DIV32EN=0和DIV512EN=1,则div_factor = 512

•如果DIV32EN和DIV512EN都使能,则div_factor = 512 * 32 = 16384

在使用RTC唤醒作为唤醒源的情况下,在启用所需的唤醒并确保在总线时钟禁用和唤醒事件之间有足够的时间间隔(少数总线时钟或RTC时钟周期,以较慢者为准)后,应禁用总线时钟。

API功能描述

通过设置APIEN位使能自动中断功能。32位APIVAL字段选择触发中断和/或唤醒事件的时间间隔。由于RTC是一个自由运行的计数器,APIVAL被添加到当前计数中以计算偏移量。当计数器达到偏移计数时,将生成中断和/或唤醒请求。然后重新计算偏移值,并在达到新值时再次重新触发新请求。只有当CNTEN和APIEN位被设置且APIVAL不为零时,API功能才会被启用。APIVAL也可以随时更新。APIVAL更新后,根据前一个值生成第一个API中断。从第二个中断开始,使用新的APIVAL生成API中断。
当比较达到时,APIF中断位被设置(在正确的时钟同步之后)。如果设置了APIIE中断使能位,则会生成API中断请求。如果在低功耗模式下有匹配,那么API首先生成一个唤醒请求,强制唤醒进入正常操作,然后设置APIF标志。

当CNTEN被禁止时,API功能重置,尽管唤醒API没有异步地用CNTEN去断言。如果APIEN在计数器匹配时被禁用,则偏移APIF可以失效。

工作模式

功能模式

RTC有两种功能运行模式,正常运行和低功耗模式。在正常操作中,所有RTC寄存器都可以读或写。RTC/API和相关的中断是可选启用的。在低功耗模式下,总线接口被禁用。RTC/API已启用(如果在进入低功耗模式之前启用)。

Debug mode

在进入调试模式时,如果设置了FRZEN,则RTC计数器冻结在最后一个有效计数上。在退出调试模式时,计数器从冻结值继续。

RTC register descriptions

RTC memory map

S32K324芯片学习笔记-Clock_第92张图片

RTC Supervisor control register (RTCSUPV)

RTCSUPV寄存器包含SUPV位,决定其他寄存器是在supervisor模式还是用户模式下可访问。

只能在Supervisor模式下访问这个寄存器,并且必须只向寄存器的SUPV字段写入一个值c

S32K324芯片学习笔记-Clock_第93张图片

RTC Control register (RTCC)

S32K324芯片学习笔记-Clock_第94张图片
CNTEN:计数器使能。当INV_RTC, INV_API被清除时,CNTEN应该被禁用。

RTCIE:RTC中断使能

FRZEN:如果设置了FRZEN位,计数器在进入调试模式时冻结最后一个有效计数值。调试模式通过后计数器从冻结值开始。当启用调试模式时,不应更改此位

ROVREN:当RTC从0xFFFF_FFFF滚到0x0000_0000时,ROVREN位启用唤醒和中断请求。还必须设置RTCIE位以便从计数器翻转生成中断。

S32K324芯片学习笔记-Clock_第95张图片

S32K324芯片学习笔记-Clock_第96张图片

APIEN:APIEN位使能自主周期中断功能。将此位设置为0b,异步禁用RTC的API唤醒输出。

APIIE:APIIE位允许在断言APIF时中断对系统的请求。

CLKSEL:CLKSEL[1:0]位为RTC选择时钟源。CLKSEL只能在CNTEN为0时更新。在选择振荡器作为RTC时钟源之前,用户应确保振荡器处于启用状态。0:SXOSC_CLK 1:SIRC_CLK 2:FIRC_CLK 3:FXOSC_CLK

DIV512EN:DIV512EN位使能512时钟分压器。只有当CNTEN为0时,才能更新DIV512EN。

DIV32EN:DIV32EN位使能32时钟分压器。只有当CNTEN为0时,才能更新DIV32EN。

TRIG_EN:当设置此位(TRIG_EN)时,将在下一个RTC时钟上取消断言wakeup_api(当总线时钟被禁用时,ACMP需要)。

RTC Status register (RTCS)

如果清除和设置同时发生,W1C优先于RTCF、APIF和ROVRF位的设置。

S32K324芯片学习笔记-Clock_第97张图片

S32K324芯片学习笔记-Clock_第98张图片
RTCF:RTCF位表示RTC计数器已经达到与RTCVAL (RTC比较值寄存器)匹配的计数器值。通过向RTCF写入1来清除RTCF。将0写入RTCF没有效果。

INV_RTC:当一个值被写入RTCVAL寄存器并且同步过程正在进行时,这个位返回值1。在此同步期间,任何再次写入RTCVAL寄存器的尝试都将被忽略。只有设置了CNTEN,同步才会完成。

INV_API:当一个值被写入APIVAL寄存器并且同步过程正在进行时,这个位返回值1。在此同步期间,任何再次写入APIVAL寄存器的尝试都将被忽略。只有设置了CNTEN,同步才会完成。

APIF:APIF位表示RTC计数器已达到与API偏移值匹配的计数器值。通过向APIF写入1来清除APIF。将0写入APIF没有效果

ROVRF:ROVRF位表示RTC已经从0xFFFF_FFFF滚到0x0000_0000。通过向ROVRF写入1来清除ROVRF。

RTC Counter register (RTCCNT)

S32K324芯片学习笔记-Clock_第99张图片
RTCCNT:RTC计数器值,由于时钟同步,RTCCNT值可能代表以前的计数器值。

API Compare value register (APIVAL)

APIVAL偏移位与RTC计数器位进行比较,如果出现匹配,则发起中断/唤醒请求。

S32K324芯片学习笔记-Clock_第100张图片

S32K324芯片学习笔记-Clock_第101张图片
APIVAL:APIVAL位被添加到当前计数中以计算偏移量。APIVAL偏移位与RTC计数器位进行比较,如果出现匹配,则断言中断/唤醒请求。

RTC Compare value register (RTCVAL)

RTCVAL位与RTC计数器位进行比较,如果出现匹配,则设置RTCF。RTCVAL的最小值为4。

S32K324芯片学习笔记-Clock_第102张图片

S32K324芯片学习笔记-Clock_第103张图片

你可能感兴趣的:(S32K3学习笔记,学习,笔记,fpga开发)