Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F405 напряжение VBAT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Mister_DSP
Добрый день.

Камень STM32F405 в QFP64. Очень не хочется подавать напряжение питания на VBAT: часы RTC 32 kHz и порты PC13,14,15 не собираюсь использовать.
Можно ли в этом случае не подавать питание на VBAT ?

Аналогичный вопрос про VDDA. АЦП и ЦАП не собираюсь использовать, можно ли на VDDA не подавать питание? Или подача здесь обязательна, так как оно питает ещё синтезатор частоты PLL контроллера?

Нежелание подавать питание продиктовано упрощением схемы и малыми габаритами целевого устройства.
scifi
Цитата(Mister_DSP @ Dec 8 2016, 14:24) *
Аналогичный вопрос про VDDA. АЦП и ЦАП не собираюсь использовать, можно ли на VDDA не подавать питание? Или подача здесь обязательна, так как оно питает ещё синтезатор частоты PLL контроллера?

Да, PLL питается оттуда.
ViKo
AN4488
Прочитайте, и нам доложите.
Mister_DSP
Цитата(ViKo @ Dec 8 2016, 12:38) *
AN4488
Прочитайте, и нам доложите.


Читаю... Попутно увидел, что на RESET уже подтяжка есть. Тогда зачем на плате STM32F4discovery напаяна подтяжка в 100 кОм? Хоть в даташите стоит "not fitted", глянул - реально напаян!
scifi
Цитата(Mister_DSP @ Dec 8 2016, 14:57) *
Читаю... Попутно увидел, что на RESET уже подтяжка есть. Тогда зачем на плате STM32F4discovery напаяна подтяжка в 100 кОм? Хоть в даташите стоит "not fitted", глянул - реально напаян!

Вот вам очередное подтверждение того, что создатели демо-плат - не супермены. Да, лишний резистор. Бывает laughing.gif
Mister_DSP
Разъясните пожалуйста назначение R38 и C38 в схеме что на картинке. Полагаю, что это - отчаянная попытка уменьшить дребезг контактов пользовательской кнопки.
Можно ли как-нибудь упростить подключение кнопки так чтоб порт не накрылся?

До этого работал с AVR-ками, в них я кнопку сажал с порта на землю и включал подтяжку.

Нажмите для просмотра прикрепленного файла
Сергей Борщ
QUOTE (Mister_DSP @ Dec 8 2016, 15:44) *
Можно ли как-нибудь упростить подключение кнопки
Все выкинуть, кнопку с порта на землю, подтяжку с кнопки к питанию (чтобы обеспечить через кнопку ток самоочищения контактов).
QUOTE (Mister_DSP @ Dec 8 2016, 15:44) *
так чтоб порт не накрылся?
Смотря чем вы будете в кнопку тыкать. Если электрошокером - то чтобы порт не накрылся схему придется усложнить. Если пальцем - то достаточно сделать так, как я написал выше.
Mister_DSP
Цитата(Сергей Борщ @ Dec 8 2016, 14:30) *
Все выкинуть, кнопку с порта на землю, подтяжку с кнопки к питанию (чтобы обеспечить через кнопку ток самоочищения контактов).

Допустимо ли в этом случае резистор к питанию не ставить, если будет задействован подтягивающий резистор в контроллере?
Анализ нажатия этой кнопки будет не раньше чем инициализация портов.

Что такое ток самоочищения контактов?

На кнопку буду жать пальцем через резиновую прокладку толщиной 1 мм (вытащил с пульта-брелка).
Сергей Борщ
QUOTE (Mister_DSP @ Dec 8 2016, 16:46) *
Допустимо ли в этом случае резистор к питанию не ставить, если будет задействован подтягивающий резистор в контроллере?
Если вашей кнопке достаточно этого тока для пробоя оксидной пленки и возможные помехи будут недостаточно сильными, чтобы перетянуть встроенную подтяжку - да, можно.
QUOTE (Mister_DSP @ Dec 8 2016, 16:46) *
Что такое ток самоочищения контактов?
Минимально допустимый коммутируемый ток, еще способный разрушить оксидную пленту на контактах. Примерно так. Тыц и тыц
scifi
Цитата(Сергей Борщ @ Dec 8 2016, 17:08) *
Минимально допустимый коммутируемый ток, еще способный разрушить оксидную пленту на контактах. Примерно так.

