Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Согласование уровней SPI STM32-STM8S
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
turnon
Подскажите пожалуйста по схемотехнике.

Есть основной МК STM32F2205VET6 (3.3V), он работает как мастер по SPI3 (ноги 78, 79, 80 у STM32) c шестью МК STM8S003F3 (слейвы, 5V). STM32 как я понял может напрямую рабортать с 5 вольтовым STM8S, ноги 78, 79, 80 у STM32 5V tollerant.

Но в качестве слейва может быть также не "5V tollerant" МК. Как можно минимальными затратами защитить 3-вольтовый МК на SPI от 5-ти вольтовых сигналов SPI от STM8S?

Питание у STM8S опустить до 3.3В нет возможности.

Обнаружил в одной схеме, что вывод MISO с STM8S идет через резистор 270 Ом. Защитит ли это 3-х вольтовые МК, непонятно.

Еще непонятно, достаточно ли будет "мощности" у выхода SPI STM32 для нормальной работы с шестью слейвами (STM8S)? Все слейвы на расстоянии макс 10 см от мастера на разъемах типа PLS-4.
Или может подстраховаться и добавить между STM32 и STM8S буфер типа SN74LVC3G34?
1113
объясните, с чего ваши сомнения? вы же сами указываете на толерантность выводов stm32?
Genadi Zawidowski
Обратите внимание на надёжность решения - подавать на 5-вольт схему 3.3 вольт сигналы. Вам всё нравится в этом?
OlegH
А на какой скорости работает SPI? Просто поделите 5 В с выходов STM8S на резистивном делителе до уровня 3,3 В и все. Номиналы резисторов - в зависимости от скорости.
А 3,3 В с выходов STM32F подавайте на STM8S либо непосредственно, либо через защитный резистор 100-200 ом (на всякий случай, например, если нога STM8S окажется случайно настроенной на выход).

Это простейшее решение и обладает, несомненно, некоторыми потенциальными недостатками, но что-то мне подсказывает, что в вашем случае этого более чем достаточно, и работать оно будет.
1113
Цитата(Genadi Zawidowski @ Jan 7 2015, 14:45) *
Обратите внимание на надёжность решения - подавать на 5-вольт схему 3.3 вольт сигналы. Вам всё нравится в этом?

достаточно проверить пороги...
scifi
Цитата(turnon @ Jan 7 2015, 14:14) *
Обнаружил в одной схеме, что вывод MISO с STM8S идет через резистор 270 Ом.

270 Ом - это очень похоже на гасящий звон резистор.

Цитата(turnon @ Jan 7 2015, 14:14) *
Защитит ли это 3-х вольтовые МК, непонятно.

Может оказаться, что этого достаточно, чтобы защитить. Надо читать даташит (макс. допустимый ток через пин, если это вообще там оговаривается). Ещё бывают сюрпризы, когда ток, текущий через защитный диод, начинает приподнимать напряжение питания (получите, скажем, 4,3 В вместо 3,3 В). Так что за питанием тоже следите.
1113
Цитата(scifi @ Jan 7 2015, 16:00) *
Ещё бывают сюрпризы, когда ток, текущий через защитный диод, начинает приподнимать напряжение питания (получите, скажем, 4,3 В вместо 3,3 В). Так что за питанием тоже следите.

разве в 5v-tolerant выводах используются эти диоды?
scifi
Цитата(1113 @ Jan 7 2015, 16:03) *
разве в 5v-tolerant выводах используются эти диоды?

Вы уверены, что вы читали топик?

Цитата(turnon @ Jan 7 2015, 14:14) *
Но в качестве слейва может быть также не "5V tollerant" МК.

1113
ах ты ж - ТС лишнего написал... надо было сразу начинать с третьей строки))

тогда я предлагаю по одному 2n7002 на каждую линию 5 -> 3
turnon
Цитата(1113 @ Jan 7 2015, 14:40) *
объясните, с чего ваши сомнения? вы же сами указываете на толерантность выводов stm32?

