I2C EEPROM с нестандартным адресом? [дубликат]

Итак, я знаю, что почти все микросхемы I2C EEPROM используют 0xAh (или 1010) в качестве старших четырех битов адреса подчиненного устройства. В настоящее время у меня есть 16-килобитная EEPROM на моей шине I2C, которая использует младшие 3 бита адреса подчиненного устройства для адресации блоков. Это означает, что он кооптирует все адреса, начинающиеся с 0xAh.

Мне нужно поместить вторую EEPROM на ту же шину, но мне очень трудно найти такую, которая не будет конфликтовать с существующим чипом (по конструктивным причинам этот чип не может быть изменен). ЭСППЗУ меньшей емкости — это хорошо, но я не могу использовать ни одно из бесчисленных устройств 8 кбит/4 кбит/2 кбит, потому что все их подчиненные адреса начинаются с 0xAh.

Единственное, что мне удалось найти, это этот чип от NXP, который использует 0x2h в качестве старших четырех битов адреса ведомого устройства. Но он не работает в быстром режиме (400 кГц) и поставляется только в DIP- или SO-корпусах, оба из которых слишком велики.

Существует ли микросхема I2C, которая работает в быстром режиме, поставляется в приемлемом корпусе и, что самое главное, использует подчиненный адрес, не начинающийся с 1010/0xAh?

Это также не по теме, поскольку он просит рекомендации для конкретного продукта.

Ответы (3)

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

Таким образом, проект просто добавил CE к одному из GPIO контроллера — на самом деле мы добавили 2, чтобы мы могли потенциально добавить еще 2 части, когда неизбежно группа разработчиков программного обеспечения перерастет дополнительные 100% мощности, которые мы им только что предоставили.

Спасибо, это хорошая идея. Этот чип имеет защиту от записи, но, к сожалению, не включает чип. Таким образом, я мог бы заставить запись работать правильно с помощью этого метода, но чтение все равно было бы беспорядком.
@SeeminglySo +1 за «обход проблемы».
@llakais Аналогично предложенному ответу, можно ли настроить SCL (аппаратно или в коде), чтобы один чип синхронизировался только во время записи? Любые другие устройства I2C на шине, кроме EEPROM?
@ExcitingProjects К сожалению, в шине есть и другие устройства, но спасибо за идею.

Если вы можете побитно настроить мастер I2C и если ни одно из устройств не использует квитирование на основе SCK, вы можете поменять местами SDA и SCK на некоторых устройствах I2C. Возможно, вам придется проверить свой код I2C, чтобы убедиться, что он никогда не генерирует какие-либо последовательности событий на SCK/SDA, которые устройство с перевернутыми контактами может ошибочно интерпретировать как последовательность запуска + адресации. Обычно это не должно быть проблемой, так как каждый бит «1», тактируемый одним устройством или для него, будет рассматриваться другим как остановка и перезапуск, и единственный раз, когда устройство когда-либо увидит тактовый бит «0». если другой делает остановку и перезапуск. Тем не менее, существует очень отдаленная (теоретическая) вероятность того, что оба устройства каким-то образом могут попасть в состояние, когда они пытаются установить SDA, что может привести к блокировке шины. Если вы используете процессор, который может управлять контактами с высоким уровнем 10 мА,

Поскольку PCF85103 (256*8-битная EEPROM с нестандартным адресом 0010XXX вместо обычного 1010xxx) исключена из-за скорости, единственным оставшимся решением может быть использование мультиплексора (PCA9548, PCA9546, PCA9544/45, PCA9540, PCA9542/43).