Кстати, подозреваю, что скользящие контакты самоочищаются и без тока. То есть от конструкции кнопки тоже зависит.
ViKo
Если упрощать... а он вам нужен, WakeUp? User?
Pridnya
Цитата(Сергей Борщ @ Dec 8 2016, 16:30) *
Все выкинуть, кнопку с порта на землю, подтяжку с кнопки к питанию (чтобы обеспечить через кнопку ток самоочищения контактов).

Если сделать как вы советуете, то управляться будет не высоким уровнем, а низким. Да и на STM32F4DISCOVERY кнопка стоит самая простая пластиковая, питание 3 вольта, там контакты не загрязняются. Какое там очищение контактов током? Вообще, где вы прочитали про этот эффект для маленьких тактовых кнопок? Можно ссылку? Я тоже хочу почитать.
Mister_DSP
Не совсем понял про подмазывающий ток для кнопки! Точнее вообще, сбит с толку.

Кнопки планирую использовать такие (новые, такие стоят в пультах-брелках автосигналок сбоку):


Есть возможность использовать такие (б/у снятые с сотовых телефонов):
Нажмите для просмотра прикрепленного файла

О каких токах через кнопку идёт речь, когда кнопка разлмкнута - ток не течет, а когда замкнута, то микротоки с затвора полевого транзистора входного порта идут на землю?

Вот схема типичного подключения кнопки к микроконтроллеру:
Нажмите для просмотра прикрепленного файла

В этой схеме разруливается смазывание контактов или нет? Правильна ли она? Не будет заедать кнопка после сто-пиццот нажатий?

Тема реально заинтересовала, потому что на опыте убедился, что некоторые кнопки переставали работать (выборочно, думал что брак...) - а тут все сложнее.

ViKo, кнопка нужна, порт любой, не обязательно WakeUp, это для нажатия в режим "передача" (PTT в рации)
Сергей Борщ
QUOTE (Pridnya @ Dec 9 2016, 09:50) *
Если сделать как вы советуете, то управляться будет не высоким уровнем, а низким.
И что, это великая катастрофа для программиста? Или "библиотеки" не позволяют проверять наличие нуля вместо наличия единицы на входе?

QUOTE (Pridnya @ Dec 9 2016, 09:50) *
Да и на STM32F4DISCOVERY кнопка стоит самая простая пластиковая, питание 3 вольта, там контакты не загрязняются. Какое там очищение контактов током?
Любые негермитичные контакты окисляются. Если вы с этим не сталкивались - значит либо через ваши кнопки течет достаточно большой ток, либо ваша кнопка работает недостаточно долго. Я сталкивался.
QUOTE (Pridnya @ Dec 9 2016, 09:50) *
Вообще, где вы прочитали про этот эффект для маленьких тактовых кнопок?
Вы никогда не слышали про деление реле на "силовые" и "сигнальные"? Для последних нормируется минимальный коммутируемый ток. "Совпадение? Не думаю!". С кнопками то же самое, только ток не нормируется, считается, что 5 мА достаточно.
Ссылок быстро не нашел, к сожалению.

QUOTE (Mister_DSP @ Dec 9 2016, 10:01) *
О каких токах через кнопку идёт речь, когда кнопка разлмкнута - ток не течет, а когда замкнута, то микротоки с затвора полевого транзистора входного порта идут на землю?
Вот именно из-за "микротоков" и нужна внешняя подтяжка.
QUOTE (Mister_DSP @ Dec 9 2016, 10:01) *
Вот схема типичного подключения кнопки к микроконтроллеру:
Нажмите для просмотра прикрепленного файла
В этой схеме разруливается смазывание контактов или нет? Правильна ли она? Не будет заедать кнопка после сто-пиццот нажатий?
Да, схема правильная. Если сопротивление Rpullup обеспечит ток через кнопку порядка 5 мА или более - кнопка заедать не будет. Дребезг, разумеется, надо обрабатывать программно (открою еще один секрет - для этого достаточно опрашивать кнопку раз в 50 мС).
Pridnya
Цитата(Сергей Борщ @ Dec 9 2016, 10:36) *
И что, это великая катастрофа для программиста? Или "библиотеки" не позволяют проверять наличие нуля вместо наличия единицы на входе?

