Как правильно изолировать модуль, с которым контроллер общается по SPI или I2C?

Чечако
Offline
Зарегистрирован: 15.06.2018

Вопрос имею - в своем проекте использую  модули, с которыми основной контроллер (arduinio mega) общается по SPI и I2C. Есть необходимость включать и выключать модули по команде основного контроллера. С управлением подачей питания вопросов нет, pvn012 решает. Беда в том, что мало резать только питание, надо резать и SPI и I2C. Потом как как минимум по SPI паразитное питание прет в полный рост.

И вот тут вопрос, как именно резать? Пока смотрю в сторону коммутаторов типа 74HC4066 или скажем ADG712BR, но подойдут ли они под такие задачи? Или есть более правильный вариант? Компактность решения важна, места на плате не бог весть сколько.

Заранее спасибо за помощь.

ВН
Offline
Зарегистрирован: 25.02.2016

нули от проца подавать на шины не пробовали?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Вариантов куча. 

Например hc4067, но в вашем случае как то расточительно будет.

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

https://ru.aliexpress.com/item/10PCS-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3-3V-For-Arduino/1972789887.html?spm=a2g0v.search0604.3.57.6cae48fbUsuSDw&ws_ab_test=searchweb0_0,searchweb201602_3_10065_10068_319_317_10696_453_10084_454_10083_10618_10307_10301_537_536_10902_10059_10884_10889_10887_321_322_10915_10103_10914_10911_10910,searchweb201603_58,ppcSwitch_0&algo_expid=ae6a6ebb-e514-419b-9030-63ce8970ea5e-8&algo_pvid=ae6a6ebb-e514-419b-9030-63ce8970ea5e

 

 

Чечако
Offline
Зарегистрирован: 15.06.2018

ВН пишет:

нули от проца подавать на шины не пробовали?

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

Чечако
Offline
Зарегистрирован: 15.06.2018

brokly пишет:

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

Я решение в разводку платы добавляю, поэтому смысла внешний модуль использовать нет. Разве что на основе такой платы провести испытание транзисторного решения. :) Но один мелкий чип на четыре линии компактнее, imho. 

hc4067 посмотрел, но тогда уж проще делать на изначально рассматриваемом 4066. Ибо мне там ровно 4 линии и надо резать, три spi и одну на светодиоды адресные. Я просто на практике не пробовал, нюансов не знаю. :(

Green
Offline
Зарегистрирован: 01.10.2015

Делал MOSI с ОК (через диод), что бы вытекающий ток не поступал на выключенную часть схемы. Но там был однонаправленный SPI.

Чечако
Offline
Зарегистрирован: 15.06.2018

Green пишет:

Делал MOSI с ОК (через диод), что бы вытекающий ток не поступал на выключенную часть схемы. Но там был однонаправленный SPI.

У меня тоже однонаправленный. Но я туплю видимо - а что тут даст диод? Мне надо исключить паразитное питание по линиям SPI удаленного модуля, а не контрлллера от модуля. 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Чечако, обычно достаточно супервизором притянуть ресет к земле, мк получается фактически отключен. Если по каким-то странным причинам нужно мк совсем обесточить, то можно подавать питание на Vcc пин-драйвером,тогда  в отключенном виде Vcc будет закорочено на Gnd 

Green
Offline
Зарегистрирован: 01.10.2015

Чечако пишет:

У меня тоже однонаправленный. Но я туплю видимо - а что тут даст диод? Мне надо исключить паразитное питание по линиям SPI удаленного модуля, а не контрлллера от модуля. 


Вот и мне нужно было исключить паразитное питание по линиям SPI удалённого модуля. Диод делает "ОК".
MOSI --|<-- вход модуля, подтянутый резистором к VCC модуля.
 

Чечако
Offline
Зарегистрирован: 15.06.2018

dimax пишет:

Чечако, обычно достаточно супервизором притянуть ресет к земле, мк получается фактически отключен. Если по каким-то странным причинам нужно мк совсем обесточить, то можно подавать питание на Vcc пин-драйвером,тогда  в отключенном виде Vcc будет закорочено на Gnd 

Обесточить мне нужно не МК, а наоборот - то, что к нему подключается, и с ним по SPI общается. МК как раз должен работать, и когда надо - удаленку включать и по SPI ей управлять. 

Green
Offline
Зарегистрирован: 01.10.2015

Может проще следить за отключением питания модуля, и выставлять нули на сигнальных линиях, как уже советовали?

Чечако
Offline
Зарегистрирован: 15.06.2018

Green пишет:

Может проще следить за отключением питания модуля, и выставлять нули на сигнальных линиях, как уже советовали?

Можно, я процитирую первый пост этой темы? :)

Вопрос имею - в своем проекте использую  модули, с которыми основной контроллер (arduinio mega) общается по SPI и I2C. Есть необходимость включать и выключать модули по команде основного контроллера. С управлением подачей питания вопросов нет, pvn012 решает. Беда в том, что мало резать только питание, надо резать и SPI и I2C. Потом как как минимум по SPI паразитное питание прет в полный рост.

