Полная версия этой страницы:
EEPROM
У меня возник ещё один вопрос, который седел у меня у голове уже давно.
Есть, например, микросхема памяти AT24C512 (64 кБ), если писать в нее с 0-го адреса по последний, то нужно ли отслеживать границу сегмента ? И как память организована по сегментам?
Вы очевидно не поверите, но на этот чип есть документация! А слово "писать" не полностью отражает все разнообразие процессов. Писать можно по байту, блоками кратными степени двойки, произвольными блоками...
rezident
Dec 8 2010, 12:07
У м/с EEPROM нет сегментов. У них запись определяется размером буфера. В пределах размера буфера адрес инкрементируется автоматически. Поэтому при записи вне пределов размера буфера происходит нарушение адресации.
Пример. У AT24C512 размер буфера 128 байт. Допустим вам нужно записать 5 байт с адреса 0x017E. Если вы будете писать с адреса 0x017E (десятичный - 382) сразу все 5 байт, то они конечно же уместятся в 128-и байтный буфер, но будут записаны по следующим адресам.
0x017E
0x017F
0x0100 <-здесь произошло переполнение счетчика буфера
0x0101
0x0102
потому, что за границей буфера произойдет переполнение счетчика буфера и байты будут попадать в его начало. Чтобы этого не происходило, нужно делать выравнивание на границу размера буфера. Т.е. сначала записать 2 байта, начиная с адреса 0x017E, затем адресовав с адреса 0x0180, записать еще три байта.
Спасибо!
Выходит размер счётчика адреса 7 бит...
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.