Что делают контакты аппаратного адреса?

Я углубился в цифровую логику и пытаюсь понять некоторые основы архитектуры памяти. Я начал просматривать таблицы данных, чтобы понять некоторые компоненты реального мира, и заметил кое-что, чему я не мог найти четкого объяснения.

В листе данных для 256x8-битного модуля ОЗУ с интерфейсом I2C. Есть все, что я ожидал от устройства I2C, однако есть также 3 контакта для «аппаратной адресации». В техпаспорте поясняется:

«Три контакта адреса, A0, A1 и A2, используются для определения аппаратного адреса, что позволяет использовать до 8 устройств, подключенных к шине без дополнительного оборудования».

Я конечно понимаю что это для добавления нескольких устройств, но не пойму с какой целью? Не говоря уже о том, что это должно означать, что отдельное аппаратное устройство будет страдать от синхронизации I2C. Возможно, нет?

Я включил лист данных, и любая ясность была бы здоровой.

ТЕХНИЧЕСКОЕ ОПИСАНИЕ (я знаю, что это старое устройство, но я в нем для образования)

Ответы (2)

Эти контакты «аппаратной адресации» предназначены не для адресации слов в ОЗУ, а для выбора адреса всего устройства на шине IIC. Производитель понимает, что вы можете захотеть иметь несколько таких микросхем на одной шине IIC, что означает, что каждому из них нужен свой адрес шины IIC. Эти контакты позволяют вам выбрать один из 8 предопределенных адресов для каждого чипа, в зависимости от того, связываете ли вы эти адресные линии высоким или низким уровнем.

Некоторые устройства просто используют высокий и низкий уровни на контактах выбора адреса. Другие устройства используют высокий, низкий и открытый для троичной логики. 3 контакта дадут вам 27 возможных адресов. TI INA219 имеет только два вывода выбора адреса, но он использует 4-х уровневую логику с высоким, низким уровнем, подключенным к SDA или подключенным к SCL, всего 16 возможных адресов.

Спасибо, Олин, снова просматриваю таблицу данных, и на стр. 11 также есть диаграмма, объясняющая то же самое. Все еще рано...

Обычно устройства I2C имеют базовый адрес, а затем несколько альтернативных адресов, которые можно выбрать с помощью этих контактов. Если базовый адрес 0x60 и вы установили 0x02 на контактах, конечный адрес устройства будет, например, 0x62.

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