Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32L0: GPIO Speed
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
k000858
Имеем STM32L052, к которому подключен девайс по SPI, скорость SPI 1MHz, какую выбрать скорость GPIO для корректной работы SPI?

почему спрашиваю: при выборе GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; имеем глюки при работы SPI, да и видно по осциллографу что посылки кривоватые.

ViKo
Понятно, какую (скорость). Не бойтесь скорости в пределах рабочих режимов. А вот превышать (нарушать) не надо.
k000858
Цитата(ViKo @ Aug 15 2016, 10:42) *
Понятно, какую (скорость). Не бойтесь скорости в пределах рабочих режимов. А вот превышать (нарушать) не надо.

ничего не понял..
какую же все такие скорость GPIO выставлять для SPI ног (SPI 1 MHz) ???

arhiv6
В документации всё есть:
Low speed 400 kHz
Medium speed 2 MHz
High speed 10 MHz
Very high speed 40 MHz

Разумеется, Low speed Вам не подойдёт, минимум Medium speed.
ViKo
Цитата(k000858 @ Aug 15 2016, 10:48) *
ничего не понял..
какую же все такие скорость GPIO выставлять для SPI ног (SPI 1 MHz) ???

Я задаю скорость SPI предельно возможную для данных компонентов. И скорость GPIO (фактически, ток) достаточную, для работы на этой частоте. Как минимум, не меньше.
demiurg_spb
Осциллограф Вам в помощь!
ViKo
А Cube во вред. laughing.gif
k000858
причем здесь куб
мне непонятно, частота 1Мгц GPIO = частоте 1MHz SPI?

то есть мне для понижения потребления необходимо закрутить гайки в виде скорости GPIO, но до такой скорости которой достаточно для работы периферии.

можно ли сказать что ноги SPI, работаюшего на 1 MHz будут щелкать с частотой 1MHz?
ViKo
Цитата(k000858 @ Aug 15 2016, 14:19) *
причем здесь куб
мне непонятно, частота 1Мгц GPIO = частоте 1MHz SPI?

то есть мне для понижения потребления необходимо закрутить гайки в виде скорости GPIO, но до такой скорости которой достаточно для работы периферии.

можно ли сказать что ноги SPI, работаюшего на 1 MHz будут щелкать с частотой 1MHz?

Можно считать, что если написана скорость 1 МГц, то на такой скорости порт будет способен выдавать приемлемый меандр. Это определяется током, который будет выдавать порт, чтобы зарядить цепь, подключенную к нему.
А Куб при том, что в нем цифры частоты не указаны, а скрыты за абстракцией LOW и т.п.
scifi
Цитата(k000858 @ Aug 15 2016, 14:19) *
то есть мне для понижения потребления необходимо закрутить гайки в виде скорости GPIO

А что, реально снижается потребление? Может быть, я чего-то не знаю, но звучит это странно.

Цитата(k000858 @ Aug 15 2016, 14:19) *
но до такой скорости которой достаточно для работы периферии.

Чуть выше верно подметили - осциллограф в помощь. Ну и надо помнить, что ёмкость щупа заваливает фронты, то есть если со щупом работает, то без него - тем более. Все эти "мегагерцы" в мануале - довольно условная вещь, насколько я понимаю.
ViKo
Цитата(scifi @ Aug 15 2016, 14:25) *
А что, реально снижается потребление? Может быть, я чего-то не знаю, но звучит это странно.

А как же большое потребление у высокочастотных цифровых схем? Ничуть не странно.
scifi
Цитата(ViKo @ Aug 15 2016, 15:45) *
А как же большое потребление у высокочастотных цифровых схем? Ничуть не странно.