Дело в том, что слейв может быть как 5-ти вольтовый, так и 3-х вольтовый. И боюсь что напрямую 3-х вольтовому слейву с не 5V tollerant SPI поплохеет, когда на линии MISO от 5-ти вольтового будут идти данные, ведь все MISO соединены.

Цитата(OlegH @ Jan 7 2015, 14:58) *
А на какой скорости работает SPI? Просто поделите 5 В с выходов STM8S на резистивном делителе до уровня 3,3 В и все. Номиналы резисторов - в зависимости от скорости.

Скорость ограничена максимальной у STM8S - 8 МБит, если не ошибаюсь.
jcxz
Цитата(turnon @ Jan 7 2015, 19:36) *
Дело в том, что слейв может быть как 5-ти вольтовый, так и 3-х вольтовый. И боюсь что напрямую 3-х вольтовому слейву с не 5V tollerant SPI поплохеет, когда на линии MISO от 5-ти вольтового будут идти данные, ведь все MISO соединены.

Что-ж у Вас там за зоопарк такой на SPI???
Обычно SPI - это внутриплатный или внутридевайсный интерфейс, редко выходящий на внешние разъёмы устройства.
Вы не знаете заранее какие слэйвы в вашем устройстве на SPI сидеть будут???
Если будут разные - рассадите их по разным SPI-портам (в вашем МК наверняка не один SPI имеется).

А на внешний разъём выведите что-нить типа RS-485.
turnon
Цитата(jcxz @ Jan 7 2015, 17:37) *
Что-ж у Вас там за зоопарк такой на SPI???
Обычно SPI - это внутриплатный или внутридевайсный интерфейс, редко выходящий на внешние разъёмы устройства.
Вы не знаете заранее какие слэйвы в вашем устройстве на SPI сидеть будут???
Если будут разные - рассадите их по разным SPI-портам (в вашем МК наверняка не один SPI имеется).

А на внешний разъём выведите что-нить типа RS-485.

Модульная конструкция. Модули сидят на одном из SPI STM32. Остальнвые два SPI у STM32 заняты под другие задачи.

Слейвы (модули) ограничены по стоимости и габаритам, потому не хочется в каждый ставить стабилизатор 5 в 3.3В.

А 5В более универсальное питание (неизвестно какая еще в дальнейшем будет периферия на новых модулях), и из 5 лечге получить 3.3, чем наоборот.
gerber
Конфигурируете MISO у 5-вольтового контроллера как Open-Drain вместо Push-Pull и подтягиваете, куда нужно, в данном случае, к 3,3 вольтам.
jcxz
Цитата(gerber @ Jan 7 2015, 22:39) *
Конфигурируете MISO у 5-вольтового контроллера как Open-Drain вместо Push-Pull и подтягиваете, куда нужно, в данном случае, к 3,3 вольтам.

Что будет с вашим опен-драйн при таких паразитных емкостях и индуктивностях как у ТС в его модульной конструкции с кучей проводов и разъёмов???
Какие величины подтяжек нужны? А учли что там уже 6 слэйвов (или больше)? Это-ж сколько активному контроллеру ногой MISO миллиампер продавливать придётся???
А учли что ТС хочет до 8МГц при этом?

Да там завалов фронтов и глитчей будет больше чем полезного сигнала.
Да в таком случае проще всё на I2C посадить.

Простое решение - перевести всю SPI-шину на 3.3V.
Перед каждой MISO-ногой 5-вольтового МК поставить цепочку встречно-параллельно включённых нескольких диодов:
для пропуска "0" от МК в одной ветви цепочки - диод Шоттки; для пропуска "1" в другой ветви - 3 последовательных кремниевых диода.
Хотя это конечно - по колхозному.
Правильней - после MISO такого МК поставить любой логический элемент - повторитель с 3.3V выходом.
gerber
Цитата(jcxz @ Jan 7 2015, 21:13) *
Что будет с вашим опен-драйн при таких паразитных емкостях и индуктивностях как у ТС в его модульной конструкции с кучей проводов и разъёмов???
Какие величины подтяжек нужны? А учли что там уже 6 слэйвов (или больше)? Это-ж сколько активному контроллеру ногой MISO миллиампер продавливать придётся???
А учли что ТС хочет до 8МГц при этом?

