Add apps/examples/slcd, Remove USB from STM32L-Discovery, LSE support for the STM32 L family, some STM32L-Discovery LCD debug changes

This commit is contained in:
Gregory Nutt 2013-05-24 10:00:54 -06:00
parent 4b2e2e6edc
commit ce88ce5238
2 changed files with 53 additions and 19 deletions

View File

@ -47,18 +47,6 @@
/**************************************************************************** /****************************************************************************
* Definitions * Definitions
****************************************************************************/ ****************************************************************************/
/* The STM32L15XX family has no BDSR register. The equivalent settings are
* in the CSR register for those chips.
*/
#ifdef CONFIG_STM32_STM32L15XX
# define STM32_RCC_BDCR STM32_RCC_CSR
# define RCC_BDCR_LSEON RCC_CSR_LSEON
# define RCC_BDCR_LSERDY RCC_CSR_LSERDY
# define RCC_BDCR_RTCSEL_MASK RCC_CSR_RTCSEL_MASK
# define RCC_BDCR_RTCSEL_LSE RCC_CSR_RTCSEL_LSE
# define RCC_BDCR_RTCEN RCC_CSR_RTCEN
#endif
/**************************************************************************** /****************************************************************************
* Private Data * Private Data
@ -76,17 +64,58 @@
* Name: stm32_rcc_enablelse * Name: stm32_rcc_enablelse
* *
* Description: * Description:
* Enable the External Low-Speed (LSE) Oscillator and, if the RTC is * Enable the External Low-Speed (LSE) oscillator and, if the RTC is
* configured, setup the LSE as the RTC clock source, and enable the RTC. * configured, setup the LSE as the RTC clock source, and enable the RTC.
* *
* For the STM32L15X family, this will also select the LSE as the clock
* source of the LCD.
*
* Todo: * Todo:
* Check for LSE good timeout and return with -1, * Check for LSE good timeout and return with -1,
* *
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_STM32_STM32L15XX
void stm32_rcc_enablelse(void) void stm32_rcc_enablelse(void)
{ {
/* Enable the External Low-Speed (LSE) Oscillator by setting the LSEON bit /* Enable the External Low-Speed (LSE) oscillator by setting the LSEON bit
* the RCC CSR register.
*/
modifyreg32(STM32_RCC_CSR, 0, RCC_CSR_LSEON);
/* Wait for the LSE clock to be ready */
while ((getreg32(STM32_RCC_CSR) & RCC_CSR_LSERDY) == 0)
{
up_waste();
}
/* The primariy purpose of the LSE clock is to drive the RTC with an accurate
* clock source. In the STM32L family, the RTC and the LCD are coupled so
* that must use the same clock source. Calling this function will select
* the LSE will be used to drive the LCD as well.
*/
#if defined(CONFIG_STM32_LCD) || defined(CONFIG_RTC)
/* Select LSE as RTC/LCD Clock Source by setting the RTCSEL field of the RCC
* CSR register.
*/
modifyreg32(STM32_RCC_CSR, RCC_CSR_RTCSEL_MASK, RCC_CSR_RTCSEL_LSE);
#if defined(CONFIG_RTC)
/* Enable the RTC Clock by setting the RTCEN bit in the RCC CSR register */
modifyreg32(STM32_RCC_CSR, 0, RCC_CSR_RTCEN);
#endif
#endif
}
#else
void stm32_rcc_enablelse(void)
{
/* Enable the External Low-Speed (LSE) oscillator by setting the LSEON bit
* the RCC BDCR register. * the RCC BDCR register.
*/ */
@ -98,20 +127,22 @@ void stm32_rcc_enablelse(void)
{ {
up_waste(); up_waste();
} }
/* The primariy purpose of the LSE clock is to drive the RTC. The RTC could /* The primariy purpose of the LSE clock is to drive the RTC. The RTC could
* also be driven by the LSI (but that would be very inaccurate) or by the * also be driven by the LSI (but that would be very inaccurate) or by the
* HSE (but that would prohibit low-power operation) * HSE (but that would prohibit low-power operation)
*
* Select LSE as RTC Clock Source by setting the RTCSEL field of the RCC BDCR
* register.
*/ */
#ifdef CONFIG_RTC #ifdef CONFIG_RTC
/* Select LSE as RTC Clock Source by setting the RTCSEL field of the RCC
* BDCR register.
*/
modifyreg16(STM32_RCC_BDCR, RCC_BDCR_RTCSEL_MASK, RCC_BDCR_RTCSEL_LSE); modifyreg16(STM32_RCC_BDCR, RCC_BDCR_RTCSEL_MASK, RCC_BDCR_RTCSEL_LSE);
/* Enable the RTC Clock by setting the RTCEN bit in the RCC BDCR register */ /* Enable the RTC Clock by setting the RTCEN bit in the RCC BDCR register */
modifyreg16(STM32_RCC_BDCR, 0, RCC_BDCR_RTCEN); modifyreg16(STM32_RCC_BDCR, 0, RCC_BDCR_RTCEN);
#endif #endif
} }
#endif

View File

@ -262,6 +262,9 @@ void stm32_clockenable(void);
* Enable the External Low-Speed (LSE) Oscillator and, if the RTC is * Enable the External Low-Speed (LSE) Oscillator and, if the RTC is
* configured, setup the LSE as the RTC clock source, and enable the RTC. * configured, setup the LSE as the RTC clock source, and enable the RTC.
* *
* For the STM32L15X family, this will also select the LSE as the clock source of
* the LCD.
*
* Input Parameters: * Input Parameters:
* None * None
* *