stm32:l4: rcc: Add support for HSI48 clock
This commit is contained in:
parent
0cd92c31d6
commit
f2c629c4ff
@ -89,6 +89,7 @@
|
||||
#define RCC_CCIPR MMIO32(RCC_BASE + 0x88)
|
||||
#define RCC_BDCR MMIO32(RCC_BASE + 0x90)
|
||||
#define RCC_CSR MMIO32(RCC_BASE + 0x94)
|
||||
#define RCC_CRRCR MMIO32(RCC_BASE + 0x98)
|
||||
|
||||
/* --- RCC_CR values ------------------------------------------------------- */
|
||||
|
||||
@ -133,6 +134,10 @@ Twelve frequency ranges are available: 100 kHz, 200 kHz, 400 kHz, 800 kHz,
|
||||
#define RCC_CR_MSIRDY (1 << 1)
|
||||
#define RCC_CR_MSION (1 << 0)
|
||||
|
||||
/* --- RCC_CRRCR values ---------------------------------------------------- */
|
||||
|
||||
#define RCC_CRRCR_HSI48ON (1 << 0)
|
||||
#define RCC_CRRCR_HSI48RDY (1 << 1)
|
||||
|
||||
/* --- RCC_ICSCR values ---------------------------------------------------- */
|
||||
|
||||
@ -166,6 +171,7 @@ Twelve frequency ranges are available: 100 kHz, 200 kHz, 400 kHz, 800 kHz,
|
||||
#define RCC_CFGR_MCO_PLL 0x5
|
||||
#define RCC_CFGR_MCO_LSI 0x6
|
||||
#define RCC_CFGR_MCO_LSE 0x7
|
||||
#define RCC_CFGR_MCO_HSI48 0x8
|
||||
#define RCC_CFGR_MCO_SHIFT 24
|
||||
#define RCC_CFGR_MCO_MASK 0xf
|
||||
|
||||
@ -274,6 +280,7 @@ Twelve frequency ranges are available: 100 kHz, 200 kHz, 400 kHz, 800 kHz,
|
||||
|
||||
/* --- RCC_CIER - Clock interrupt enable register -------------------------- */
|
||||
|
||||
#define RCC_CIER_HSI48RDYIE (1 << 10)
|
||||
#define RCC_CIER_LSE_CSSIE (1 << 9)
|
||||
/* OSC ready interrupt enable bits */
|
||||
#define RCC_CIER_PLLSAI2RDYIE (1 << 7)
|
||||
@ -287,6 +294,7 @@ Twelve frequency ranges are available: 100 kHz, 200 kHz, 400 kHz, 800 kHz,
|
||||
|
||||
/* --- RCC_CIFR - Clock interrupt flag register */
|
||||
|
||||
#define RCC_CIFR_HSI48RDYF (1 << 10)
|
||||
#define RCC_CIFR_LSECSSF (1 << 9)
|
||||
#define RCC_CIFR_CSSF (1 << 8)
|
||||
#define RCC_CIFR_PLLSAI2RDYF (1 << 7)
|
||||
@ -300,6 +308,7 @@ Twelve frequency ranges are available: 100 kHz, 200 kHz, 400 kHz, 800 kHz,
|
||||
|
||||
/* --- RCC_CICR - Clock interrupt clear register */
|
||||
|
||||
#define RCC_CICR_HSI48RDYC (1 << 10)
|
||||
#define RCC_CICR_LSECSSC (1 << 9)
|
||||
#define RCC_CICR_CSSC (1 << 8)
|
||||
#define RCC_CICR_PLLSAI2RDYC (1 << 7)
|
||||
@ -706,8 +715,10 @@ extern uint32_t rcc_apb2_frequency;
|
||||
|
||||
/* --- Function prototypes ------------------------------------------------- */
|
||||
|
||||
// Note: RCC_HSI48 not available on all STM32L4 devices
|
||||
|
||||
enum rcc_osc {
|
||||
RCC_PLL, RCC_HSE, RCC_HSI16, RCC_MSI, RCC_LSE, RCC_LSI
|
||||
RCC_PLL, RCC_HSE, RCC_HSI16, RCC_MSI, RCC_LSE, RCC_LSI, RCC_HSI48
|
||||
};
|
||||
|
||||
|
||||
|
@ -64,6 +64,9 @@ void rcc_osc_ready_int_clear(enum rcc_osc osc)
|
||||
case RCC_LSI:
|
||||
RCC_CICR |= RCC_CICR_LSIRDYC;
|
||||
break;
|
||||
case RCC_HSI48:
|
||||
RCC_CICR |= RCC_CICR_HSI48RDYC;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,6 +91,9 @@ void rcc_osc_ready_int_enable(enum rcc_osc osc)
|
||||
case RCC_LSI:
|
||||
RCC_CIER |= RCC_CIER_LSIRDYIE;
|
||||
break;
|
||||
case RCC_HSI48:
|
||||
RCC_CIER |= RCC_CIER_HSI48RDYIE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,6 +118,9 @@ void rcc_osc_ready_int_disable(enum rcc_osc osc)
|
||||
case RCC_LSI:
|
||||
RCC_CIER &= ~RCC_CIER_LSIRDYIE;
|
||||
break;
|
||||
case RCC_HSI48:
|
||||
RCC_CIER &= ~RCC_CIER_HSI48RDYIE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -136,6 +145,9 @@ int rcc_osc_ready_int_flag(enum rcc_osc osc)
|
||||
case RCC_LSI:
|
||||
return ((RCC_CIFR & RCC_CIFR_LSIRDYF) != 0);
|
||||
break;
|
||||
case RCC_HSI48:
|
||||
return ((RCC_CIFR & RCC_CIFR_HSI48RDYF) != 0);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
|
||||
@ -166,6 +178,8 @@ bool rcc_is_osc_ready(enum rcc_osc osc)
|
||||
return RCC_BDCR & RCC_BDCR_LSERDY;
|
||||
case RCC_LSI:
|
||||
return RCC_CSR & RCC_CSR_LSIRDY;
|
||||
case RCC_HSI48:
|
||||
return RCC_CRRCR & RCC_CRRCR_HSI48RDY;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -221,6 +235,9 @@ void rcc_osc_on(enum rcc_osc osc)
|
||||
case RCC_LSI:
|
||||
RCC_CSR |= RCC_CSR_LSION;
|
||||
break;
|
||||
case RCC_HSI48:
|
||||
RCC_CRRCR |= RCC_CRRCR_HSI48ON;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -245,6 +262,9 @@ void rcc_osc_off(enum rcc_osc osc)
|
||||
case RCC_LSI:
|
||||
RCC_CSR &= ~RCC_CSR_LSION;
|
||||
break;
|
||||
case RCC_HSI48:
|
||||
RCC_CRRCR &= ~RCC_CRRCR_HSI48ON;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user