В моей практике было несколько случаев, когда управлять нулем не очень удачное решение. И использовать только внутренние подтягивающие резисторы портов и т.п. с момента включения до инициализации выводы микроконтроллеров могут быть в неоперделенном состоянии несколько десятков миллисекунд. Страшно как-то нулем управлять.
Цитата(Сергей Борщ @ Dec 9 2016, 10:36) *
Любые негермитичные контакты окисляются. Если вы с этим не сталкивались - значит либо через ваши кнопки течет достаточно большой ток, либо ваша кнопка работает недостаточно долго. Я сталкивался.

Я просто несколько раз разбирал компьютерные мышки, так есть экземпляры в которых кнопки более 10 лет проработали и еще работают. Там же тоже негерметичные тактовые кнопки.

А про реле, так там отдельная песня: одно время даже был нормативный документ в релейной защите, который требовал, чтобы входы устройств были с функцией самоочистки контактов реле (в момент подачи сигнала на вход ток большой, а затем снижается), но этот бред позже отменили (или он был написан под конкретного кого-то). Но там постоянное напряжение 110 вольт и индуктивные нагрузки (длинные сигнальные провода) - там контакты могут подгорать.
Цитата(Сергей Борщ @ Dec 9 2016, 10:36) *
Вы никогда не слышали про деление реле на "силовые" и "сигнальные"? Для последних нормируется минимальный коммутируемый ток. "Совпадение? Не думаю!". С кнопками то же самое, только ток не нормируется, считается, что 5 мА достаточно.
Ссылок быстро не нашел, к сожалению.

Вы так резко соскользнули с тактовых кнопок на реле (да еще и сигнальные и силовые), что за вами не угнаться. Это хорошо, что вы задумались. Весь смысл в последнем предложении этого абзаца. Я вас понял. Спасибо.
Mister_DSP
Цитата(Сергей Борщ @ Dec 9 2016, 07:36) *
Вот именно из-за "микротоков" и нужна внешняя подтяжка.
Да, схема правильная. Если сопротивление Rpullup обеспечит ток через кнопку порядка 5 мА или более - кнопка заедать не будет. Дребезг, разумеется, надо обрабатывать программно (открою еще один секрет - для этого достаточно опрашивать кнопку раз в 50 мС).


Тогда остается выяснить значение сопротивления подтяжки на портах STM32F405. На счет дребезга и задержек в курсе - у меня алгоритмически задержка итак вышла: обработка 1 фрейма вокодера на энкод или декод занимает относительно приличное время. К тому же после возникновения первого прерывания по нажатию кнопки, прерывание запрещается, и разрешаются когда кнопа будет отпущена....

Нашёл ответ по поводу VBat. Даташит, данный ViKo, говорит о том что рекомендуется замкнуть на питание и +1 керамика на 0,1 мкФ.... да.. экономии не вышло: раз рекомендуют - значит надо ставить. А то работа схемы будет зависеть от фазы Луны sm.gif

Ещё вопрос по ногам Boot0,1. Устройство в серию, отладка уже пройдена, релиз программы написан. Через SWD заливаю во флеш. Значит Boot0=0. А вот boot1 может быть любым. Можно ли его оставить висеть в воздухе? Или тоже надо притягивать к питанию или земле? Вдруг тока будет кушать больше или по наводке выбьет?

Как я понял что и притягивать на землю нельзя прямо, надо по кр. мере через резистор 510 Ом - чтобы с земли удары не влияли на порт (Ground Bounce или как там его....)

