Всем привет!
Запустил RTC STM32F407VG в режиме LSE (с внешним кварцем 32.768 kHz). На выходе РА8 показывает частоту 32.769, что нормально (отклонение 0,003%). Но часы RTC за 30 минут спешат на ~ 1мин.
Проверял соответствующие установки регистров в отладчике IAR - все совпадает.
Канфигурация RTC такая:
// RTC configuration set
PWR-›CR |= (1‹‹8); // Access to RTC and RTC backup registers and backup SRAM enabled
RCC-›CSR &= (1‹‹0); // LSI Off
RCC-›BDCR = 0x00000000; // Reset BDCR register
RCC-›BDCR |= (1‹‹15); // RTC clock enable
RCC-›BDCR |= (1‹‹0); // LSE On
RCC-›BDCR &= ~(1‹‹2); // LSE not bypassed quartz On
RCC-›BDCR &= ~(1‹‹16); // Backup domain software reset not activated
RCC-›BDCR |= (0x1‹‹8); // LSE used as the RTC clock
RTC-›WPR = 0x000000CA; // Key protect 1
RTC-›WPR = 0x00000053; // Key protect 2
RTC-›ISR |= (1‹‹7); // Initialization mode On
for(;((RTC-›ISR & 0x40) == 0x00);) // delay while initialization flag will be set
{
}
RTC-›PRER = 0x00000000; // RESET PRER register
RTC-›PRER |= (0xFF‹‹0); // 255 + 1 Synchronous prescaler factor set
RTC-›PRER |= (0x7F‹‹16); // 127 + 1 Asynchronous prescaler factor set
RTC-›CR &= ~(1‹‹6); // Hour format 24 hour day format
//RTC-›TR = 0x00170000; // Time 17 hours 0 minutes 0 seconds
//RTC-›DR = 0x00132204; // Data 4 month 2 year 13 week day 1
RTC-›ISR &= ~(1‹‹7); // Initialization mode Off
for(;((RTC-›ISR & 0x40) == 0x40);) // delay while initialization flag will be set
{
}
Конфигурация RTC еще и в файле.
Проверял и разные доступные готовые библиотечные процедуры настройки RTC - то же самое, часы сильно спешат, как будто бы не включается режим LSE.
Для сверки запустил часы на
ADuC832 - точность как и в ПК (сверял через нескольких суток).
Я в принципе не понимаю в чем проблема. Если бы часы не запускались - дело другое.
На РА8 смотрю частотомером - показывает 32.769, это 0,003%.
На РА8 точно с кварца - проверял, ставил кварц 32.768, который работает в диапазане температур от 0 град., беру его руками - частота на РА8 - меняется.
Рабочий кварц - от -40 градусов, соответственно частота от руки не меняется.
Никакие процессы кроме RTC не работают, значит никто ему не мешает считать.
Делители проверил.
Кварцевый резонатор затем и ставится, чтобы достигнуть точности без всяких прибамбасов (подстроек). Возьмите любые дешевые часы - точность достаточная. Или я чего то не понимаю в STM32.
Может кто встречался с проблемой и решил ?