|
|
  |
Согласование уровней 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?
|
|
|
|
|
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 МГц не особо нужна, и потребление тока тоже не столь важно.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|