реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> AT25 после записи страниц в цикле не пишется или не читается., Что может быть!?
Basilij
сообщение Oct 16 2012, 23:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 175
Регистрация: 7-04-11
Пользователь №: 64 190



Господа Здравствуйте в новой теме!

В рамках другой темы память завелась. В рамках данной темы опишу проблему, возможно здесь кроется недопонимание элементарных истин.
Суть такова:
Подключаю память AT25DF или M25P16 библиотекой которая идёт в примерах от переферии ST, пишу страницу, 256 байт, считываю, всё отлично. Всё осциллографом вижу, по всем каналам. Id возвращает верно.

Но стоит хотя бы раз запустить АЦП и каждый 256 байт, запускать запись страницы..
система работает в цикле - 500 страниц пишет по 256 байт, считыват 500 по 256 байт..
пока я отлаживаю, смотрю код, проходит минута.
Решаю проверить что он пишет, сначала вижу что данные исходящего буфера отличны от входящего, а при следующих запусках программы всё, глухо. Пишет, ИД выдаёт, осциллографом при этом вижу что все линии работают, но вот при попытки чтения страницы... нули в ответ.. причём осциллографом это вообще никак не рисуется. Как будто память игнорирует.

Сначала такое было на AT25.. впаял M25... ситуация повторилась..
Один раз показалось что случайно с 6 вольтовой цепи подал сигнал через щуп на SI.. но опять же после этого ИД возвращается.. так что не должно было что либо сгореть, и это было уже после того как страницы перестали читаться.

Может есть какая-то скрытая функция и если записали объём превышающий к примеру сектор 4 кб она сектор автоматом блокирует.. бред конечно.. и в Даташите на эти микры такого невижу... но мало ли..

Подскажите кто что знает по данной проблеме..

Заранее всем спасибо за потенциально возможные комментарии.

Сообщение отредактировал Basilij - Oct 16 2012, 23:07
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 16 2012, 23:10
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А как же стирание? Если постоянно писать по старым данным, то и будут в итоге нули одни.
Go to the top of the page
 
+Quote Post
Basilij
сообщение Oct 17 2012, 08:19
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 175
Регистрация: 7-04-11
Пользователь №: 64 190



Здравствуйте!

Стирание не делал, дело в том что в отладчике я могу несколько раз один и тот же код по порядку выполнять команды на один и тот же адрес, и всегда считывалось одно и тоже.
sFLASH_WritePage(bufOutput,PageAdress,256);
sFLASH_ReadBuffer(bufInput,PageAdress,256);
sFLASH_WritePage(bufOutput,PageAdress,256);
sFLASH_ReadBuffer(bufInput,PageAdress,256);

Ещё не понимаю один момент, когда первый раз мы туда вписали данные, то почему сейчас там нули!? Или при повторной попытке записать данные в предварительно неочищенную область записываются нули? тогда опять же почему мой код выше работал...

Попробов сейчас писать в страницу расположенную в другом секторе. Пишет. Значит память не сгорела. Буду пробовать очишать перед записью.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Oct 17 2012, 09:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Basilij @ Oct 17 2012, 12:19) *
Ещё не понимаю один момент, когда первый раз мы туда вписали данные, то почему сейчас там нули!?

Чистая flash содержит во всех ячейках 0xFF. При записи изменяются только нулевые биты, а единичные остаются как были. Без предварительного стирания в конце концов все биты будут нулевыми, если конечно не писать одно и тоже значание всегда. Это не EEPROM, это flash.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.02035 секунд с 7
ELECTRONIX ©2004-2016