|
STM32F101x + LSE, проблема с часовым генератором |
|
|
|
Jan 16 2009, 13:22
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
День добрый. У меня проблема с STM32F101CBT6, в котором иногда, (и это иногда не поддается систематизации) не хочет запускаться генератор на 32КГц. Код висит в цикле
/* Enable LSE */ RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) { }(тут и весим вечно)
Дефект был выявлет после ночовки девайса (в собраном корпусе) в машине, и было сделано предположение, что все дело в температуре. После того удалось выясньть точку зависания, предварительно высунув девайс за окно, и потом подключив к дебагеру. За окном гдето 0...-3 °С. Однак потом етот баг перестал появлятся при погружении в за окно (температура там та же). Пробовал на двух кромбах (платка с контроллером и , обвязкой по питанию и кварцами - 32кГц и 8 МГц), наблюдал то же. теперь и не знаю на что думать. Извесно олько где весит - не может дождатся RCC_FLAG_LSERDY. Vbat - оставлен в воздухе. Подскажите, может кто в курсе, куда копать.
Заренее благодарен, Олег.
|
|
|
|
|
Jan 16 2009, 21:42
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 6-04-07
Из: Бронницы
Пользователь №: 26 809

|
Цитата(pan_oleg @ Jan 16 2009, 16:22)  Извесно олько где весит - не может дождатся RCC_FLAG_LSERDY. Еще такой вопрос - когда в этом цикле - на кварце точно генерации нет ? и если нет - пробовали завести с толкача (коснуться пальцем) ? Коли поможет - то или обвязка или кварцы сами - "маленькие такие ,кругленькие " ;-)
--------------------
если еррата пуста - это не хорошо а плохо
|
|
|
|
|
Jan 19 2009, 08:45
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата(pan_oleg @ Jan 19 2009, 12:03)  с задержкой стартует. Задержка эта сколько ? в мануале наеписано что он старнует 3 секунды !
|
|
|
|
|
Jan 19 2009, 09:35
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
видел про 3 секунды. иногда 3, а иногда 30 секунд, или 10 минут, когда как, при том при тех же температурных условиях, например ноч девайса в холодильнике при -15, и может запустится, n раз запустится, потом нет ничего не могу понять, может сделать задержку на 3 сек после велючения генераторана 32кГц, а потом проверять бит его состояния?
|
|
|
|
|
Jan 19 2009, 15:49
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(pan_oleg @ Jan 19 2009, 18:33)  попробувал кварц уменшить до 5 пФ, не помогает, светодиодик я зажигаю, и место где весит точно известно,
/* Enable LSE */ RCC_LSEConfig(RCC_LSE_ON); /* Wait till LSE is ready */ while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) { }(тут и весим вечно)
тоесть, или кварц не запускается, или біт что он запустился STM32 не выставил, а почему не запкстился не пойму P.S. буду рад любым идеям, ато мне только бредовые уже лезут в голову Тут идеи могут быть только две - у вас проблемы или с железом (кривой кварц/ёмкости/длинные проводники/плохое питание и т.д.) или что-то в софте не так. Почему бы вам не опробовать LSE генератор на фирменной плате - взять какой-нибудь кит от Олимекса или другой, где могут быть исключены проблемы с разводкой/некачественными комплектующими?
|
|
|
|
|
Jan 20 2009, 09:24
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
У меня начинаются подозрения, что STM что-то не договорил... Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE. На нем STM32F103, у меня STM32F101CBT6. Чо все STM32 с багом, или у Olimex отладочная плато тож с багом? чото мне это все не нравится
|
|
|
|
|
Jan 20 2009, 10:33
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(pan_oleg @ Jan 20 2009, 13:24)  У меня начинаются подозрения, что STM что-то не договорил... Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE. На нем STM32F103, у меня STM32F101CBT6. Чо все STM32 с багом, или у Olimex отладочная плато тож с багом? чото мне это все не нравится Ну а если не выносить плату за окно - то с олимексом всё стабильно? А от какого источника запитана плата? Каким напряжением? И сколько там у вас за окном?
|
|
|
|
|
Jan 20 2009, 11:05
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(pan_oleg @ Jan 20 2009, 12:24)  У меня начинаются подозрения, что STM что-то не договорил... Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE. На нем STM32F103, у меня STM32F101CBT6. Чо все STM32 с багом, или у Olimex отладочная плато тож с багом? чото мне это все не нравится были подобные проблемы с RTC DS1306 - проблемы в пылинках и прочем мусоре, протиралось бензином и всё работало... вообще подобные вещи лаком покрывают.
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Jan 20 2009, 14:22
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(pan_oleg @ Jan 20 2009, 17:06)  нет, от своего, пробовал и от юсб только что, тоже задержка старта в 30 секунд. А если попробовать следовать таким рекомендациям: Код ● Enable the APB1 backup domain and power interface clocks by writing the BKPEN and PWREN bits to ‘1’ in the RCC_APB1ENR register ● Enable access to backup domain by writing the DBP bit to ‘1’ in the PWR_CR register ● Enable the LSE clock by writing the LSEON bit to ‘1’ ● Poll the LSERDY flag in the RCC_BDCR register until the LSE clock is ready (if the external crystal is used as the clock source). Второй шаг у вас выполняется? Вот ещё нашёл ветку на форуме ST по проблеме старта LSE: http://www.st.com/mcu/forums-cat-7598-23.htmlВ кратце смысл таков - нужно использовать часовые кварцы с параметром CL ≤ 7 пФ. Таким образом ёмкости CL1 и CL2 будут в диапазоне 2-7 пФ.
|
|
|
|
|
Jan 21 2009, 18:53
|
Местный
  
Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686

