Radio_Master от Пт Окт 10, 2008 15:36:39
...но в 24с16 их аж 16Кб*1024=16384байт...
Во первых пожалуйста поаккуратней с арифматикой. 16Кб*1024=16384Kбайт =
16Mb !!!.
Во вотрых в 24с16 не 16Kb, а
16Кбит, те всего 2Kb.
Radio_Master от Пт Окт 10, 2008 19:22:49
RANDOM READ: A random read requires ...
ПРОИЗВОЛЬНОЕ ЧТЕНИЕ: Произвольное чтение требует посылки фиктивной команды записи для загрузки адреса байта данных. После того, как адрес устройства и адрес байта данных переданы в микросхему и подтверждены EEPROM, микроконтроллер должен сгенерировать новое START условие. Затем микроконтроллер инициирует чтение байта по указанному адресу, посылкой адреса устройства с битом чтения/записи установленным в лог.1. EEPROM подтверждает адрес устройства и последовательно выдает считываемый байт данных. Микроконтроллер не отвечает нулем, и генерирует STOP условие (см. рис.5).
Это значит что адрес состоит из 16 бит!?
Это значит, что адрес состоит из:
7-ми бит для 24c01 (1024 бит == 127 байт) - однобайтный адрес;
8-ми бит для 24c02 (2048 бит == 256 байт) - однобайтный адрес;
9-ти бит для 24c04 (4096 бит == 512 байт) - однобайтный адрес;
10-ти бит для 24c08 (8192 бит == 1024 байт) - однобайтный адрес;
11-ти бит для 24c16 (16384 бит == 2048 байт) - однобайтный адрес;
12-ти бит для 24c32 (32768 бит == 4096 байт) -
двухбайтный адрес;
................
16-ти бит для 24c512 (524288 бит == 65536 байт) -
двухбайтный адрес
24c04..24c16 обходятся однобайтным адресом только за счет того, что старшие 1..3 бита адреса ячейки передаются внутри адреса устройства (поля P0..P2 см.
Figure 1 в дш) усекая возможность адресации нескольких микросхем на одной шине. Именно поэтому можно подключать к одной шине до 8-ми корпусов 24c01 или 24c02; до 4-х 24c04; до 2-х 24c08 и только одну 24c16!
Для доступа к произвольной ячейке 24c32 и выше естественно требуется передавать уже 2 байта адреса.
И ни какие банки тут не при чем!
To
diehard
i2c_write(Bank); // Выбор банка в устройстве
i2c_write(ExtEEAdr); // Выбор адреса для работы в банке
Первая команда - передача
старшего байта адреса ячейки, а вторая -
младшего и ничего более.
А 24cXX.jpg к EEPROM 24cXX не имеет ни какого отношения, т.к. ни какой
Protection Bit Memory Area там нет, да и страницы по 32 байта противоречат даже Вашему коду.