Проблема с емкостью I2C

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

Я узнал, что могу использовать аналоговый коммутатор CMOS или некоторые другие специализированные переключатели шины, такие как мультиплексор, для «отключения» сегмента шины. Теперь мне интересно: когда переключатель находится в выключенном состоянии, будет ли сам переключатель влиять на емкость шины? Если да, то насколько значительно влияние? Есть ли способ отключить часть шины и полностью исключить ее влияние (в том числе переключателя) на емкость шины?схема части системы

Моему приложению требуется большое количество (может быть более 400) устройств I2C, подключенных к шине. Однако только 2 или 3 должны быть онлайн в любой момент. Я думаю, что предел емкости 400 пФ (или 3000 пФ при использовании буфера?) является основной проблемой здесь. Я считаю, что каскадная структура шинных коммутаторов может решить проблему, но мне нужна модульная система, что означает, что каждое устройство оснащено коммутатором, а не каскадной структурой.

Извините меня, если я не делаю это ясно. Я впервые задаю здесь вопросы. Спасибо!

Вместо 400 коммутаторов вы можете рассмотреть 50 мультиплексоров 1-to-8. Или, что еще лучше, используйте древовидную конфигурацию. Однако вам потребуется очень сильное подтягивание.
Представьте, что переключатель (CMOS) имеет небольшой конденсатор для заземления с каждой стороны. Так что да, каждый переключатель добавляет емкость. Реализовано подобное будет сильно ограничивать скорость автобуса! Вы не должны подключать все часы к одной шине, а должны создавать древовидную структуру (с буферами), чтобы ограничить количество входов, управляемых одним выходом. Вместо переключения SCL рассмотрите возможность использования входа включения выбора микросхемы. Переключение самих часов может вызвать проблемы. Вот почему у нас есть входы для выбора чипа.
Есть ли причина, по которой вы не выбираете шину CAN?
В дополнение к тому, что написал @Harry: Воспоминания о разросшейся шине I2C
@next-hack, спасибо! я думал о древовидной структуре, которую я упомянул как «каскадную» структуру. Я хотел избежать древовидной структуры, чтобы каждую часть системы можно было сделать идентичной (чтобы я мог сделать систему модульной). Я все еще недостаточно хорош с моим английским. пожалуйста извините меня :)
@Bimpelrekkie Большое спасибо! извините, я не пояснил каскадную структуру. Я говорил о древовидной структуре. Также я не совсем уверен в включении выбора чипа, сильно ли увеличится количество кабелей, если мастер находится на одном конце шины?
@HarrySvensson Спасибо! Я все еще изучаю различные автобусы и еще не обладаю достаточными знаниями, чтобы решить, какой из них лучше. nxp.com/docs/en/application-note/AN10216.pdf — это документ, на который я ссылался. вроде CAN дороже? и это не совсем подходит для приложений, в которых участники шины могут присоединяться и уходить в любое время? Извините, если я не ясно излагаю свои вопросы..

Ответы (1)

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

Очевидно, да. Переключатель не будет иметь 0 емкость. Сколько у него емкости, конечно, вы можете посмотреть в таблице данных.

Имейте в виду, что некоторые ведомые устройства IIC могут устанавливать на тактовой линии низкий уровень для выполнения растяжения тактовой частоты . Это не сработает, если коммутаторы не являются двунаправленными. Если вы точно знаете, что ваши слейвы не будут пытаться управлять тактовой линией, то вы можете использовать однонаправленные коммутаторы (буферы).

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

Все вокруг, вы должны отстраниться и подумать, как решить эту проблему по-другому на более высоком уровне. Это просто неправильный путь.

Спасибо! возможно, мне действительно нужно рассмотреть возможность использования других методов, кроме I2C, для этого приложения. Не могли бы вы дать мне несколько советов или ссылки на соответствующие документы? Надеюсь, это вас не обеспокоит. Я был бы очень признателен!
Во-вторых, также будет задействовано 400 всего, что пахнет множеством кабелей и проводов, а I2C имеет сильную неприязнь к длинным (т.е. емкостным) кабелям. Это, вероятно, было бы лучше обслуживать интеллектуальные датчики, такие как микро с несколькими датчиками I2C, такими как 10-20, все физически близко и с короткой проводкой. Микросхемы могут быть объединены в сеть с использованием WiFi (ESP8266), шины CAN или даже Ethernet, и все они работают на больших расстояниях намного лучше, чем I2C.