S32K的时钟系统及电源管理

本文详细介绍了S32K144芯片的时钟系统组成,包括系统振荡器、外设时钟控制器等模块,重点讲解了内核时钟、总线时钟和不同模式下的时钟配置,以及如何通过clockmanager模块进行可视化配置。
摘要由CSDN通过智能技术生成

内核时钟:操作系统的正常工作,是需要硬件提供一下系统时钟,系统利用改时钟进行轮转调度、sleep

总线时钟:总线时钟是挂在总线上的器件之间进行通信所参照的时序,与总线位数无关,总线上的每一位在通信时都要以此时钟为参考。

系统时钟:是一个存储于系统内存中的逻辑时钟。用于系统的计算,比如超时产生的中断异常,超时计算就是由系统时钟计算的。这种时钟在系统掉电或重新启动时每次会被清除。 

S32K144芯片的时钟系统是由系统振荡器(System Oscillator OSC)、外设时钟控制器(Peripheral Clock Controlller PCC)、系统时钟发生器(System Clock Generator SCG)和电源管理器等模块组成的,其中OSC是通过外接晶体振荡器为系统引入外部参考时钟信号,SCG模块为系统中各个模块分配时钟源,PCC模块为片上外设提供时钟控制和配置,PMC模块为系统中各个模块分配时钟源。系统时钟发生器模块用于生产设备使用的大部分时钟,可以控制使用那个时钟源(内部参考时钟、外部晶振)作为设备的系统时钟,还可以将选定的时钟源分成各种时钟域,如系统总线主器件、系统总线从器件和闪存的时钟。

时钟源有四种

SPLL部分:系统锁相环,主要是用来倍频时钟源,然后提供给内核和总线,还有flash。

1、内核时钟(CORE_CLK) 2、总线时钟(BUS_CLK) 3、FLASH 时钟 4、外设时钟,外设时钟就有比价丰富的时钟选择,包括了:SPLLDIV1_CLK、SPLLDIV2_CLK、FIRCDIV1_CLK、FIRCDIV2_CLK、SIRCDIV1_CLK、SIRCDIV2_CLK、SOSCDIV1_CLK、SOSCDIV2_CLK 5、内部低功耗时钟以及RTC时钟,LPO_CLK、RTC_CLKOUT 在时钟配置过程中,针对HSRUN、NORMAL RUN、SLOW RUN模式,有些内部时钟配置需要注意以及一些限制,不能超过一定的限制最大频率,在S32K-RM手册中也有说明总结如下:

在S32K-RM手册有讲到几种常见的时钟配置,配置了四种时钟模式,分别是Slow RUN、 Normal RUN (with VCO_CLK = 320 MHz, SPLL_CLK = 160 MHz)、Normal RUN (with VCO_CLK = 256 MHz, SPLL_CLK = 128 MHz)和High Speed RUN,具体配置详情见手册。

配置方法

通过配置寄存器来配置相关功能,S32DDS中提供了 clock manager 模块进行可视化配置。 配置时钟的一般步骤: 1.processor expert选择添加clock_manager组件 2.Clock Config -> 增加configurtions 3.在界面配置各个参数 4.配置完成后 在Generated_Code/clockMan1.c 生成配置好的结构体 5.

/*FUNCTION**********************************************************************
 *
 * Function Name : CLOCK_SYS_Init
 * Description   : Install pre-defined clock configurations.
 * This function installs the pre-defined clock configuration table to the
 * clock manager.
 *
 * Implements CLOCK_SYS_Init_Activity
 *END**************************************************************************/
status_t CLOCK_SYS_Init(clock_manager_user_config_t const **clockConfigsPtr,
                              uint8_t configsNumber,
                              clock_manager_callback_user_config_t **callbacksPtr,
                              uint8_t callbacksNumber)
{
    DEV_ASSERT(clockConfigsPtr != NULL);
    DEV_ASSERT(callbacksPtr != NULL);

    g_clockState.configTable     = clockConfigsPtr;
    g_clockState.clockConfigNum  = configsNumber;
    g_clockState.callbackConfig  = callbacksPtr;
    g_clockState.callbackNum     = callbacksNumber;

    /*
     * errorCallbackIndex is the index of the callback which returns error
     * during clock mode switch. If all callbacks return success, then the
     * errorCallbackIndex is callbacksNumber.
     */
    g_clockState.errorCallbackIndex = callbacksNumber;

    return STATUS_SUCCESS;
}

具有6种操作(功耗)模式,可以归为两类:

1.运行模式:RUN、HSRUN、VLPR

2.停止(睡眠)模式:VLPS、STOP1、STOP2

RUN:正常运行模式为芯片的默认模式,最大主频80MHz。

HSRUN:High Speed Run,高速运行模式,我们知道S32K144最大主频为112MHz,指的是在HSRUN模式下可达112MHz,而不是在RUN模式下。

VLPR:Very Low Power Run,极低功耗的运行模式,该模式下单片机仍在运行只是以极低的功耗在运行,即4MHz。

STOP:STOP模式即睡眠或停止模式,该模式下内核时钟关闭,同时该模式下分为STOP1和STOP2两种模式具体区别如下表。

VLPS:Very Low Power Stop,极低功耗的停止模式(深度睡眠),该模式下最大限度的降低了芯片功耗同时保留了唤醒功能

img

img

3.模式转换

img

转换的条件:img

image-20230928114145558

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值