Чому потреба в декількох портах I²C?


19

Протокол I²C дозволяє теоретично та із 7-бітною адресацією підключити до головного пристрою до 127 пристроїв. Це велика кількість, тому чому будь-який недорогий мікроконтролер (наприклад, цей PIC24 ) має більше одного порту I²C? Для чого це потрібно?

Відповіді:


23

Розташування датчика маточини

У цьому сценарії є два автобуси І²С. Назвемо їх місцевим автобусом та головним автобусом . Призначення локальної шини - підключити купу датчиків до мікроконтролера (μC). Призначення мкК - опитувати датчики, агрегувати інформацію з них та виявляти певні події. МкС в такій ролі називається датчиком концентратора . Хаб датчика не відповідає за функції вищого порядку; для цього є потужний основний процесор. Основна шина з'єднує концентратор датчика з основним процесором. Отже, концентратор датчиків μC є головним на локальній шині I²C і веденим на основній шині I²C.

SPI та I²C

Посилання, пов'язані з PIC в оригінальній публікації, не ділиться контактами між SPI та I²C. Однак є й інші ПІК, які використовують однакові штифти для апаратних SPI та I²C, оскільки обидва реалізовані з однаковою периферією MSSP. Якщо PIC має дві окремі периферійні пристрої MSSP, то одна може використовуватися для апаратних SPI, а інша - для апаратних I²C.


21

Дуже поширеною причиною необхідності використання декількох шин є наявність пристроїв, які працюють з різною швидкістю. Спочатку I²C працював на максимальній швидкості 100 кГц. Пізніше швидкість була збільшена до максимуму 400 кГц, а ще пізніше - до 1 МГц і вище.

Отримано, оскільки адреса кожного пристрою вбудована в протокол I²C, то якщо у вас є пристрої з різними показниками швидкості на одній шині, скажімо, 100 кГц і 400 кГц, вам завжди доведеться запускати шину на найменшій загальній швидкості для всіх пристроїв на одній шині (в цьому випадку 100 кГц).

Якщо ви керували шиною з більшою швидкістю (400 кГц), очевидно, що пристрій з низькою швидкістю не працюватиме належним чином, і він може навіть інтерпретувати адресу високошвидкісного пристрою як власну, внаслідок чого пристрій 400 кГц виходить з ладу як добре. Але навіть якщо ви спочатку запускали шину зі швидкістю 100 кГц, а потім намагалися прискорити шину до 400 кГц після звернення до швидкісного чіпа, можна було б (хоча ймовірно малоймовірно) для мікросхем з нижчою швидкістю інтерпретувати один із високошвидкісні пакети даних неправильно як його адреса, і таким чином псують комунікацію на шині. У будь-якому випадку в кінці обміну з пристроєм 400 кГц пристрій 100 кГц, ймовірно, знаходився б у невідомому стані.

Тож найефективніше, якщо у вас є пристрої, що працюють з різною швидкістю, і у вас є кілька портів I²C, і у вас є запасні штифти, щоб забезпечити таку розкіш, мати один I²C скажімо для пристроїв 100 кГц, інший для пристроїв 400 кГц та інший для пристроїв частотою 1 МГц, як можуть продиктувати ваші потреби.

Це не є проблемою для SPI, оскільки кожен пристрій увімкнено (вирішено) в апараті окремим рядком вибору мікросхем. Таким чином, тактова частота може бути узгоджена зі швидкістю обраного мікросхеми (10 МГц, 20 МГц, що завгодно), не впливаючи на інші мікросхеми на тій же шині, оскільки вони не включені.


19

Крім того, це може дозволити вам підтримувати два пристрої з однаковою адресою. Так, більшість пристроїв дозволяють вибрати, можливо, два бітні біти їх адреси за допомогою ременів. Нещодавно мені довелося підтримувати 4 пристрої, які дозволяли лише встановити LSB їх адреси за допомогою резистора. Маючи два порти, для мене немає зайвих витрат.

Можливо, я хочу, щоб один був господарем для багатьох пристроїв, а другий представляв як підлеглий порт, тому моєму майстру не потрібно чекати, щоб схопити шину, щоб дати мені команду, поки я опитую датчик температури для 10-тисячного. час.

Здається, є низка інших хороших відповідей у ​​цій темі, просто додавши мої 2 копійки.


9

Швидкість.

Якщо вам знадобиться отримати доступ до двох пристроїв I2C одночасно, у вас може виникнути значний конфлікт. Або одному доведеться чекати іншого.


9

По-друге, I²C можна використовувати для отримання більшої пропускної здатності (ви можете отримувати або надсилати два байти одночасно).

Якщо у вас є АЦП, який працює постійно, один I²C весь час зайнятий.

Переключення адреси також займає певний час, тому в деяких випадках - ви можете використовувати два порти для двох пристроїв і уникати змін адреси, щоб заощадити час.


0

Інші згадували багато причин для цього, я додам:

Ви отримали купу пристроїв 5 V I2C та 3 пристрої 3V3 I2C.

Наприклад, у мене є 3,3 В мікро, який має два порти I2C, один 5В терпимий, інший лише 3V3.


З цікавості, який це мікро?
Нік Алексєєв

1
LPC4330, ось уривок із посібника: "Цифровий вхідно-вивідний цифровий входно-вивідний цифровий 5 В толерантний цифровий вхід / вивід, сумісний із специфікацією швидкого режиму шини I2C Plus. Ця колодка вимагає зовнішнього підключення для забезпечення функціональності виводу. Коли живлення відключено, це штифт, підключений до шини I2C, плаває і не турбує лінії I2C. "
peufeu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.