Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не запускается кварцевый генератор на 32768Гц в STML476
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
serglg
Есть ли жесткие требования к резонатору? Резонатор взят с другой платы, работал там с PCF8583.
Питание у меня на Vbat подано.
Емкости - 6,8 пФ (насколько жестко величина здесь?)
Ну и всё.
МК виснет на этапе ожидания запуска LSE (проект после CubeMX, поэтому там задано ожидание запуска).
KnightIgor
Цитата(serglg @ Aug 18 2016, 07:56) *
МК виснет на этапе ожидания запуска LSE (проект после CubeMX, поэтому там задано ожидание запуска).

Эта тема неоднократно уже обсуждалась. Поищите. Я также участвовал и из собственного опыта сообщал: следует удалить(!) нагрузочные емкости.
serglg
спасибо, это проще, сейчас удалю :-)
amiller
В STM32F достаточно жесткие требования по выбору кварцевого резонатора на 32768.
Как то надеяться на устойчивую работу генератора можно если: выбран нужный резонатор, правильно выбраны нагрузочные емкости, разводка цепей кварца в соответствии с рекомендациями.
Если кварц с большой собственной емкостью, то удаление нагрузочных емкостей для устойчивости запуска может помочь. Но частота убежит больше чем на 100ppm.
Если источник питания нарастает медленно, то убедитесь, что в момент включения LSE у вас уже номинальное напряжение. Попробуйте вставить задержку на 100мсек перед инициализацией RTC. (Не любит генератор пониженное напряжение при первом старте).
Предполагаю, что в STM32L всё может быть ещё хуже из за пониженного потребления.
Поэтому ищите AN по кварцевому генератору для своего контроллера и внимательно его изучайте.
serglg
Спасибо. Так хотел с наскока. :-)
И кстати удаление емкостей 6 пФ не помогло.
Будем смотреть.
Genadi Zawidowski
Поставьте максимальное значение (3) в поле LSEDRV
Да, некоторые изменения работают только после выключения питания (но LSEDRV работает сразу, на кварце около 200 мв пик-ту-пик колебания)
KnightIgor
Цитата(serglg @ Aug 18 2016, 10:18) *
И кстати удаление емкостей 6 пФ не помогло.

Печально...
1. Попробуйте потыкать щупом осциллографа в ножки кварца. У меня (еще с конденсаторами) после таких пинков кварц запускался. Этот эффект описан и в форумах.
2. Какой это кварц именно: SMD или THD? Кварцы очень не любят перегрев при пайке. Если Вы сносили его со старой платы и ставили на новую, такой стресс он мог и не пережить.
3. Программно я делаю несколько попыток запустить генератор (с полной переинициализацией этого периферийного устройства), прежде чем машу на все рукой и переключаюсь на LSI. Возможно, такие пинки помогут.
Genadi Zawidowski
Я так (STM32F767) делаю:
CODE
static void rtc_stm32f4xx_initialize(void)
{
debug_printf_P(PSTR("rtc_stm32f4xx_initialize\n"));

#if defined(RCC_APB1ENR_RTCEN)
RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_RTCEN; // Включить тактирование
#else /* defined(RCC_APB1ENR_RTCEN) */
RCC->APB1ENR |= RCC_APB1ENR_PWREN /*| RCC_APB1ENR_RTCEN*/; // Включить тактирование
#endif /* defined(RCC_APB1ENR_RTCEN) */

//RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN; // STM32F1xx: Включить тактирование
__DSB();

#if 0

// Sample for STM32F207 from http://electronix.ru/forum/index.php?showt...t&p=1421489

/* PWR */
PWR->CR |= PWR_CR_DBP; // Disable Backup Domain write protection

PWR->CSR =
PWR_CSR_EWUP * 0 | // Enable WKUP pin
PWR_CSR_BRE * 1 | // Backup regulator enable
0;

/* Теперь можно включить НЧ генератор */
RCC->BDCR =
RCC_BDCR_LSEON * 1 | // External low-speed oscillator enable
// RCC_BDCR_LSERDY * 0 |
RCC_BDCR_LSEBYP * 0 | // External low-speed oscillator bypass
RCC_BDCR_RTCSEL_0 * 1 | // RTC clock source selection: LSE
RCC_BDCR_RTCEN * 1 | // RTC clock enable
RCC_BDCR_BDRST * 0 | // Backup domain software reset
0;
#endif


PWR->CR1 |= PWR_CR1_DBP; // Разрешить запись в Backup domain
while ((PWR->CR1 & PWR_CR1_DBP) == 0)
;

#if 1

/* use LSE as clock source 32.768 kHz xtal */
RCC->BDCR = (RCC->BDCR & ~ (RCC_BDCR_LSEDRV /*| RCC_BDCR_RTCSEL*/)) |
3 * RCC_BDCR_LSEDRV_0 |
1 * RCC_BDCR_LSEON |
//1 * RCC_BDCR_RTCSEL_0 |
//1 * RCC_BDCR_RTCEN |
0;

while ((RCC->BDCR & RCC_BDCR_LSERDY) == 0)
;
RCC->BDCR = (RCC->BDCR & ~ (RCC_BDCR_RTCSEL)) |
1 * RCC_BDCR_RTCSEL_0 | /* 01: LSE oscillator clock used as the RTC clock */
0;
RCC->BDCR |= RCC_BDCR_RTCEN; /* RTC clock enabled */

#else

/* test: use LSI as clock source */
RCC->CSR |= RCC_CSR_LSION;
while ((RCC->CSR & RCC_CSR_LSIRDY) == 0)
;
RCC->BDCR = (RCC->BDCR & ~ (RCC_BDCR_RTCSEL)) |
2 * RCC_BDCR_RTCSEL_0 | /* 10: LSI oscillator clock used as the RTC clock */
0;
RCC->BDCR |= RCC_BDCR_RTCEN; /* RTC clock enabled */

#endif

PWR->CR1 &= ~ PWR_CR1_DBP; // Запретить запись в Backup domain


/* Disable the write protection for RTC registers */
RTC->WPR = 0xCA;
RTC->WPR = 0x53;

RTC->CR |= RTC_CR_BYPSHAD;
local_delay_ms(10);
/* Configure the RTC PRER */
RTC->PRER =
((256 - 1) & RTC_PRER_PREDIV_S) |
(((128 - 1) << 16) & RTC_PRER_PREDIV_A) |
0;

/* Enable the write protection for RTC registers */
RTC->WPR = 0xFF;

PWR->CR1 &= ~ PWR_CR1_DBP; // Запретить запись в Backup domain
while ((PWR->CR1 & PWR_CR1_DBP) != 0)
;

/* Установка начальных значений времени и даты */
const uint_fast8_t inits = (RTC->ISR & RTC_ISR_INITS) != 0;
debug_printf_P(PSTR("rtc_stm32f4xx_initialize: INITS=%d\n"), inits);

uint_fast16_t year;
uint_fast8_t month, day;
uint_fast8_t hour, minute, secounds;
stm32f4xx_getdatetime(& year, & month, & day, & hour, & minute, & secounds);

if (inits == 0 || month < 1 || month > 12 || year < 2015 ||
day < 1 || day > 31 ||
hour > 23 || minute > 59 || secounds > 59)
{
board_rtc_settime(23, 59, 0);
board_rtc_setdate(2015, 11, 29);
}
debug_printf_P(PSTR("rtc_stm32f4xx_initialize: done\n"));
}
serglg
кварц выводной, старого образца (цилиндр d2мм). Тыканье не приводит ни к чему.
Спасибо за советы по инициализации.
Мне пообещали "правильные" кварцы для STM32.
Подожду.
И потом с новыми силами. :-)

