I2C и адрессация в EEPROM
Добавлено: Пн ноя 08, 2010 03:57:30
Пытаюсь писать\читать чип 24с04. В датащите сказано 32 страницы по 16 байт каждая. 512кбайт т.е.
на шине I2C адрес устройства при записи 1010 0000 и 1010 0001 при чтении. Формат такой - 1010 A2,A1,P0,R/W.
A2, A1 у меня на земле. также в датащите сказано, что P0 - это бит страницы памяти.
Так вот, я забиваю чип с адресом 1010 0000 нулями. Последовательно 512кб нулей. Потом, например первый байт единицами. И при проверке оказывается, что единицами становится не только первый байт, но и 256. Т.е. по ходу указатель адреса ячейки достигает предела в 255 байт и перескакивает в начало.
Куда пропали остальные 256 байт? Их я нашел по адресу 1010 0010, т.е. установив бит страницы памяти в 1.
Получается, что чип разделен как бы на 2 страницы? Но как же заявленные в датащите 32 страницы? Как ссылаться на них, если я хочу писать страницу за раз? И как быть с этими двумя - писать последовательно не получается, имея разные адреса они представляются двумя различными устройствами. Так и должно быть?
Использую Arduino. Для I2C подключаю библиотеку Wire, котораячасть функций берет на себя. Может в ней дело или и без неё так?
на шине I2C адрес устройства при записи 1010 0000 и 1010 0001 при чтении. Формат такой - 1010 A2,A1,P0,R/W.
A2, A1 у меня на земле. также в датащите сказано, что P0 - это бит страницы памяти.
Так вот, я забиваю чип с адресом 1010 0000 нулями. Последовательно 512кб нулей. Потом, например первый байт единицами. И при проверке оказывается, что единицами становится не только первый байт, но и 256. Т.е. по ходу указатель адреса ячейки достигает предела в 255 байт и перескакивает в начало.
Куда пропали остальные 256 байт? Их я нашел по адресу 1010 0010, т.е. установив бит страницы памяти в 1.
Получается, что чип разделен как бы на 2 страницы? Но как же заявленные в датащите 32 страницы? Как ссылаться на них, если я хочу писать страницу за раз? И как быть с этими двумя - писать последовательно не получается, имея разные адреса они представляются двумя различными устройствами. Так и должно быть?
Использую Arduino. Для I2C подключаю библиотеку Wire, котораячасть функций берет на себя. Может в ней дело или и без неё так?