|
Согласование уровней SPI STM32-STM8S |
|
|
|
Jan 7 2015, 11:14
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Подскажите пожалуйста по схемотехнике.
Есть основной МК 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?
|
|
|
|
|
 |
Ответов
(1 - 53)
|
Jan 7 2015, 11:58
|

Частый гость
 
Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168

|
А на какой скорости работает SPI? Просто поделите 5 В с выходов STM8S на резистивном делителе до уровня 3,3 В и все. Номиналы резисторов - в зависимости от скорости. А 3,3 В с выходов STM32F подавайте на STM8S либо непосредственно, либо через защитный резистор 100-200 ом (на всякий случай, например, если нога STM8S окажется случайно настроенной на выход).
Это простейшее решение и обладает, несомненно, некоторыми потенциальными недостатками, но что-то мне подсказывает, что в вашем случае этого более чем достаточно, и работать оно будет.
|
|
|
|
|
Jan 7 2015, 13:00
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(turnon @ Jan 7 2015, 14:14)  Обнаружил в одной схеме, что вывод MISO с STM8S идет через резистор 270 Ом. 270 Ом - это очень похоже на гасящий звон резистор. Цитата(turnon @ Jan 7 2015, 14:14)  Защитит ли это 3-х вольтовые МК, непонятно. Может оказаться, что этого достаточно, чтобы защитить. Надо читать даташит (макс. допустимый ток через пин, если это вообще там оговаривается). Ещё бывают сюрпризы, когда ток, текущий через защитный диод, начинает приподнимать напряжение питания (получите, скажем, 4,3 В вместо 3,3 В). Так что за питанием тоже следите.
|
|
|
|
|
Jan 7 2015, 13:36
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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 МБит, если не ошибаюсь.
|
|
|
|
|
Jan 7 2015, 14:37
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(turnon @ Jan 7 2015, 19:36)  Дело в том, что слейв может быть как 5-ти вольтовый, так и 3-х вольтовый. И боюсь что напрямую 3-х вольтовому слейву с не 5V tollerant SPI поплохеет, когда на линии MISO от 5-ти вольтового будут идти данные, ведь все MISO соединены. Что-ж у Вас там за зоопарк такой на SPI??? Обычно SPI - это внутриплатный или внутридевайсный интерфейс, редко выходящий на внешние разъёмы устройства. Вы не знаете заранее какие слэйвы в вашем устройстве на SPI сидеть будут??? Если будут разные - рассадите их по разным SPI-портам (в вашем МК наверняка не один SPI имеется). А на внешний разъём выведите что-нить типа RS-485.
|
|
|
|
|
Jan 7 2015, 16:17
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(jcxz @ Jan 7 2015, 17:37)  Что-ж у Вас там за зоопарк такой на SPI??? Обычно SPI - это внутриплатный или внутридевайсный интерфейс, редко выходящий на внешние разъёмы устройства. Вы не знаете заранее какие слэйвы в вашем устройстве на SPI сидеть будут??? Если будут разные - рассадите их по разным SPI-портам (в вашем МК наверняка не один SPI имеется).
А на внешний разъём выведите что-нить типа RS-485. Модульная конструкция. Модули сидят на одном из SPI STM32. Остальнвые два SPI у STM32 заняты под другие задачи. Слейвы (модули) ограничены по стоимости и габаритам, потому не хочется в каждый ставить стабилизатор 5 в 3.3В. А 5В более универсальное питание (неизвестно какая еще в дальнейшем будет периферия на новых модулях), и из 5 лечге получить 3.3, чем наоборот.
|
|
|
|
|
Jan 7 2015, 17:13
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(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 выходом.
|
|
|
|
|
Jan 7 2015, 17:46
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(jcxz @ Jan 7 2015, 21:13)  Что будет с вашим опен-драйн при таких паразитных емкостях и индуктивностях как у ТС в его модульной конструкции с кучей проводов и разъёмов??? Какие величины подтяжек нужны? А учли что там уже 6 слэйвов (или больше)? Это-ж сколько активному контроллеру ногой MISO миллиампер продавливать придётся??? А учли что ТС хочет до 8МГц при этом?
Да там завалов фронтов и глитчей будет больше чем полезного сигнала. Согласен, колхоз, но не более, чем делитель из резисторов. С другой стороны, подтяжку поменьше (300-500 Ом) - и попробовать open-drain можно, не так уж и это много, 10 см от мастера до слейва. Особенно, если полная скорость 8 МГц не особо нужна, и потребление тока тоже не столь важно.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Jan 8 2015, 09:43
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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) Надежный зазор?
|
|
|
|
|
Jan 8 2015, 10:06
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(scifi @ Jan 8 2015, 13:01)  Смеётесь? Объясните, как трёхвольтовый мастер обеспечит на линии уровень 3,5 В? А и точно, не приметил. Как же оно сейчас работает, непонятно. Видимо из-за 4.5В, а не 5. В этом случае 3.15В нижний уровень 1 у 5-ти вольтового устройства. Зазор в 0.15В не маленький?
Сообщение отредактировал turnon - Jan 8 2015, 10:10
|
|
|
|
|
Jan 8 2015, 10:14
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(turnon @ Jan 8 2015, 13:06)  А и точно, не приметил. Как же оно сейчас работает, непонятно. Как раз это понятно: сегодня работает, а завтра - неизвестно. Изменения температуры, напряжения питания, ветерок подует... Цитата(turnon @ Jan 8 2015, 13:06)  В этом случае 3.15В нижний уровень 1 у 5-ти вольтового устройства. Зазор в 0.15В не маленький? Если сможете гарантировать, что зазор не уменьшится до 0 никогда, то вполне достаточно, ИМХО.
|
|
|
|
|
Jan 8 2015, 10:27
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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В.
Сообщение отредактировал turnon - Jan 8 2015, 10:30
|
|
|
|
|
Jan 26 2015, 08:48
|
Группа: Новичок
Сообщений: 1
Регистрация: 26-01-15
Пользователь №: 84 767