Этот сферический аргумент из вакуума интересен, конечно, но дело в том, что при переключении скорости в регистре никто волшебным образом не вытащит "высокоскоростную цифровую схему" из МК. Она продолжает там сидеть и кушать ток. Заваливание фронтов нужно для снижения помех. ИМХО, потребление не меняется. Если не докажете обратное, конечно. Во всяком случае, в документации я не увидел ни слова про снижение потребления.
demiurg_spb
Я бы даже предположил обратное, при заваливании фронта потребление может и вырасти.
Т.к. когда ключ полузакрыт на нём бОльшие потери чем в полностью закрытом или открытом состоянии.
scifi
Цитата(demiurg_spb @ Aug 15 2016, 16:28) *
Я бы даже предположил обратное, при заваливании фронта потребление может и вырасти.
Т.к. когда ключ полузакрыт на нём бОльшие потери чем в полностью закрытом или открытом состоянии.

Нет. В конечном итоге ток - это произведение перезаряжаемой ёмкости на частоту переключения, он не зависит от длительности фронтов. Плюс потребление схемы, которая управляет затворами, но мне кажется, что как раз оно совсем маленькое. Плюс потребление регистров GPIO, у них тоже есть тактирование.
ViKo
Цитата(scifi @ Aug 15 2016, 16:15) *
Этот сферический аргумент из вакуума интересен, конечно, но дело в том, что при переключении скорости в регистре никто волшебным образом не вытащит "высокоскоростную цифровую схему" из МК. Она продолжает там сидеть и кушать ток.

Отнюдь. Нет там никакой высокоскоростной схемы. Выходные транзисторы открываются в состояние с меньшим или большим сопротивлением. И когда сопротивление малое, будьте уверены, через них и сквозные токи текут большие, и емкость линии перезаряжают не "забесплатно".
scifi
Цитата(ViKo @ Aug 15 2016, 16:37) *
Отнюдь. Нет там никакой высокоскоростной схемы. Выходные транзисторы открываются в состояние с меньшим или большим сопротивлением. И когда сопротивление малое, будьте уверены, через них и сквозные токи текут большие, и емкость линии перезаряжают не "забесплатно".

Всё это ерунда, но лень расписывать. Продолжайте мечтать.
ViKo
Можно и проверить.
Только не забудьте как следует нагрузить порты емкостями (линий связи с внешними устройствами и самих устройств).
demiurg_spb
Цитата(scifi @ Aug 15 2016, 16:35) *

Из ВУЗа точно помню, что помимо статических потерь на силовом ключе динамические определяются квадратом частоты коммутации и временем открытия-закрытия ключа.
scifi
Цитата(demiurg_spb @ Aug 15 2016, 17:10) *
Из ВУЗа точно помню, что помимо статических потерь на силовом ключе динамические определяются квадратом частоты коммутации и временем открытия-закрытия ключа.

Это для импульсников при постоянном токе нагрузки. Здесь условия иные: есть ёмкость, которая перезаряжается с заданной частотой (1 МГц или около того). В школе решал для себя задачку: ёмкость разряжается на резистор, от чего зависит энергия, выделившаяся на резисторе? Правильно, только от ёмкости и напряжения, что легко понять, если вспомнить закон сохранения энергии. Так что не важно, хорошо открыт ключ или плохо, потери энергии всё равно зависят только от ёмкости.
Да, где-то бывают и сквозные токи, но я надеюсь, что ребята из ST не настолько лохи, чтобы сделать такой убогий драйвер.
ViKo
Цитата(scifi @ Aug 15 2016, 17:21) *
Да, где-то бывают и сквозные токи, но я надеюсь, что ребята из ST не настолько лохи, чтобы сделать такой убогий драйвер.

Сквозной ток лучше кратковременного высокоимпедансного состояния выхода. Вы же не хотите, чтобы ваши схемы, подключенные к выходу ST микроконтроллера, улетали в черт-знает-какое состояние от малейших помех? И никто не хочет. rolleyes.gif
demiurg_spb
Хорошо. Давайте рассмотрим конкретный случай.
Выход контролера работает в ШИМ режиме push-pull со скважностью 50% и частотой 1мГц (реально так быстро никому не надо, но всё же).
В качестве нагрузки светодиод последовательно с резистором.