serglg
с кварцем KX-327NHT 32.768 всё запустилось. Правда 7 потов сошло пока паял. :-)
Там с торца вообще никакого металла нет. Всё внизу.
С частотой вроде нормально.
Причем как с конденсаторами 6,8пФ так и вообще без них.
Что в этих случаях правильно?
Они всё же нужны?
ViKo
Выкиньте кондеры на... Дело не в них, а в питании, его нужно включить.
Что паяется снизу, да, беда... И не только с резонатором. А начальство не понимает, долбаки...
serglg
Цитата(ViKo @ Aug 25 2016, 00:50) *
Выкиньте кондеры на... Дело не в них, а в питании, его нужно включить.
Что паяется снизу, да, беда... И не только с резонатором. А начальство не понимает, долбаки...


Беда в том, что STM32L476 запускается только с такими кварцами. перебрал несколько обычных цилиндриков с обычными выводами - глухо. Не запускается ни с одним.
А конденсаторы убирать приятней, чем потом добавлять. :-)
LightElf
QUOTE (serglg @ Aug 25 2016, 10:05) *
Беда в том, что STM32L476 запускается только с такими кварцами. перебрал несколько обычных цилиндриков с обычными выводами - глухо. Не запускается ни с одним.

Для всех STM32 рекомендуются 32кГц кварцы с нагрузочной емкостью 6пФ. Для L-серий это прямое требование. Кварцы 12пФ или не заводятся вообще, или стартуют по несколько минут. Нагрузочные конденсаторы ессно надо ставить, а номинал - рассчитывать под кварц и разводку (емкость монтажа вполне может добавить 2-3пФ).
Вроде все очевидно, читайте доки и следуйте им.
serglg
Цитата(LightElf @ Aug 25 2016, 14:04) *
Для всех STM32 рекомендуются 32кГц кварцы с нагрузочной емкостью 6пФ. Для L-серий это прямое требование. Кварцы 12пФ или не заводятся вообще, или стартуют по несколько минут. Нагрузочные конденсаторы ессно надо ставить, а номинал - рассчитывать под кварц и разводку (емкость монтажа вполне может добавить 2-3пФ).
Вроде все очевидно, читайте доки и следуйте им.


Спасибо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.