|
Цитата(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.
|
|
|
|
|
Jan 26 2015, 16:32
|
Местный
  
Группа: Свой
Сообщений: 339
Регистрация: 5-05-11
Пользователь №: 64 797

|
Цитата(turnon @ Jan 7 2015, 16:36)  И боюсь что напрямую 3-х вольтовому слейву с не 5V tollerant SPI поплохеет, когда на линии MISO от 5-ти вольтового будут идти данные, ведь все MISO соединены. Вообще у всех слейвов, кроме активного, MISO находится в Z состоянии по идее, так что тут все равно. А остальные линии девайсов, работающих на 3.3В, но принимающих 5В сигнал можно защитить банальной внешней диодной защитой типа bav99.
|
|
|
|
|
Jan 26 2015, 18:53
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Golikov A. @ Jan 26 2015, 13:31)  ну то есть 2 микрухи надо ставить, одна на вход, и другая на выход? А почему одна не будет работать на вход и выход? TBX0104 сотоварищи..
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Jan 27 2015, 02:28
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Golikov A. @ Jan 26 2015, 15:45)  есть в 2 стороны работающая в одном корпусе аж 8 канальная, но дороже полевика и 2 резисторов  мы же тут об этом говорим. ТС я так понимаю уже давно все сделал, это кто-то из небытия топик поднял... Есть. И одноканальная есть. Вопрос шел о 4х канальной. А 4 полевика и 8 резисторов обойдутся дешевле 1 доллара?
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Jan 28 2015, 17:39
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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 и обяжите слейвы работать в этом напряжении - пусть по необходимости имеют свои преобразователи Тоже вариант. Но места мало на слейвах и слейвы должны быть максимально (по возможности) дешевыми.
|
|
|
|
|
Jan 28 2015, 19:47
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
полевик тот что по ссылке имеет переключение 5-20 нСек, ну пускай 40 нСек, а 8 МГц - это 125 нСек, половина периода 60 нСек, в целом проходит, конечно, но на грани. Можно подобрать полевик побыстрее, а можно взять спец микруху типа http://www.chipdip.ru/product/adg3308bruz/, правда это уже сильно дороже, зато до 50 Мегобит в секунду а вот такой http://www.chipdip.ru/product/2n7000/время переключения 10 нСек, и ваще ничего не стоит про питание я так понимаю что если на него выставляешь логический уровень 4.5 -5 вольт, а него 3 вольта максимум, то разницу в 1.5-2 вольта он на чем то сбрасывает, следовательно идет ток, которого могло бы и не быть...
|
|
|
|
|
Jan 29 2015, 07:26
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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 вольта он на чем то сбрасывает, следовательно идет ток, которого могло бы и не быть... Зачем куда-то сбрасывать разницу? Это высокоомный вход, практически затвор полевика, он вообще практически не потребляет, как я понимаю.
|
|
|
|
|
Jan 29 2015, 09:59
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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Мбит.
Сообщение отредактировал turnon - Jan 29 2015, 10:00
|
|
|
|
|
Jan 29 2015, 12:25
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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В надеюсь достаточно надежный зазор.
|
|
|
|
|
Jan 30 2015, 07:20
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(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)  Спасибо. Но там же опять подтяжка через резисторы, насколько их надо уменьшить чтобы фронты были приемлемые при 8Мбит и емкости линии до ~1nF?
|
|
|
|
|
Jan 30 2015, 08:02
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Отчего потреблять? От превышения уровня 3.3В и за счет этого потребления через защитные диоды? Так у 3.3В устройства ноги SPI "5v tollerant". ну то что нога выдерживает 5 вольт, не означает что она при этом не потребляет больше положенного. Если брать входные ноги, то там есть варианты с подтяжкой, подтяжка тоже на 3.3 вольта, то есть подавая на нее 4 через резистор подтяжки идет ток, и так далее... В общем я верю что в такой ситуации потребление может быть больше чем при работе на положенных уровнях. SN74LVC3G34 - это вроде как просто буфер. Цитата А как именно упростить, подскажите пожалуйста. ну как делают на 2 транзисторах драйвер для полевика, высокий уровень открывает 1, низкий 0. И открывается оно током, потом пофиг какие напряжения. Мне кажется должно сработать. http://arduino.ru/sites/default/files/u493...-1176382739.gifНарод поправьте если я ошибаюсь
|
|
|
|
|
Jan 30 2015, 08:16
|
Знающий
   
