Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F101x + LSE
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
pan_oleg
День добрый.
У меня проблема с 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
Цитата(pan_oleg @ Jan 16 2009, 17:22) *
День добрый.
У меня проблема с STM32F101CBT6, в котором иногда, (и это иногда не поддается систематизации) не хочет запускаться генератор на 32КГц.

Не пробовали поиграться с номиналами нагрузочных ёмкостей кварца?
Попробуйте их уменьшить...
cebotor
Цитата(pan_oleg @ Jan 16 2009, 16:22) *
Извесно олько где весит - не может дождатся RCC_FLAG_LSERDY.

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



Задержка эта сколько ?

в мануале наеписано что он старнует 3 секунды !
pan_oleg
видел про 3 секунды. иногда 3, а иногда 30 секунд, или 10 минут, когда как,
при том при тех же температурных условиях,
например ноч девайса в холодильнике при -15, и может запустится, n раз запустится, потом нет
ничего не могу понять, может сделать задержку на 3 сек после велючения генераторана 32кГц, а потом проверять бит его состояния?
MALLOY2
Вы лучше сделайте так.
включите генератор, далее проверяйте флаг готовности если он в течении 6 секунд не будет установлен скажем зажгите светодиод, в майн поставте вечный цикл да бы никак не грешить на программу. Если при таком раскладе у вас будут какие то не понятки со стартом переходите на шаманство с железом, попробуйте емкостя поменять возмите несколько кварцев, могу еще заметить факт что кварцы 32 кГц китайские в маленьком крулом корпусе боятся ударов, тобиш не бейте их smile.gif.
pan_oleg
попробувал кварц уменшить до 5 пФ, не помогает,
светодиодик я зажигаю, и место где весит точно известно,

/* Enable LSE */
RCC_LSEConfig(RCC_LSE_ON);
/* Wait till LSE is ready */
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
{
}(тут и весим вечно)

тоесть, или кварц не запускается, или біт что он запустился STM32 не выставил, а почему не запкстился не пойму
P.S. буду рад любым идеям, ато мне только бредовые уже лезут в голову
sonycman
Цитата(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
У меня начинаются подозрения, что STM что-то не договорил...
Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE. crying.gif
На нем STM32F103, у меня STM32F101CBT6.
Чо все STM32 с багом, или у Olimex отладочная плато тож с багом?
чото мне это все не нравится
sonycman
Цитата(pan_oleg @ Jan 20 2009, 13:24) *
У меня начинаются подозрения, что STM что-то не договорил...
Отладка Olimex STM32H103 после прогулки чуть на мороз (опять же за окно) тоже весит, не стартует LSE. crying.gif
На нем STM32F103, у меня STM32F101CBT6.
Чо все STM32 с багом, или у Olimex отладочная плато тож с багом?
чото мне это все не нравится

Ну а если не выносить плату за окно - то с олимексом всё стабильно?

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

были подобные проблемы с RTC DS1306 - проблемы в пылинках и прочем мусоре, протиралось бензином и всё работало... вообще подобные вещи лаком покрывают.
pan_oleg
та не много за окном, может -1...0.
питание у меня LM1117ADJ - 3.0V выдает, кондеры 4 шт 0,1мкф
не пойму, ладно, допустим у мення чото, а чо же олымекс выделуется отладка ?
sonycman
Цитата(pan_oleg @ Jan 20 2009, 15:31) *
та не много за окном, может -1...0.
питание у меня LM1117ADJ - 3.0V выдает, кондеры 4 шт 0,1мкф
не пойму, ладно, допустим у мення чото, а чо же олымекс выделуется отладка ?

А фирменную плату вы от USB компьютера запитываете?
pan_oleg
нет, от своего,
пробовал и от юсб только что, тоже задержка старта в 30 секунд.
sonycman
Цитата(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
pan_oleg
Так какие у вас нагрузочные конденсаторы от пинов кварца на землю стоят сейчас? Марка кварца какая?
Например, для этого: http://www.geyer-electronic.de/pdfs/qurz/m...8.pdf?langSel=0 требуются кондёры по ~24-27пФ. Я использую NPO

З.Ы. И не мешало бы привести разводку участка кварц-проц
ababkin
poprobui vot eto dobavit' pered vsei inicializaciei

/* Enable PWR and BKP clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);


Alex
pan_oleg
взял кварц KX-38T 6pF (GEYER), кондеры по 6 pF, после мороза (где-то -3°С) не запускается LSE?
что-то дела совсем плохи,
народ,на практике кто работал с LSE на STM32?, посоветуйте что-то
MikePic
pan_oleg
Если кварц действительно 6-пиковый, то нагрузочные кондёры должны быть в диапазоне 10-12пФ
MiklPolikov
У меня 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
Цитата(pan_oleg @ Feb 17 2009, 16:41) *
народ,на практике кто работал с LSE на STM32?, посоветуйте что-то

Слежу за этой темой, т.к. и сам столкнулся с проблемой. Первое, что сделал, - убрал конденсаторы вообще! RTC стал запускаться стабильней. Правда, в моем устройстве есть батарейка, которая продолжает питать RTC, пока питание отключено. Поэтому уж если кварц раз запустился, он тикает и дальше.

Чтобы избежать блокирования программы в случае незапуска LSE я написал свою процедуру инициализации, которая при старте системы запускает LSE и ждет его секунду, а в случае неудачи переключается на LSI. Затем один из процессов программы пытается периодически перезапустить LSE, что в итоге приводит рано или поздно к успеху.

Есть еще тема включить параллельно кварцу сопротивление от 1M и выше (как это рекомендуют и для высокочастотных генераторов), чтобы дать инвертору смещение по постоянному току.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.