Да там завалов фронтов и глитчей будет больше чем полезного сигнала.

Согласен, колхоз, но не более, чем делитель из резисторов.
С другой стороны, подтяжку поменьше (300-500 Ом) - и попробовать open-drain можно, не так уж и это много, 10 см от мастера до слейва. Особенно, если полная скорость 8 МГц не особо нужна, и потребление тока тоже не столь важно.
turnon
Цитата(Genadi Zawidowski @ Jan 7 2015, 14:45) *
Обратите внимание на надёжность решения - подавать на 5-вольт схему 3.3 вольт сигналы. Вам всё нравится в этом?

У 5В уровень 0: -0.3В - 1.5В, 1: 3.5В - 5.3В
У 3.3В уровень 0: -0.3В - 0.99В, 1: 2.31 - 5.5В (5V tollerant)

Надежный зазор?
scifi
Цитата(turnon @ Jan 8 2015, 12:43) *
У 5В уровень 0: -0.3В - 1.5В, 1: 3.5В - 5.3В
...
Надежный зазор?

Смеётесь?
Объясните, как трёхвольтовый мастер обеспечит на линии уровень 3,5 В?
turnon
Цитата(scifi @ Jan 8 2015, 13:01) *
Смеётесь?
Объясните, как трёхвольтовый мастер обеспечит на линии уровень 3,5 В?

А и точно, не приметил. Как же оно сейчас работает, непонятно. Видимо из-за 4.5В, а не 5.

В этом случае 3.15В нижний уровень 1 у 5-ти вольтового устройства. Зазор в 0.15В не маленький?
scifi
Цитата(turnon @ Jan 8 2015, 13:06) *
А и точно, не приметил. Как же оно сейчас работает, непонятно.

Как раз это понятно: сегодня работает, а завтра - неизвестно. Изменения температуры, напряжения питания, ветерок подует...

Цитата(turnon @ Jan 8 2015, 13:06) *
В этом случае 3.15В нижний уровень 1 у 5-ти вольтового устройства. Зазор в 0.15В не маленький?

Если сможете гарантировать, что зазор не уменьшится до 0 никогда, то вполне достаточно, ИМХО.
turnon
Цитата(scifi @ Jan 8 2015, 13:14) *
Как раз это понятно: сегодня работает, а завтра - неизвестно. Изменения температуры, напряжения питания, ветерок подует...


Если сможете гарантировать, что зазор не уменьшится до 0 никогда, то вполне достаточно, ИМХО.

Видимо надо сделать для 5-ти вольтовых питание 4.2В, тогда и зазор в лог. 1 будет (4.2В * 0.7) - 3.3 = 0.36В, и ограничить до безопасного уровня сигнал с 5-ти вольтового MISO можно одним диодом (0.7В) плюс параллельно ему диод шотки для формирования лог. 0 на MISO.

Почему именно 4.2В - предусмотрено резервное питание от li-on, который как раз дает 4.2В.
Kiruxa112
Цитата(turnon @ Jan 8 2015, 13:27) *
Видимо надо сделать для 5-ти вольтовых питание 4.2В, тогда и зазор в лог. 1 будет (4.2В * 0.7) - 3.3 = 0.36В, и ограничить до безопасного уровня сигнал с 5-ти вольтового MISO можно одним диодом (0.7В) плюс параллельно ему диод шотки для формирования лог. 0 на MISO.

Почему именно 4.2В - предусмотрено резервное питание от li-on, который как раз дает 4.2В.

Можно использовать ADuM1301, запитав одну половину от 5, другую от 3,3.
ADuM1401 если линию CS тоже согласовать за одним. По микросхеме на каждый контроллер, у которого напряжение 5 или 3,3.
toweroff
Так оставьте у контроллера его уровни 3.3 и обяжите слейвы работать в этом напряжении - пусть по необходимости имеют свои преобразователи
jcxz
Цитата(Kiruxa112 @ Jan 26 2015, 14:48) *
Можно использовать ADuM1301, запитав одну половину от 5, другую от 3,3.

