diff --git a/platform/drivers/tones/toneGenerator_MDxx380.c b/platform/drivers/tones/toneGenerator_MDxx380.c index 3be8ab5c..35c1a7e0 100644 --- a/platform/drivers/tones/toneGenerator_MDxx380.c +++ b/platform/drivers/tones/toneGenerator_MDxx380.c @@ -101,7 +101,8 @@ void toneGen_init() /* * Timer configuration: - * - APB1 frequency = 42MHz, with 1:10 prescaler we have Ftick = 4.2MHz + * - APB1 frequency = 42MHz but timer run at twice of this frequency: with + * 1:20 prescaler we have Ftick = 4.2MHz * - ARR = 255 (8-bit PWM), gives an update rate of 16.406kHz * - Nominal update rate is 16.384kHz -> error = +22.25Hz */ @@ -109,7 +110,7 @@ void toneGen_init() __DSB(); TIM3->ARR = 0xFF; - TIM3->PSC = 9; + TIM3->PSC = 19; TIM3->CCMR1 = TIM_CCMR1_OC2M_2 /* CH2 in PWM mode 1, preload enabled */ | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2PE; diff --git a/platform/targets/MD-380/platform.c b/platform/targets/MD-380/platform.c index 4ebb41ea..48ef48d0 100644 --- a/platform/targets/MD-380/platform.c +++ b/platform/targets/MD-380/platform.c @@ -46,8 +46,9 @@ void platform_init() adc1_init(); /* - * Configure TIM8 for backlight PWM: Fpwm = 100kHz, 8 bit of resolution - * APB2 freq. is 84MHz, then: PSC = 327 to have Ftick = 256.097kHz + * Configure TIM8 for backlight PWM: Fpwm = 100kHz with 8 bit of resolution. + * APB2 freq. is 84MHz, but timer runs at twice this frequency. + * Then: PSC = 655 to have Ftick = 256.097kHz * With ARR = 256, Fpwm is 100kHz; * Backlight pin is connected to TIM8 CR1. */ @@ -55,7 +56,7 @@ void platform_init() __DSB(); TIM8->ARR = 255; - TIM8->PSC = 327; + TIM8->PSC = 654; TIM8->CNT = 0; TIM8->CR1 |= TIM_CR1_ARPE; /* LCD backlight is on PC6, TIM8-CH1 */ TIM8->CCMR1 |= TIM_CCMR1_OC1M_2 diff --git a/platform/targets/MD-390/platform.c b/platform/targets/MD-390/platform.c index 4ebb41ea..48ef48d0 100644 --- a/platform/targets/MD-390/platform.c +++ b/platform/targets/MD-390/platform.c @@ -46,8 +46,9 @@ void platform_init() adc1_init(); /* - * Configure TIM8 for backlight PWM: Fpwm = 100kHz, 8 bit of resolution - * APB2 freq. is 84MHz, then: PSC = 327 to have Ftick = 256.097kHz + * Configure TIM8 for backlight PWM: Fpwm = 100kHz with 8 bit of resolution. + * APB2 freq. is 84MHz, but timer runs at twice this frequency. + * Then: PSC = 655 to have Ftick = 256.097kHz * With ARR = 256, Fpwm is 100kHz; * Backlight pin is connected to TIM8 CR1. */ @@ -55,7 +56,7 @@ void platform_init() __DSB(); TIM8->ARR = 255; - TIM8->PSC = 327; + TIM8->PSC = 654; TIM8->CNT = 0; TIM8->CR1 |= TIM_CR1_ARPE; /* LCD backlight is on PC6, TIM8-CH1 */ TIM8->CCMR1 |= TIM_CCMR1_OC1M_2 diff --git a/platform/targets/MD-UV380/platform.c b/platform/targets/MD-UV380/platform.c index 2b486b76..939f2de4 100644 --- a/platform/targets/MD-UV380/platform.c +++ b/platform/targets/MD-UV380/platform.c @@ -67,15 +67,16 @@ void platform_init() #ifdef ENABLE_BKLIGHT_DIMMING /* - * Configure TIM11 for backlight PWM: Fpwm = 256Hz, 8 bit of resolution - * APB2 freq. is 84MHz, then: PSC = 1281 to have Ftick = 65.52kHz + * Configure TIM11 for backlight PWM: Fpwm = 256Hz, 8 bit of resolution. + * APB2 freq. is 84MHz but timer runs at twice this frequency, then: + * PSC = 2564 to have Ftick = 65.52kHz * With ARR = 256, Fpwm is 256Hz; */ RCC->APB2ENR |= RCC_APB2ENR_TIM11EN; __DSB(); TIM11->ARR = 255; - TIM11->PSC = 1282; + TIM11->PSC = 2563; TIM11->CNT = 0; TIM11->CR1 |= TIM_CR1_ARPE; TIM11->CCMR1 |= TIM_CCMR1_OC1M_2