В каком случае КПД схемы будет выше: когда выход быстрый (красивый меандр) или когда фронты завалены?

Каким образом они валят фронты я не знаю (включают параллельно выходу какие-то ёмкости или ограничивают как-то выходной ток) - знание этого принципа дало бы большее понимание обсуждаемого нами вопроса.

Думаю, что однозначного ответа нет (ключ не идеальный, ёмкость нагрузки так или иначе будет иметься, и при очень крутых фронтах могут быть высшие гармоники которые не добавляют КПД)

ЗЫ: Насколько я понимаю, идеальная с точки зрения КПД схема - это когда нет вообще никакого последовательного резистора и ШИМ с бОльшей скважностью фигачит напрямую на светодиод, но так ведь никто не делает.
scifi
Цитата(demiurg_spb @ Aug 15 2016, 18:11) *
Хорошо. Давайте рассмотрим конкретный случай.

Зачем светодиод? Речь идёт о линиях SPI. Там нет никакой "полезной работы" кроме переключения из "0" в "1" и обратно. Следовательно, о КПД речь идти не может. Зато есть накладные расходы на перезарядку ёмкости линии и прочее. Так вот, я утверждаю, что они не зависят от установки скорости порта.
Кстати, у простой логики серии 74HC потребление резко подскакивает, когда уровень на входе где-то посередине между "0" и "1". Если устройство SPI ведёт себя похожим образом, то резкие фронты полезнее для экономии электроэнергии.
Aner
В моих проектах в L05x, L07x скорость по SPI приходится переключать для экономии батарейки. Между Low speed 400 kHz, Medium speed 2 MHz, High speed 10 MHz; макс. скорость 40 MHz не нужна. Выигрыш есть, зависит от проекта и задачи во многом.
ViKo
Правильная логика имеет триггеры Шмитта на входе, поэтому некрутые фронты ей не страшны.
Timmy
Судя по даташиту, скорость IO определяет только крутизну фронтов, но не выходное сопротивление. Думаю, скорость управляется сопротивлением предпоследнего выходного каскада - для повышения скорости в него добавляют в параллель ещё транзисторов, и выходные транзисторы переключаются быстрее.
ViKo
Логичнее предположить, что количество выходных транзисторов меняется.

В 51-й микроЭВМ так было, при переключении выхода на 2 такта включался дополнительный транзистор.
Timmy
Цитата(ViKo @ Aug 15 2016, 19:57) *
Логичнее предположить, что количество выходных транзисторов меняется.

В 51-й микроЭВМ так было, при переключении выхода на 2 такта включался дополнительный транзистор.

Нелогично. Дело в том, что в даташите(правда, я смотрел на 446-й) приведены предельные значения уровней выходного напряжения при различных токовых нагрузках, и они не зависят от OSPEED. А зависит от OSPEED только крутизна фронтов, которая специфицируется в следующем разделе.
Вот в FPGA количество выходных транзисторов настраивается при помощи DRIVE STRENGTH, а скорость переключения - другим параметром.
Можно легко провести натурный эксперимент - протестировать выходное напряжение на нагрузочном резисторе при разных значениях OSPEED.

Что касается 51-й, то он изначально был сделан на nMOS, и там свои заморочки с экономией электричества в статике.
ViKo
Я про КМОП 51-ю и говорю.
Тогда предположим, что и здесь транзисторы включаются на короткое время.
А у ПЛИС я считал, оба параметра делают одно и то же.
k000858
Цитата(ViKo @ Aug 15 2016, 14:24) *
Можно считать, что если написана скорость 1 МГц, то на такой скорости порт будет способен выдавать приемлемый меандр. Это определяется током, который будет выдавать порт, чтобы зарядить цепь, подключенную к нему.
А Куб при том, что в нем цифры частоты не указаны, а скрыты за абстракцией LOW и т.п.

