Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32L + LIS3DH
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
T800
Приветствую всех. Вопрос может быть не совсем по теме раздела, но думаю тут на него лучше ответят.
Очередной затык в разработке девайса. Который выпил у меня неожиданно много крови.
Суть дела такая.

На плате STM32L + LIS3DH соединены по SPI.

Потребление контроллера STM32L151С8. В stop mode с RTC (внешний кварц), питание 3V получается 14 uA. Замерял отрезав вообще все провода к LIS3DH. В даташите обещают до 4 uA. Искал что я мог сделать не так - не нашёл.
Все ножки сконфигурированы как аналоговый вход, кроме ножки прерывания от LIS3DH (по фронту на этой ноге контроллер просыпается). Если подать питание 2.5 V то потребление 3-4 uA.

Но это пол беды.
с включением в схему LIS3DH потребление получается минимум 70uA (при этом контроллер держит поднятым CS, как я понял при этом активный интерфейс акселерометра - I2C). На STшном форуме проблема упоминается, но решения нет. Писали что ногу SDO/SA0 надо притянуть к VDD, мне не помогло. Ток течёт через ножку Vdd_IO, если её отрезать то всё становится нормально.
Кто-нибудь сталкивался с подобными проблемами? Что можете посоветовать проверить? у меня мысли кончились уже.
dac
уже 100 раз писали - выводы контроллера надо настраивать как выходы, а не аналоговые входы. по подключению LIS3DH - схему в студию, телепаты опять работать не хотят sm.gif
T800
Сделал на все ноги выходы и поставил в 0, результат - 98 uA было 14.

кусок схемы такой

http://saveimg.ru/show-image.php?id=bf958b...dbb27049e111878
Aleksandr Baranov
Цитата(T800 @ Oct 27 2014, 08:08) *
Сделал на все ноги выходы и поставил в 0, результат - 98 uA было 14.


А если сделать на все ноги выходы и поставить в 1?
dac
QUOTE (T800 @ Oct 27 2014, 18:08) *
Сделал на все ноги выходы и поставил в 0, результат - 98 uA было 14.
резисторы/подтяжки, внешние соединения учли? в 0 тоже надо с умом ставить 10кОм дают ток 300мкА, внутренний PULL UP примерно 50мкА. недавно на форуме обсуждалось - человек ноги кварца не настроил, те же проблемы
касаясь LIS3DH - аналоговые входы на землю посадите.
В общем и целом для малопотребляющих режимов - висячих ног быть не должно, или настраивать на выход или вход с подтяжкой.
T800
Цитата(dac @ Oct 27 2014, 16:57) *
резисторы/подтяжки, внешние соединения учли? в 0 тоже надо с умом ставить 10кОм дают ток 300мкА, внутренний PULL UP примерно 50мкА. недавно на форуме обсуждалось - человек ноги кварца не настроил, те же проблемы
касаясь LIS3DH - аналоговые входы на землю посадите.
В общем и целом для малопотребляющих режимов - висячих ног быть не должно, или настраивать на выход или вход с подтяжкой.


спасибо за совет, про ADC на акселерометре я вообще забыл!
А вот насчёт кварца - у меня стоит только внешний часовой кварц, он работает нормально, настройка его ног ведь не нужна? С ногами HSE понятно, они не подключены, их настраиваем как все не используемые GPIO.
dac
QUOTE (T800 @ Oct 27 2014, 19:08) *
у меня стоит только внешний часовой кварц, он работает нормально, настройка его ног ведь не нужна? С ногами HSE понятно, они не подключены, их настраиваем как все не используемые GPIO.
все верно, и еще надо учитывать подключенные выводы, например у той же LIS3DH может на SPICLK или другом выводе подтяжка висеть, а у Вас на выходе мк 0
T800
Что-то пока ничего не помогло. ADC к земле припаял, СS и SDO на выход в 1, в таком варианте наименьший ток. Но кардинально снизить не получается.
dac
QUOTE (T800 @ Oct 27 2014, 20:47) *
Что-то пока ничего не помогло. ADC к земле припаял, СS и SDO на выход в 1, в таком варианте наименьший ток. Но кардинально снизить не получается.
ну дальше смотрите уже регистры, отключение периферии и т.д.
T800
Да нет, тут всё в порядке. Вы мне кое-что напомнили, за что спасибо, я пошаманил инициализацию ног - стало 2.5uA у контроллера. То что и нужно было.
А вот при подключении акселерометра нестабильно в районе 100 uA. Как ни меняй конфигурацию интерфейсных ног, результат примерно один. Кардинально помогает перерубание VDD_IO акселерометра.
John Silver
Таки расскажите, что Вы с инициализацтей нашаманили.
T800
Всё оказалось банально - два порта я ранее не инициализировал (в том числе H, который по совместительству вход HSE), поэтому они не тактировались и соответственно не конфигурировались как надо перед спячкой.
С акселерометром вроде тоже решился вопрос. Переводом в I2C, выставлении на SA0 логической "1" и самое интересное до чего я раньше не додумался - на SCL тоже "1". Я как то не думал что потребление будет зависеть от состояния интрефейса, т.е. если клока нет то типа и передачи нет и нечему потреблять.
Вот как то так. Пока не тестировал окончательно, но потребление всей этой компании стало в пределах 7 uA.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.