|
|
  |
Запись байта в AT26 |
|
|
|
Mar 10 2007, 02:36
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(rx3apf @ Mar 10 2007, 01:18)  Цитата(_Артём_ @ Mar 10 2007, 01:50)  Не могу понять алгоритм записи данных в микросхемах этой серии (конкретней для AT26DF161). Непонятно вот что: в отличие от микросхем серии AT45 появилась возможность писать не страницами, а по-байтно, но нужно ли стирать байт (т.е. вернуть ячейку в состояние 0xFF)? Команды стирания байта или страницы нет (или я не нашёл?), есть только стирание блока размером от 4к. Как же тогда с тогда изменить содержимое одного дайта не стирая весь блок?
Никак. "1"-значение бита можно превратить в "0", но чтобы сделать обратное изменение - придется вычитать блок, стереть, и перезаписать. Понятно. Обязательно ли стирать блок в микросхемах серии AT26DFxxxА: там дополнительно появилась команда Sequential Program Mode? Получается, что для того чтобы записать один байт нужно считать как минимум 4к байт, стереть их и записать заново.
|
|
|
|
|
Mar 10 2007, 03:11
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(_Артём_ @ Mar 10 2007, 02:36)  Обязательно ли стирать блок в микросхемах серии AT26DFxxxА: там дополнительно появилась команда Sequential Program Mode? Это всего лишь опция записи. Стирание как требовалось, так и требуется, поскольку принцип не изменился. Цитата(_Артём_ @ Mar 10 2007, 02:36)  Получается, что для того чтобы записать один байт нужно считать как минимум 4к байт, стереть их и записать заново. Чтобы _записать_ - это не требуется (достаточно заранее стереть). А вот чтобы _изменить_ содержимое, отличное от FF - да, придется так и делать. Или отказаться от использования блочного FLASH, и использовать традиционную EEPROM с возможностью побайтовой модификации. Но там емкости куда меньше...
|
|
|
|
|
Mar 10 2007, 12:25
|
Частый гость
 
Группа: Свой
Сообщений: 142
Регистрация: 19-11-05
Пользователь №: 11 103

|
Цитата(rx3apf @ Mar 10 2007, 03:11)  Цитата(_Артём_ @ Mar 10 2007, 02:36)  Обязательно ли стирать блок в микросхемах серии AT26DFxxxА: там дополнительно появилась команда Sequential Program Mode?
Это всего лишь опция записи. Стирание как требовалось, так и требуется, поскольку принцип не изменился. И не забывать снимать защиту с сектора при записи. Цитата(rx3apf @ Mar 10 2007, 03:11)  Цитата(_Артём_ @ Mar 10 2007, 02:36)  Получается, что для того чтобы записать один байт нужно считать как минимум 4к байт, стереть их и записать заново.
Чтобы _записать_ - это не требуется (достаточно заранее стереть). А вот чтобы _изменить_ содержимое, отличное от FF - да, придется так и делать. Или отказаться от использования блочного FLASH, и использовать традиционную EEPROM с возможностью побайтовой модификации. Но там емкости куда меньше... Либо использовать AT45... У нее есть встроенный буфер к тому же.
|
|
|
|
|
Feb 2 2009, 02:39
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 6-01-09
Пользователь №: 42 957

|
Здравствуйте. Столкнулся с интересным поведением AT26DF161, о котором в документации не упоминается ни слова.
При записи в Status Register любой комбинации вида xx0000xx, все Sector Protection Registers разом сбрасываются в состояние Unprotected, а при записи xx1111xx - тоже все и тоже разом переходят в состояние Protected, если только они не были зафиксированы до этого битом SPRL (новое значение этого бита, записываемое этой командой, не считается). Я конечно понимаю, что там два бита reserved, но раз уж из них читаются нули, то логично, что и записывать надо нули; а при записи, например, всех восьми нулей сбрасываются все Sector Protection Registers. А так - всё читается, пишется, зашибись. Я даже записал в это микросхему фотографию любимого человека =)
Ребят, кто-нибудь наблюдал подобное? Или это мои недосмотры?
P.S. Я здесь недавно, поэтому новую тему создавать побоялся, на всякий случай пишу суда.
|
|
|
|
|
Jul 4 2011, 06:16
|
Группа: Участник
Сообщений: 10
Регистрация: 24-06-10
Пользователь №: 58 129

|
Цитата(Ноль с переносом @ Feb 2 2009, 06:39)  Здравствуйте. Столкнулся с интересным поведением AT26DF161, о котором в документации не упоминается ни слова.
При записи в Status Register любой комбинации вида xx0000xx, все Sector Protection Registers разом сбрасываются в состояние Unprotected, а при записи xx1111xx - тоже все и тоже разом переходят в состояние Protected, если только они не были зафиксированы до этого битом SPRL (новое значение этого бита, записываемое этой командой, не считается). Я конечно понимаю, что там два бита reserved, но раз уж из них читаются нули, то логично, что и записывать надо нули; а при записи, например, всех восьми нулей сбрасываются все Sector Protection Registers. А так - всё читается, пишется, зашибись. Я даже записал в это микросхему фотографию любимого человека =)
Ребят, кто-нибудь наблюдал подобное? Или это мои недосмотры?
P.S. Я здесь недавно, поэтому новую тему создавать побоялся, на всякий случай пишу суда. В новой документации к памяти это описано. Можно через регистр статуса глобально сбрасывать защиту
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|