Не люблю ставить детали, толку от которых просто не будет, да и размерами ограничен....
Pridnya
Цитата(Mister_DSP @ Dec 9 2016, 11:14) *
Ещё вопрос по ногам Boot0,1. Устройство в серию, отладка уже пройдена, релиз программы написан. Через SWD заливаю во флеш. Значит Boot0=0. А вот boot1 может быть любым. Можно ли его оставить висеть в воздухе? Или тоже надо притягивать к питанию или земле? Вдруг тока будет кушать больше или по наводке выбьет?

Как я понял что и притягивать на землю нельзя прямо, надо по кр. мере через резистор 510 Ом - чтобы с земли удары не влияли на порт (Ground Bounce или как там его....)

Не люблю ставить детали, толку от которых просто не будет, да и размерами ограничен....

В RM0090
Mister_DSP
Цитата(Pridnya @ Dec 9 2016, 09:23) *
В RM0090

Эту табличку я видел, она не даёт ответа на мой вопрос (че с Boot1 делать).
Однако же, проанализировав, пришел к выводу, что резисторы лучше поставить: boot0 и boot1 притянуть к земле через 10 кОм (во избежание Ground bounce и чтоб мало тока жрали).
На reset и кнопку резисторы лучше поставить, потому что зима, холодно - можно выбить подтяжку статикой, резисторы на питание не помешают, а суппрессоры(TVS) ставить - слишком жирно.
То что кнопка будет нажата по нулю - ничего страшного, все мои предыдущие изделия так работали. Прийдётся прерывание ловить по falling, а не по rising.
Так что с-экономить не выходит sm.gif

На счёт тока 5 мА, о котором Сергей Борщ писал: при питании 3V, это ж резистор будет 600 Ом - ИМХО как-то слишком жирно для подтяжки кнопки!
Pridnya
Цитата(Mister_DSP @ Dec 9 2016, 12:33) *
На счёт тока 5 мА, о котором Сергей Борщ писал: при питании 3V, это ж резистор будет 600 Ом - ИМХО как-то слишком жирно для подтяжки кнопки!

Так в развитии темы "минимальный ток самоочистки" (удаленного концевика biggrin.gif ) появится тема "напряжение пробоя оксидной пленки" или "процентное соотношение компонентов в сплаве из которого сделаны контакты реле".
Цитата(Mister_DSP @ Dec 9 2016, 12:33) *
Эту табличку я видел, она не даёт ответа на мой вопрос (че с Boot1 делать).

У меня PB2/BOOT1 подсоединен к GND через резистор 1кОм.
Сергей Борщ
QUOTE (Pridnya @ Dec 9 2016, 11:13) *
В моей практике было несколько случаев, когда управлять нулем не очень удачное решение. И использовать только внутренние подтягивающие резисторы портов и т.п. с момента включения до инициализации выводы микроконтроллеров могут быть в неоперделенном состоянии несколько десятков миллисекунд. Страшно как-то нулем управлять.
"Смешались в кучу кони, люди".
1) Я не знаю вашей практики, но опрашивать с висящей на порту кнопки можно хоть единицу, хоть ноль. Никакой разницы нет абсолютно (если программист еще не забыл двоичную алгебру).
2) Пока нога не опрашивается - на ней может быть все, что угодно. Перед опросом надо включить подтяжку, хоть внешнюю, хоть внутренюю - это снова задача программиста. После этого никаких неопределенных состояний на входе не будет.
3) Для кнопок, I2C, 1-wire и тому подобных интерфейсов внутренней подтяжки недостаточно, надо ставить внешнюю, всегда.
4) Для DIP-переключателей, перемычек на штырях, которые выставляются один раз и навсегда в желаемое положение и находятся сравнительно близко от контроллера (ну не знаю, сантиметров 5 по плате) внутренней подтяжки достаточно.
4) Никто не может помешать вам самостоятельно наступить на грабли.


