Обновление

This commit is contained in:
cfif 2025-10-13 13:47:55 +03:00
parent 29109cf3fd
commit 1b43ec9d7c
1 changed files with 53 additions and 0 deletions

View File

@ -24,11 +24,20 @@ static void Bsp_PCC_Init(void);
* @brief Local SCG initial
*
*/
// Ядро процессора: 240 МГц
// Системная шина: 120 МГц
// Медленная периферия: 120 МГц
// PLL0/PLL1: 240 МГц
// FOSC: 24 МГц
// SIRC: 12 МГц
static void Bsp_SCG_Init(void) {
SCG_Deinit();
/* Enable FOSC, frequency is 24M, DIVH=DIV1(24M), DIVM=DIV1(24M), DIVL=DIV2(12M)*/
// FOSC - Внешний кварцевый генератор (Базовый источник 24 МГц)
SCG_FoscType tFoscStruct =
{
.bLock = false,
@ -44,6 +53,12 @@ static void Bsp_SCG_Init(void) {
/* Enable PLL0, frequency is 240M, DIVH=DIV2(120M), DIVM=DIV2(120M), DIVL=DIV4(60M), src=FOSC*/
/* The value of multiplier factor(FOSC/u8Prediv) between 2 ~ 4 is better*/
// FOSC = 24 МГц
// После предделителя: 24 МГц / (11 + 1) = 24 МГц / 12 = 2 МГц
// После умножения: 2 МГц × (239 + 1) = 2 МГц × 240 = 480 МГц
// После постделителя: 480 МГц / 2 = 240 МГц
SCG_PllType tPll0Struct =
{
.bLock = false,
@ -62,6 +77,10 @@ static void Bsp_SCG_Init(void) {
/* Enable PLL1, frequency is 240M, DIVH=DIV2(120M), DIVM=DIV2(120M), DIVL=DIV4(60M), src=FOSC*/
/* The value of multiplier factor(FOSC/u8Prediv) between 2 ~ 4 is better*/
// Аналогична PLL0, также 240 МГц
// Обычно используется для периферии
SCG_PllType tPll1Struct =
{
.bLock = false,
@ -79,6 +98,9 @@ static void Bsp_SCG_Init(void) {
SCG_EnablePLL(SCG_PLL1, &tPll1Struct);
/* Enable SIRC DIV, DIVH=DIV1(12M), DIVM=DIV1(12M), DIVL=DIV2(6M) */
// Резервный источник тактирования
// Меньшая точность, но быстрый запуск
SCG_SircType tSircStruct =
{
.bLock = false,
@ -94,6 +116,13 @@ static void Bsp_SCG_Init(void) {
SCG_SetSIRC(&tSircStruct);
/* Set core clock source from PLL0, DIV_CORE=DIV1(240M), DIV_BUS=DIV2(120M), DIV_SLOW=DIV4(60M)*/
// Системное тактирование
//.eSrc = PLL0, // Источник - PLL0 (240 МГц)
//.eDivCore = DIV1, // Ядро: 240 МГц
//.eDivBus = DIV2, // Шина: 120 МГц
//.eDivSlow = DIV2 // Медленная периферия: 120 МГц
SCG_ClockCtrlType tClockStruct =
{
.bSysClkMonitor = false,
@ -113,6 +142,30 @@ static void Bsp_SCG_Init(void) {
static void Bsp_PCC_Init(void) {
PCC_CtrlType bSP_PCC_Config;
/* UART 2 */
bSP_PCC_Config.eClockName = PCC_CLK_FCUART2;
bSP_PCC_Config.bEn = true;
bSP_PCC_Config.eClkSrc = PCC_CLKGATE_SRC_FOSCDIV;
bSP_PCC_Config.eDivider = PCC_CLK_UNINVOLVED;
PCC_SetPcc(&bSP_PCC_Config);
/* CAN 0 */
bSP_PCC_Config.eClockName = PCC_CLK_FLEXCAN0;
bSP_PCC_Config.bEn = TRUE;
bSP_PCC_Config.eClkSrc = PCC_CLKGATE_SRC_FOSCDIV;
bSP_PCC_Config.eDivider = PCC_CLK_DIV_BY1;
PCC_SetPcc(&bSP_PCC_Config);
/* ADC 0 */
bSP_PCC_Config.eClockName = PCC_CLK_ADC0;
bSP_PCC_Config.bEn = TRUE;
bSP_PCC_Config.eClkSrc = PCC_CLKGATE_SRC_FOSCDIV;
bSP_PCC_Config.eDivider = PCC_CLK_DIV_BY1;
PCC_SetPcc(&bSP_PCC_Config);
/* DMA 0 */
bSP_PCC_Config.eClockName = PCC_CLK_DMA0;
bSP_PCC_Config.bEn = true;