Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ В помощь начинающему _ Можно ли расширить память EEPROM

Автор: Kiwi Sep 21 2018, 06:08

Имеется инструмент, который хранит данные в памяти EEPROM. Мы используем четыре 24LC1025 128Kx8 на I2C шине. Задача состоит в том, чтобы увеличить (удвоить) размер этой памяти. Я смотрел AT24CM02 256Кх8, он вдвое больше по размеру, но их только два слейва можно поставить на шине из-за ограниченной адресации; в итоге похоже, то на то и получается. Если ли тут выход, в приборе имеется только I2C.

Автор: jcxz Sep 21 2018, 06:11

Прошивку прибора тоже переписывать будете?

Автор: Kiwi Sep 21 2018, 06:58

Цитата(jcxz @ Sep 21 2018, 18:11) *
Прошивку прибора тоже переписывать будете?

Если в случае надо будет что-то модифицировать, то прошивку менять возможность имеется.

Цитата(Kiwi @ Sep 21 2018, 18:53) *
Если в случае надо будет что-то модифицировать, то прошивку менять возможность имеется.


Автор: Vasily_ Sep 21 2018, 06:58

Цитата(Kiwi @ Sep 21 2018, 09:53) *
Если в случае надо будет что-то модифицировать, то прошивку менять возможность имеется.

Тогда в чем вопрос? памяти разной вагон и маленькая тележка.

Автор: jcxz Sep 21 2018, 07:01

Цитата(Kiwi @ Sep 21 2018, 09:58) *
Если в случае надо будет что-то модифицировать, то прошивку менять возможность имеется.

Если есть исходники, то Ваш вопрос вообще неясен. В чём проблема тогда?

Автор: ikm Sep 21 2018, 07:02

А i2c multiplexer не подойдет, Что то типа этого TCA9546A

Автор: Vasily_ Sep 21 2018, 07:07

Подойдет ? biggrin.gif
http://electronix.ru/redirect.php?http://ww1.microchip.com/downloads/en/devicedoc/atmel-8906f-seeprom-at24c16d-datasheet.pdf

Автор: Kiwi Sep 21 2018, 07:23

Цитата(jcxz @ Sep 21 2018, 19:01) *
Если есть исходники, то Ваш вопрос вообще неясен. В чём проблема тогда?

Для примера из даташита на AT24CM02 256Кх8
"Device Address Inputs: The A2 pin is used to select the device address
and corresponds to the fifth bit of the I2 C seven bit slave address. This
pin can be directly connected to VCC or GND, allowing up to two devices
on the same bus for a total of 4-Mbit of EEPROM.


А мне надо больше.

Цитата(Vasily_ @ Sep 21 2018, 19:07) *
Подойдет ? biggrin.gif
http://electronix.ru/redirect.php?http://ww1.microchip.com/downloads/en/devicedoc/atmel-8906f-seeprom-at24c16d-datasheet.pdf

Это небольшая память, посмотрите мой первый пост.

Цитата(ikm @ Sep 21 2018, 19:02) *
А i2c multiplexer не подойдет, Что то типа этого TCA9546A

Спасибо, посмотрю. Возможно, это пока единственный выход.

Автор: jcxz Sep 21 2018, 07:30

Цитата(Kiwi @ Sep 21 2018, 10:23) *
Спасибо, посмотрю. Возможно, это пока единственный выход.

Не единственный. Заведите входы A2 микросхем на разные ноги GPIO своего МК и активизируйте перед каждой транзакцией нужную.
И тогда можете почти сколько угодно EEPROM-ов на одну I2C-шину повесить.
Это правда потребует дополнительных ног от МК.
Если с доп.ногами проблема, можно обойтись без дополнительных ног, чисто SCL/SDA:
Берёте любой МК, какой больше нравится, с флешь-памятью >=1МБ (таких уже много) пишете на него прошивку, которая любой его I2C-интерфейс программирует в режим slave и потом принимает и обрабатывает команды I2C-EEPROM-а, используя в качестве хранилища часть своей встроенной flash программ. Можно и свой протокол замутить, не обязательно имитировать протокол I2C-EEPROM-ов.
И получаете - всего один чип (а не гроздь EEPROM) и только SCL/SDA. cool.gif
Да - программу нужно написать так, чтобы она при старте копировалась в ОЗУ и выполнялась оттуда. Это несложно.

Автор: Kiwi Sep 21 2018, 08:33

Цитата(jcxz @ Sep 21 2018, 19:30) *
Не единственный. Заведите входы A2 микросхем на разные ноги GPIO своего МК и активизируйте перед каждой транзакцией нужную.
И тогда можете почти сколько угодно EEPROM-ов на одну I2C-шину повесить.

А для тех EEPROM-ов , которые в данный момент не используются, в каком состоянии МК GPIO должен быть, в высокоимпедансном? А глючить те EEPROMы не будут в таком случае?

Автор: jcxz Sep 21 2018, 08:38

Цитата(Kiwi @ Sep 21 2018, 11:33) *
А для тех EEPROM-ов , которые в данный момент не используются, в каком состоянии МК GPIO должен быть, в высокоимпедансном? А глючить те EEPROMы не будут в таком случае?

Нет. Все неактивные - в одном состоянии (лог.1 - например), а на активную EEPROM - другое состояние (лог. 0 например). А адрес естественно на шину подаёте как будто обращаетесь к той, у которой 0 в этом бите. А почему они должны глючить? Все EEPROM получив в начале транзакции адрес, сравнят его со своим пином A2, но только у одной он совпадёт.
Можно даже дешифратор поставить (внешний чип), чтобы уменьшить число необходимых ног МК.
Глючить может только если превысите максимально допустимую паразитную ёмкость по шине или превысите нагрузочную способность.

Автор: Tarbal Sep 22 2018, 17:35

Цитата(jcxz @ Sep 21 2018, 11:30) *
Не единственный. Заведите входы A2 микросхем на разные ноги GPIO своего МК и активизируйте перед каждой транзакцией нужную.


Да. Прикольный способ. Активная микросхема по адресу 0, а все остальные имеют другой адрес. Обращаемся всегда с адресом 0.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)