ADUM никак не соответствует изначальному условию ТС:
Цитата(turnon @ Jan 7 2015, 17:14) *
Но в качестве слейва может быть также не "5V tollerant" МК. Как можно минимальными затратами защитить 3-вольтовый МК на SPI от 5-ти вольтовых сигналов SPI от STM8S?
Golikov A.
да это делается полевиком и 2 резисторами...
A. Fig Lee
Цитата(Golikov A. @ Jan 26 2015, 06:43) *
да это делается полевиком и 2 резисторами...


Для одного вывода. Для 4х легче мелкосхему поставить.
Golikov A.
а дешевле 4 полевика и 8 резисторов)
skripach
Возмите 74LVC2T45 или подобное и не дурите голову.
Lerk
Цитата(turnon @ Jan 7 2015, 16:36) *
И боюсь что напрямую 3-х вольтовому слейву с не 5V tollerant SPI поплохеет, когда на линии MISO от 5-ти вольтового будут идти данные, ведь все MISO соединены.

Вообще у всех слейвов, кроме активного, MISO находится в Z состоянии по идее, так что тут все равно.
А остальные линии девайсов, работающих на 3.3В, но принимающих 5В сигнал можно защитить банальной внешней диодной защитой типа bav99.
Golikov A.
Цитата
Возмите 74LVC2T45 или подобное и не дурите голову.

а дир кто дергать будет? есть 2 направленные микрухи, но подорожеsm.gif
skripach
Цитата(Golikov A. @ Jan 26 2015, 20:24) *
а дир кто дергать будет?

Какой такой дир... ТС декралировал SPI, зачем двунапровленные?
Golikov A.
ну то есть 2 микрухи надо ставить, одна на вход, и другая на выход?
skripach
Цитата(Golikov A. @ Jan 26 2015, 21:31) *
ну то есть 2 микрухи надо ставить, одна на вход, и другая на выход?

Ну если ту что я для примера указал, то да - две штуки, но наверняка можно выбрать что-то готовое в одном корпусе.
A. Fig Lee
Цитата(Golikov A. @ Jan 26 2015, 13:31) *
ну то есть 2 микрухи надо ставить, одна на вход, и другая на выход?

А почему одна не будет работать на вход и выход?
TBX0104 сотоварищи..
Golikov A.
есть в 2 стороны работающая в одном корпусе аж 8 канальная, но дороже
полевика и 2 резисторовsm.gif мы же тут об этом говорим.
ТС я так понимаю уже давно все сделал, это кто-то из небытия топик поднял...
A. Fig Lee
Цитата(Golikov A. @ Jan 26 2015, 15:45) *
есть в 2 стороны работающая в одном корпусе аж 8 канальная, но дороже
полевика и 2 резисторовsm.gif мы же тут об этом говорим.
ТС я так понимаю уже давно все сделал, это кто-то из небытия топик поднял...

Есть. И одноканальная есть. Вопрос шел о 4х канальной.
А 4 полевика и 8 резисторов обойдутся дешевле 1 доллара?
Golikov A.
да.
http://www.chipdip.ru/product/bss138-onsemi/
5 рублей, если единично
http://www.chipdip.ru/product0/9000189664/
0.9 рубля если единично,
и того 4 канала 27.2 рублей, треть бакса по текущему курсу, а можно и еще скинуть за опт...
turnon
Цитата(skripach @ Jan 26 2015, 20:11) *
Возмите 74LVC2T45 или подобное и не дурите голову.

Остается на выбор, что потянет 8 МБит, полевик с резисторами или 74LVC2T45. С полевиком боюсь затянет фронты.


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

"С Ваших слов, ведомые STM8S питаются от голого аккумулятора высоким напряжением, а ведущий STM32 — от него же, но пониженного до 3,3 В. Так вот, каждый из этих десятков-сотен STM8S от такого "согласования уровней" будет потреблять на 1...10 мА больше, чем Вы мечтаете. В принципе, ничего страшного не произойдёт — просто они будут каждый раз быстренько высасывать свежезаряженный аккумулятор до напряжения, обеспечивающего малопотребляющий "зазор" уровней."