QUOTE (Mister_DSP @ Dec 9 2016, 12:33) *
Эту табличку я видел, она не даёт ответа на мой вопрос (че с Boot1 делать).
Ничего не делать. Эта таблица показывает, что если у вас BOOT0 притянута к земле (а это так в любом законченном устройстве), то состояние BOOT1 абсолютно ни на что не влияет. Если же ваше устройство при производстве программируется через заводской загрузчик, то надо предусмотреть подтяжку BOOT1 к земле.
Allregia
Цитата(Pridnya @ Dec 9 2016, 09:13) *
В моей практике было несколько случаев, когда управлять нулем не очень удачное решение. И использовать только внутренние подтягивающие резисторы портов и т.п. с момента включения до инициализации выводы микроконтроллеров могут быть в неоперделенном состоянии несколько десятков миллисекунд. Страшно как-то нулем управлять.


И как это повлияет на работу устройства? Это-ж е ВХОДЫ а не ВЫХОДЫ!
Ну в неопределенном состоянии входы, пока не прошла инициализация пуллапов, ну так вы и входы до этого момента тоже ведь не опрашиваете, какая Вам разница какой там потенциал?
Pridnya
Цитата(Allregia @ Dec 10 2016, 10:27) *
И как это повлияет на работу устройства? Это-ж е ВХОДЫ а не ВЫХОДЫ!
Ну в неопределенном состоянии входы, пока не прошла инициализация пуллапов, ну так вы и входы до этого момента тоже ведь не опрашиваете, какая Вам разница какой там потенциал?

Чтобы управлять высоким уровнем нужно что-то подать на вход, должен быть источник напряжения.
Чтобы управлять нулем достаточно чему-нибудь оборваться в схеме или замкнуть и вот он ноль, т.е. источника нет, а управляющий сигнал как бы есть.
Obam
Цитата
…с момента включения до инициализации выводы микроконтроллеров могут быть в неоперделенном состоянии несколько десятков миллисекунд…

Так пишите код, чтоб неопределённое состояние было считаные мкс.

Цитата
Ну в неопределенном состоянии входы, пока не прошла инициализация пуллапов, ну так вы и входы до этого момента тоже ведь не опрашиваете, какая Вам разница какой там потенциал?


Ребятушки, не забывайте: логические, а тем паче КМОП-овские, входы "висеть" (из-за чего сквозные токи во входных каскадах) не должны.
Коммутировать туда-сюда (я правильно понял?) PullUp-ы/PullDown-ы - дурная практика.

Цитата
т.е. источника нет, а управляющий сигнал как бы есть.


Есть "поглотитель" (current sink) тока, что разрушает магию (;
Allregia
Цитата(Obam @ Dec 10 2016, 21:07) *
Ребятушки, не забывайте: логические, а тем паче КМОП-овские, входы "висеть" (из-за чего сквозные токи во входных каскадах) не должны.


Скока? Несколько миллисекунд а тои десятков микросекунд от включения питания до инициализации пуллапов?
Obam
Цитата
Ребятушки, не забывайте: логические, а тем паче КМОП-овские, входы "висеть" (из-за чего сквозные токи во входных каскадах) не должны.

Цитата(Allregia @ Dec 11 2016, 01:50) *

Скока? Несколько миллисекунд а тои десятков микросекунд от включения питания до инициализации пуллапов?



Ну во-первых, цитата и ремарка, хотелось бы, чтоб соответствовали друг-дружке.

Во-вторых, выдержка из cstartup_M.c
Код
#pragma required=__vector_table
void __iar_program_start( void )
{
  WDT ->WDT_MR = WDT_MR_WDDIS;//                        выключен WatchDog

  __set_PSP((uint32_t)(__sfe( "Process_stack")));//                настройка указателей привилегированных режимов

  __GPIO_CONFIG ();//                                GPIO в исходном состоянии

  __set_BASEPRI (0x0F << 4);

/* Ну и дальше прочая ботва */
  __iar_init_core();
  __iar_init_vfp();
  __cmain();
}


Ядро стартует на 4 МГц, так что, именно что считаные микросекунды до установки исходного состояния GPIO.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.