MCAL-MCU

1.概述

https://blog.csdn.net/qq_43629659/article/details/133050046

 MCU模块提供了访问内核相关功能的API,如时钟配置、初始化RAM、设置低功耗模式、提供复位接口等等。

1.1 时钟


上图左边位输入时钟源,右侧为输出时钟,需要选择合适的时钟源并通过倍频,分频来得到需要的时钟源。

S32K14X时钟源:

1.2 运行模式

各运行模式下的时钟源及配置

1.3 时钟计算

如果选用CORE_CLK为80M,使用系统FIRC达不到,需要使用sosc通过SPLL倍频。
SPLL

SPLL_CLK = SOSC(8MHz)* 40(PLL倍频)/ 2(PLL分频)= 160MHz.

CORE_CLK \ SYS_BUS = SPLL_CLK / 2(DIVCORE分频)= 80MHz.

BUS_CLK = SPLL_CLK / 2(DIVCORE分频)/ 2 (DIVBUS分频)= 40MHz.

FLASH_CLK = SPLL_CLK / 2(DIVCORE分频)/ 4(DIVFLASH分频)= 20MHz.

通过上面的公式可以看到我们通过PLL倍频后,时钟频率达到了160MHz。后续再通过分频达到我们想要的频率。从上面公式可以得到配置参数:

1.4 复位源

 系统的复位信息可以通过读取SSRS寄存器来获取。

1.5 复位

(AIRCR)Application Interrupt and Reset Control Register


Mcu_CortexM4.c
FUNC(void, MCU_CODE) Mcu_CM4_SystemReset(void)
{

    ASM_KEYWORD(" dsb");               /* All memory accesses have to be completed before reset */
    /** @violates @ref Mcu_CortexM4_c_REF_4 Required Rule 11.1, Conversion from integer to pointer */
    /** @violates @ref Mcu_CortexM4_c_REF_5 The cast is used to access memory mapped registers.*/
    REG_WRITE32( CM4_AIRCR_BASEADDR, (uint32)(CM4_AIRCR_VECTKEY(0x5FAU) | (REG_READ32(CM4_AIRCR_BASEADDR) & CM4_AIRCR_PRIGROUP_MASK) | CM4_AIRCR_SYSRESETREQ_MASK ));
    ASM_KEYWORD(" dsb");               /* All memory accesses have to be completed */
}

2. API

3. 配置

posted @ 2024-02-05 17:17  caseyzz  阅读(85)  评论(0编辑  收藏  举报