Цитата(toweroff @ Jan 26 2015, 13:27) *
Так оставьте у контроллера его уровни 3.3 и обяжите слейвы работать в этом напряжении - пусть по необходимости имеют свои преобразователи

Тоже вариант. Но места мало на слейвах и слейвы должны быть максимально (по возможности) дешевыми.
Golikov A.
полевик тот что по ссылке имеет переключение 5-20 нСек, ну пускай 40 нСек, а 8 МГц - это 125 нСек, половина периода 60 нСек, в целом проходит, конечно, но на грани. Можно подобрать полевик побыстрее, а можно взять спец микруху типа http://www.chipdip.ru/product/adg3308bruz/, правда это уже сильно дороже, зато до 50 Мегобит в секундуsm.gif

а вот такой http://www.chipdip.ru/product/2n7000/
время переключения 10 нСек, и ваще ничего не стоитsm.gif



про питание я так понимаю что если на него выставляешь логический уровень 4.5 -5 вольт, а него 3 вольта максимум, то разницу в 1.5-2 вольта он на чем то сбрасывает, следовательно идет ток, которого могло бы и не быть...
turnon
Цитата(Golikov A. @ Jan 28 2015, 22:47) *
полевик тот что по ссылке имеет переключение 5-20 нСек, ну пускай 40 нСек, а 8 МГц - это 125 нСек, половина периода 60 нСек, в целом проходит, конечно, но на грани.

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


Цитата(Golikov A. @ Jan 28 2015, 22:47) *
про питание я так понимаю что если на него выставляешь логический уровень 4.5 -5 вольт, а него 3 вольта максимум, то разницу в 1.5-2 вольта он на чем то сбрасывает, следовательно идет ток, которого могло бы и не быть...

Зачем куда-то сбрасывать разницу? Это высокоомный вход, практически затвор полевика, он вообще практически не потребляет, как я понимаю.
1113
Цитата(turnon @ Jan 29 2015, 10:26) *
Зачем куда-то сбрасывать разницу? Это высокоомный вход, практически затвор полевика, он вообще практически не потребляет, как я понимаю.

а диод при напряжении на входе (VCC + 0.6) В
Golikov A.
Цитата
Так в схеме с полевиком ограничения на скорость вроде бы накладывают резисторы подтяжки к питанию, а не полевик.

ну так с этим можно работать, тем более какая там емкость линии, чтобы ее 10К сильно задержали?
В 0 то она проваливается со всей своей пролетарской ненавистью по открытию полевика или по его диоду (когда 0 с большей стороны).
turnon
Цитата(1113 @ Jan 29 2015, 11:36) *
а диод при напряжении на входе (VCC + 0.6) В

Так напряжение на входе будет меньше Vcc, а не больше. Vcc 4.2В, а приходящий на ногу сигнал SPI будет иметь уровень 3.3В. И почему-то при этом устройство с Vcc 4.2В будет иметь повышенное потребление, не понимаю почему.

Цитата(Golikov A. @ Jan 29 2015, 13:35) *
ну так с этим можно работать, тем более какая там емкость линии, чтобы ее 10К сильно задержали?
В 0 то она проваливается со всей своей пролетарской ненавистью по открытию полевика или по его диоду (когда 0 с большей стороны).

Емкость ног у стм8 50пФ, у десятка(+мастер) 500пФ, плюс емкость дорог, проводов и тд и тд, пусть будет в сумме 1нФ. Скорость 8Мбит.
1113
Цитата(turnon @ Jan 29 2015, 12:59) *
Vcc 4.2В

откуда взялись эти 4,2 В? вроде же питания два - 3,3 и 5...
turnon
Цитата(1113 @ Jan 29 2015, 14:03) *
откуда взялись эти 4,2 В? вроде же питания два - 3,3 и 5...

5-ти вольтовому устройству точно не получится принимать 3.3-х вольтовую логику, т.к. нижний уровень единицы при 5В * 0.7 - 3.5В, а у 3.3 верхний уровень никак не может быть больше 3.3.