блин, еще раз:
что 1 МГц ДЖПИО = "на такой скорости порт будет способен выдавать приемлемый меандр" мне итак слава богу понятно

мне не понятно, какая минимальная скорость ДЖПИО нужна для обеспечения скорости СПИ в 1МГЦ.
уточню: верно ли утверждение, что для работы спи в 1 МГц, минимальная необходимая скорость ДЖПИО тоже 1МГц ?
ViKo
Про осциллограф говорено неоднократно, самим ТС тоже. Смотришь форму тактов и данных. Если кривые, увеличиваешь скорость (ток переключения, будем считать) GPIO. Зависит от емкости нагрузок и самих цепей. Чем больше емкость, тем больше надо задать... Я думаю, скорости GPIO и частота сигнала соответствуют одно другому для некой стандартной емкостной нагрузки в цепи.
k000858
Цитата(ViKo @ Aug 17 2016, 08:25) *
Про осциллограф говорено неоднократно, самим ТС тоже. Смотришь форму тактов и данных. Если кривые, увеличиваешь скорость (ток переключения, будем считать) GPIO. Зависит от емкости нагрузок и самих цепей. Чем больше емкость, тем больше надо задать... Я думаю, скорости GPIO и частота сигнала соответствуют одно другому для некой стандартной емкостной нагрузки в цепи.

окей
спасибо за ответ. значит все так, как я интуитивно предполагал: заранее сказать, какая частота GPIO должна быть для работы SPI на определенной частоте нельзя, можно только методом тыка подобрать.

а вопрос потребления остается открытым: интересно будет почитать разные мнения и аргументы, потому как меня схемотехник заставляет затягивать гайки скоростью GPIO (для снижения потребления), а будь моя воля - я оставил бы скорость максимальной что б на все хватило.
ViKo
Помех станет больше.
scifi
Цитата(k000858 @ Aug 17 2016, 08:36) *
а вопрос потребления остается открытым: интересно будет почитать разные мнения и аргументы, потому как меня схемотехник заставляет затягивать гайки скоростью GPIO (для снижения потребления), а будь моя воля - я оставил бы скорость максимальной что б на все хватило.

Померить, нет?
k000858
Цитата(scifi @ Aug 17 2016, 08:57) *
Померить, нет?

если у кого то есть такая возможность (сделать точные измерения потребления устройством с GPIO LOW SPEED & GPIO HIGH SPEED) было бы здорово.
сам тоже проведу чуть позже такие исследования, но пока сомневаюсь в точности своих измерительных приборов.

scifi
Цитата(k000858 @ Aug 17 2016, 09:12) *
если у кого то есть такая возможность (сделать точные измерения потребления устройством с GPIO LOW SPEED & GPIO HIGH SPEED) было бы здорово.

Будете одалживать свою плату? Если что, электроэнергию кушает не только МК, но и всё остальное на плате.
k000858
Цитата(scifi @ Aug 17 2016, 09:50) *
Будете одалживать свою плату? Если что, электроэнергию кушает не только МК, но и всё остальное на плате.

ну это и дураку понятно smile3046.gif
ViKo
На платках Discovery легко измерить потребляемый ток.
SasaVitebsk
Скорее всего расчёт берётся по "типовому подключению". То есть считается что выход нагружен на емкостную нагрузку. Ёмкостью является, в том числе, ёмкость монтажа, затвор полевого транзистора и т.п. Грубо говоря, SPI вход микросхемы, тоже является емкостным (КМОП).
Далее чем выше частота переключения на емкостную нагрузку и чем круче фронты, тем больше потребление. Ёмкость обладает малым омическим сопротивлением и увеличение выходного тока увеличит потребление.
То есть, как я понимаю:
a) Влияние будет зависеть от схемы и разводки.
б) Влияние будет больше сказываться на высоких скоростях.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.