Группа: Свой
Сообщений: 604
Регистрация: 24-02-06
Из: Москва
Пользователь №: 14 658

|
Цитата(Golikov A. @ Jan 30 2015, 11:02)  это просто усилитель тока. слушайте, а не забыли ли мы в рассуждениях задачу? 1) есть 3,3 В мастер, который превосходно работает как с 3,3 В так и с 5 В сигналами, следовательно его защищать не надо; 2) есть 5 В слэйв, который не понимает 3,3 В уровней, но опустив на нём питание до 4,2 В, ТС эту проблему превосходно решает; 3) есть 3,3 В слэйв, который превосходно работает с 3,3 В мастером, но боится 5 В сигналов от своего 5 В собрата. таким образом, проблема только в п. 3. какие сигналы необходимо защитить? очевидно, что 5 В слэйв является источником только сигнала MISO, потому что остальные генерятся мастером. так кто мешает сигналы MISO развязать диодной схемой ИЛИ с одним нагрузочным резистором на стороне мастера?
|
|
|
|
|
Jan 30 2015, 12:10
|
Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 17-10-14
Пользователь №: 83 207

|
Цитата(Golikov A. @ Jan 30 2015, 13:41)  Это надо просто решить операционником, подняв уровень в одном направлении и все. При желании можно также опустить уровни в другом направлении А SN74LVC1T45 подойдет?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|