Потому питание и сделано 4.2В, чтобы нижний уровень единицы был ниже: 4.2В * 0.7 = 2.94В, 0.36В надеюсь достаточно надежный зазор.
Golikov A.
Ну если нанофарад, тоды ой...
Надо повторители ставить


Устройсто 4.2 будет потреблять когда оно выставит 1 на 3.3 вольтовом входе. Удерживание этой единицы будет даваться слезами

А уровень лог единицы точно 0.7 от питания? Прям сегодня соединял 5 и 3.3 вольтовые девайсы. Причем честные 5 и 3.3 с толерантным к 5 в оба конца данные шли

В вашей задаче схему на полевике можно и упростить у вас же направление четко задано
smk
К561ПУ4 очень хорошо работает. Можно и на дискретных полевых погуглить, тоже хорошо если всего пару линий. Кстати в обе стороны работает, то что нагуглится.
Golikov A.
да, но в том что нагуглиться единица задается через резисторы. А по условиям нашей гипотетической задачи емкость линии 1 нФ, что даже на 1 КОме не даст желаемых 8 МГц.
Другое дело что если забыть про желание двунаправленности, то можно просто тупо сделать компаратор который все что больше 0.7 будет считать 1, и входнуюю линию поделить пополам, получиться что 5 вольтовые дают 2.5 , 3.3 вольтовые дают 1.7, а компаратор всех утянет в 3.3 - 5 в зависимости от проца
smk
http://chipenable.ru/index.php/how-connect...ih-urovney.html
Вот там преобразователь на транзисторе.

http://we.easyelectronics.ru/Shematech/sog...-ustroystv.html
целое исследование
turnon
Цитата(Golikov A. @ Jan 29 2015, 23:57) *
Ну если нанофарад, тоды ой...
Надо повторители ставить

Как думаете, SN74LVC3G34 такой подойдет?

Цитата(Golikov A. @ Jan 29 2015, 23:57) *
Устройсто 4.2 будет потреблять когда оно выставит 1 на 3.3 вольтовом входе. Удерживание этой единицы будет даваться слезами

Отчего потреблять? От превышения уровня 3.3В и за счет этого потребления через защитные диоды?
Так у 3.3В устройства ноги SPI "5v tollerant".

Цитата(Golikov A. @ Jan 29 2015, 23:57) *
А уровень лог единицы точно 0.7 от питания? Прям сегодня соединял 5 и 3.3 вольтовые девайсы. Причем честные 5 и 3.3 с толерантным к 5 в оба конца данные шли

В даташитах на STM32F2 и STM8S так указано. Может это с гарантированным запасом указано.

Цитата(Golikov A. @ Jan 29 2015, 23:57) *
В вашей задаче схему на полевике можно и упростить у вас же направление четко задано

А как именно упростить, подскажите пожалуйста.


Цитата(smk @ Jan 30 2015, 02:15) *
http://chipenable.ru/index.php/how-connect...ih-urovney.html
Вот там преобразователь на транзисторе.

Спасибо. Но там же опять подтяжка через резисторы, насколько их надо уменьшить чтобы фронты были приемлемые при 8Мбит и емкости линии до ~1nF?
Golikov A.
Цитата
Отчего потреблять? От превышения уровня 3.3В и за счет этого потребления через защитные диоды?
Так у 3.3В устройства ноги SPI "5v tollerant".

ну то что нога выдерживает 5 вольт, не означает что она при этом не потребляет больше положенного. Если брать входные ноги, то там есть варианты с подтяжкой, подтяжка тоже на 3.3 вольта, то есть подавая на нее 4 через резистор подтяжки идет ток, и так далее...

В общем я верю что в такой ситуации потребление может быть больше чем при работе на положенных уровнях.

SN74LVC3G34 - это вроде как просто буфер.


Цитата
А как именно упростить, подскажите пожалуйста.

ну как делают на 2 транзисторах драйвер для полевика, высокий уровень открывает 1, низкий 0. И открывается оно током, потом пофиг какие напряжения. Мне кажется должно сработать. http://arduino.ru/sites/default/files/u493...-1176382739.gif
Народ поправьте если я ошибаюсь

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