Полная версия этой страницы:
STM32F101x + LSE
pan_oleg
Jan 16 2009, 13:22
День добрый.
У меня проблема с 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 - оставлен в воздухе.
Подскажите, может кто в курсе, куда копать.
Заренее благодарен, Олег.
sonycman
Jan 16 2009, 21:29
Цитата(pan_oleg @ Jan 16 2009, 17:22)

День добрый.
У меня проблема с STM32F101CBT6, в котором иногда, (и это иногда не поддается систематизации) не хочет запускаться генератор на 32КГц.
Не пробовали поиграться с номиналами нагрузочных ёмкостей кварца?
Попробуйте их уменьшить...
cebotor
Jan 16 2009, 21:42
Цитата(pan_oleg @ Jan 16 2009, 16:22)

Извесно олько где весит - не может дождатся RCC_FLAG_LSERDY.
Еще такой вопрос - когда в этом цикле - на кварце точно генерации нет ? и если нет - пробовали завести с толкача (коснуться пальцем) ? Коли поможет - то или обвязка или кварцы сами - "маленькие такие ,кругленькие " ;-)
pan_oleg
Jan 19 2009, 08:03
По поводу запуска с толчка, когда как. Заметил что при касании на корпус кварца иногда помогало, и в отладке STM32-H103 на землю корпус посажен кварца (и вроде так лучше везде делать). Я у себя посадил корпус кварца на землю, а также Vbat c Vdd соединил, как в доке сказано, вроде как лучше. Вероятнось нормального запуска увеличилась. Пробовал кварц брать с STM32-H103 отладки, тоже с задержкой стартует.
По поводу посмотремь осцилографом, нет пока возможности.
Может кондеры не такие взял, NPO? X7R?
MALLOY2
Jan 19 2009, 08:45
Цитата(pan_oleg @ Jan 19 2009, 12:03)

с задержкой стартует.
Задержка эта сколько ?
в мануале наеписано что он старнует 3 секунды !
pan_oleg
Jan 19 2009, 09:35
видел про 3 секунды. иногда 3, а иногда 30 секунд, или 10 минут, когда как,
при том при тех же температурных условиях,
например ноч девайса в холодильнике при -15, и может запустится, n раз запустится, потом нет
ничего не могу понять, может сделать задержку на 3 сек после велючения генераторана 32кГц, а потом проверять бит его состояния?
MALLOY2
Jan 19 2009, 10:49
Вы лучше сделайте так.
включите генератор, далее проверяйте флаг готовности если он в течении 6 секунд не будет установлен скажем зажгите светодиод, в майн поставте вечный цикл да бы никак не грешить на программу. Если при таком раскладе у вас будут какие то не понятки со стартом переходите на шаманство с железом, попробуйте емкостя поменять возмите несколько кварцев, могу еще заметить факт что кварцы 32 кГц китайские в маленьком крулом корпусе боятся ударов, тобиш не бейте их

.
pan_oleg
Jan 19 2009, 14:33
попробувал кварц уменшить до 5 пФ, не помогает,
светодиодик я зажигаю, и место где весит точно известно,
/* Enable LSE */
RCC_LSEConfig(RCC_LSE_ON);
/* Wait till LSE is ready */
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
{
}(тут и весим вечно)
тоесть, или кварц не запускается, или біт что он запустился STM32 не выставил, а почему не запкстился не пойму
P.S. буду рад любым идеям, ато мне только бредовые уже лезут в голову
sonycman
Jan 19 2009, 15:49
Цитата(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 генератор на фирменной плате - взять какой-нибудь кит от Олимекса или другой, где могут быть исключены проблемы с разводкой/некачественными комплектующими?
pan_oleg
Jan 20 2009, 09:24
У меня начинаются подозрения, что STM что-то не договорил...
Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE.
На нем STM32F103, у меня STM32F101CBT6.
Чо все STM32 с багом, или у Olimex отладочная плато тож с багом?
чото мне это все не нравится
sonycman
Jan 20 2009, 10:33
Цитата(pan_oleg @ Jan 20 2009, 13:24)

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

У меня начинаются подозрения, что STM что-то не договорил...
Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE.
На нем STM32F103, у меня STM32F101CBT6.
Чо все STM32 с багом, или у Olimex отладочная плато тож с багом?
чото мне это все не нравится
были подобные проблемы с RTC DS1306 - проблемы в пылинках и прочем мусоре, протиралось бензином и всё работало... вообще подобные вещи лаком покрывают.
pan_oleg
Jan 20 2009, 11:31
та не много за окном, может -1...0.
питание у меня LM1117ADJ - 3.0V выдает, кондеры 4 шт 0,1мкф
не пойму, ладно, допустим у мення чото, а чо же олымекс выделуется отладка ?
sonycman
Jan 20 2009, 12:46
Цитата(pan_oleg @ Jan 20 2009, 15:31)

та не много за окном, может -1...0.
питание у меня LM1117ADJ - 3.0V выдает, кондеры 4 шт 0,1мкф
не пойму, ладно, допустим у мення чото, а чо же олымекс выделуется отладка ?
А фирменную плату вы от USB компьютера запитываете?
pan_oleg
Jan 20 2009, 13:06
нет, от своего,
пробовал и от юсб только что, тоже задержка старта в 30 секунд.
sonycman
Jan 20 2009, 14:22
Цитата(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 пФ.
Altemir
Jan 21 2009, 18:53
pan_olegТак какие у вас нагрузочные конденсаторы от пинов кварца на землю стоят сейчас? Марка кварца какая?
Например, для этого:
http://www.geyer-electronic.de/pdfs/qurz/m...8.pdf?langSel=0 требуются кондёры по ~24-27пФ. Я использую NPO
З.Ы. И не мешало бы привести разводку участка кварц-проц
ababkin
Jan 27 2009, 03:52
poprobui vot eto dobavit' pered vsei inicializaciei
/* Enable PWR and BKP clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
Alex
pan_oleg
Feb 17 2009, 15:41
взял кварц KX-38T 6pF (GEYER), кондеры по 6 pF, после мороза (где-то -3°С) не запускается LSE?
что-то дела совсем плохи,
народ,на практике кто работал с LSE на STM32?, посоветуйте что-то
MikePic
Feb 17 2009, 17:33
pan_oleg
Если кварц действительно 6-пиковый, то нагрузочные кондёры должны быть в диапазоне 10-12пФ
MiklPolikov
Apr 13 2012, 19:40
У меня 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 .
KnightIgor
Apr 14 2012, 18:57
Цитата(pan_oleg @ Feb 17 2009, 16:41)

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