Comments 43
Для этого есть специальные мультиплексоры I2C шин, зачем что-то изобретать.
http://www.ti.com/product/tca9544a как пример
И TCS9544 слишком умная, чтобы обойтись просто дерганьем ножек. Ей самой надо по I2C управлять.
Так это не недостаток, а достоинство. Не нужно тянуть отдельные GPIO для коммутации абонентов, все делается по одному I2C.
И касаемо TI — если это нужно на один раз, микросхема заказывается образцами (и идет
чуть больше недели из штатов в РФ), если нужно серийное устройство, то проще как раз взять готовую микросхему, чем потом разгребать возможные неочевидности.
Сестра-близнец тивы TM4C1294 — это дикий монстр, который для 90% задач — оверкилл. Зато Ethernet с физикой на борту, это круто, да. Грубо говоря мультиплексор стоит 0.73USD*1ku, а этот монстрик ~14USD за штучку.
Для каждой задачи — свой инструмент
И E401 в TQFP-128 стоит 8.66USD*1ku.
О, или я что-то напутал, или они реально подешевели. Впрочем TM4C1294NCPDTI3 все равно стоит 8.07*1ku :P
Ну, я так понял, что SimpleLink (CC13xx, CC26XX, MSP432) — это "стильно-модно-молодежно" и развивать будут именно его. Собственно это не столько микроконтроллеры, сколько техасовская софтовая поддержка всего этого безобразия: куча кода зашита прям в ROM микроконтроллера, из-за чего и весь сыр-бор с отдельными микроконтроллерами.
Пока не выбросили ничего, продают даже Concerto и TM4C123, и, зная TI, старые контроллеры они могут поддерживать очень долго, пока есть крупный клиент, готовый их покупать.
А по остальным семействам — так у них же разные сферы применения: MSP430 — бюджетные и сверхмалопотребляющие железки, C2000 — числодробильные контроллеры с крутейшей аналоговой периферией (14 компараторов с собственными ЦАП + 2 буфферированных ЦАП + ШИМ высокого разрешения + 3 S/H SAR ADC по 3MSPS каждая + вычисление синуса за четыре такта).
Keystone, Sitara, DRA и иже с ними "микроконтроллерами" назвать язык не поворачивается, поэтому упоминать их не буду.
Контроллер с десятью I2C нужен, только если эти десять I2C должны фигачить одновременно.
Типичная схема цифрового входа включает в себя защитный диод с входа на + питания. Не у всех, но у многих. Если у HTU21D они есть, притянув его питание к земле, вы просто притянете к земле через диод всю свою шину I2C.
А если вы такие эксперименты начнёте на любой шине с push-pull драйвером, то это вообще немного печально закончится.
N ног МК — N отдельных SCL.
экономия — одна нога МК и не надо с питанием мучаться.
Три дополнительные ноги, 8 дополнительных каналов. Подтяжку SCL к питанию не забыть поставить после мультиплексора, а не до.
Происходит деградация порта и в конце концов котроллер выходить из строя, при чём вы даже не поймёте, как в какой-то момент порт перестанет работать. Смотрите. Микросхема потребляет 500 мА, согласно даташиту:
А ATmega2560, стоящая в Arduino Mega выдаёт всего 100-200 мА на порт.
Оно работать будет, но не долго и очень плохо.
Ничего удивительного, просто результат низкого порога вхождения который всё ардуинщики любят :)
Но это не суть важно, потому что достаточного для работы напряжения не будет.
Во-первых, R1 = 10...50 кОм, в зависимости от микроконтроллера, HTU21 при измерении потребляет 0,54 мА, итого падение на R1 будет 5,4 В, т.е. даже в идеальных условиях попытка чипа уйти в измерение обрушит питание ниже допустимого предела.
Во-вторых, SCL и SDA при передаче данных будут регулярно падать в ноль, чип при этом будет пытаться как-то жить на висящем у него на VCC конденсаторе…
Короче, лучше не думать, чем и как он там будет в линию мусорить, если его так насиловать.
А должен быть сделан вывод «книжки читать надо».
Причём тема-то элементарная, это вам не радиочастотка или там mixed signal какой-нибудь, в которых, если ударение во фразе не там поставить, можно Сатану случайно вызвать.
Как быстро и без лишних микросхем обойти неизменяемость адреса у датчика HTU21