Питанием модуля я и так управляю с контроллера. Вопрос именно в линиях SPI к нему. При этом по SPI работают и другие модули, т.е. тупо вырубать SPI на контроллере я не могу. 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Чечако, нарисуйте уже блок-схему с шинами и конкретными названиями модулей.

Green
Offline
Зарегистрирован: 01.10.2015

Тогда попробуйте диод-резистор.) По SCK тоже, как я понимаю. Это самый простой вариант.

Чечако
Offline
Зарегистрирован: 15.06.2018

dimax пишет:

Чечако, нарисуйте уже блок-схему с шинами и конкретными названиями модулей.

Именно блок схему рисовать вероятно нет смысла. Все просто.

Есть контроллер arduino mega, который управляет блоком индикации. Блок индикации представляет собой цепочку из MAX7219 (три линии SPI) и цепочку адресуемых светодиодов PL9823-F5 - четвертая линия.

Специфика задачи такова, что устройство довольно часто включается и выключается. В том числе и в темноте. Загрузка контроллера при этом всегда занимает некоторое время - секунда, пол секунды - не суть важно.

Беда в том, что если все запитывается одномоментно, как сейчас - во время загрузки контроллера мы имеем яркую цветомузыку. 7219 врубают диагностику, светодиоды светят голубым. Я перенес в самое начало setup строки инициализации и вырубания как MAX7219, так и светодиодов, но это проблему не решает.

И когда оно в темноте садит по глазам - это мягко говоря неприятно. 

Самым логичным мне видится НЕ подавать питание на блок индикации, пока контроллер не сделает это сознательно. С самим питанием вопросов нет - реле решает. Осталось понять, как резать четыре линии SPI и диодов. Потому как паразитного питания по ним тем же диодам вполне хватает для цветомузыки, да и MAX'ы моргают.

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

Так что интересно решение не только резки именно SPI и линии DIN диодов, а резки каких-либо цепей вообще, по принципу "Нормально разомкнуто".

Пока, как уже говорил, смотрю в сторону коммутаторов типа 74HC4066 или ADG712BR. Нр это все голимая теория. Они интересны тем, что способны резать по 4 независимых канала. А это и вопрос с блоком индикации решает, и используемые мною АЦП имеют по 4 входящих канала.

Чечако
Offline
Зарегистрирован: 15.06.2018

Ап. :) Может кто-нить что-то посоветует. Вопрос с конвертером уровней на BSS138 изучил, частичная изоляция возможна, да. Сильно интересует вопрос с обрезкой входов АЦП. Ибо по гуглу, при использорвании скажем 74HC4066 утечки таки идут при том, что ключи без питания открыты. :(

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Чечако пишет:

Ап. :) Может кто-нить что-то посоветует. Вопрос с конвертером уровней на BSS138 изучил, частичная изоляция возможна, да. Сильно интересует вопрос с обрезкой входов АЦП. Ибо по гуглу, при использорвании скажем 74HC4066 утечки таки идут при том, что ключи без питания открыты. :(

А что это такое "ОБРЕЗКА ВЫХОДОВ АЦП" ? К обрезанию крайней плоти имеет отношение ?

Чечако
Offline
Зарегистрирован: 15.06.2018

brokly пишет:

А что это такое "ОБРЕЗКА ВЫХОДОВ АЦП" ? К обрезанию крайней плоти имеет отношение ?

Пост #14, цитата:

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

SLKH
Offline
Зарегистрирован: 17.08.2015

Чечако пишет:

brokly пишет:

А что это такое "ОБРЕЗКА ВЫХОДОВ АЦП" ? К обрезанию крайней плоти имеет отношение ?

Пост #14, цитата:

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

реле герконовые.

Чечако
Offline
Зарегистрирован: 15.06.2018

SLKH пишет:

реле герконовые.

Очень много места занимают. Плюс цена.  Если взять скажем двухканальные EDR202A0500, то по сути это DIP14 на два канала. Итого две таких на один АЦП. Черт с ней, с ценой, но размер... :( Одноканальные варианты - SIP 7 получаются. 

Хотя, конечно, соблазнительно. Потому как нормальный механический контакт.

SLKH
Offline
Зарегистрирован: 17.08.2015

Чечако пишет:

SLKH пишет:

реле герконовые.

Очень много места занимают. Плюс цена.  Если взять скажем двухканальные EDR202A0500, то по сути это DIP14 на два канала. Итого две таких на один АЦП. Черт с ней, с ценой, но размер... :( Одноканальные варианты - SIP 7 получаются. 

Хотя, конечно, соблазнительно. Потому как нормальный механический контакт.

у открытых электронных ключей далеко не нулевое сопротивление, которое, возможно, придется как-то учитывать/компенсировать.

 

Чечако
Offline
Зарегистрирован: 15.06.2018

SLKH пишет:

 у открытых электронных ключей далеко не нулевое сопротивление, которое, возможно, придется как-то учитывать/компенсировать.

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

Осталось определится с красивым и недорогим решением по изоляции I2C и SPI, и вопросы темы можно считать закрытыми. Ставить герконы еще и на них жаба точно не позволит. :)