|
pan_olegТак какие у вас нагрузочные конденсаторы от пинов кварца на землю стоят сейчас? Марка кварца какая? Например, для этого: http://www.geyer-electronic.de/pdfs/qurz/m...8.pdf?langSel=0 требуются кондёры по ~24-27пФ. Я использую NPO З.Ы. И не мешало бы привести разводку участка кварц-проц
Сообщение отредактировал Altemir - Jan 21 2009, 18:54
|
|
|
|
|
Jan 27 2009, 03:52
|
Группа: Новичок
Сообщений: 6
Регистрация: 4-08-08
Пользователь №: 39 421

|
poprobui vot eto dobavit' pered vsei inicializaciei
/* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
Alex
|
|
|
|
|
Feb 17 2009, 17:33
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 7-11-06
Пользователь №: 22 054

|
pan_oleg Если кварц действительно 6-пиковый, то нагрузочные кондёры должны быть в диапазоне 10-12пФ
|
|
|
|
|
Apr 13 2012, 19:40
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
У меня LSE включился после того как я перед его включением сделал то что написано на с 59 документации RM0038 Reference manual STM32L151 Код RCC->APB1ENR|=RCC_APB1ENR_PWREN; PWR->CR|=PWR_CR_DBP; Стоит кварц KX-327NT c конденсаторами 8.2Pf В документации написано CL standard 12.5Pf available 7 and 9 Pf .
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
Apr 14 2012, 18:57
|
Знающий
   
Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725

|
Цитата(pan_oleg @ Feb 17 2009, 16:41)  народ,на практике кто работал с LSE на STM32?, посоветуйте что-то Слежу за этой темой, т.к. и сам столкнулся с проблемой. Первое, что сделал, - убрал конденсаторы вообще! RTC стал запускаться стабильней. Правда, в моем устройстве есть батарейка, которая продолжает питать RTC, пока питание отключено. Поэтому уж если кварц раз запустился, он тикает и дальше. Чтобы избежать блокирования программы в случае незапуска LSE я написал свою процедуру инициализации, которая при старте системы запускает LSE и ждет его секунду, а в случае неудачи переключается на LSI. Затем один из процессов программы пытается периодически перезапустить LSE, что в итоге приводит рано или поздно к успеху. Есть еще тема включить параллельно кварцу сопротивление от 1M и выше (как это рекомендуют и для высокочастотных генераторов), чтобы дать инвертору смещение по постоянному току.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|