Страница 1 из 1

NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 11:27:56
DeXP
Надо сделать чтение/запись флэш-памяти. Реализовал через ногодрыг PIC-контроллера. Каждый дрыг передаётся по USB, так что задержки слоновые.

Для тестирования в соответствии с даташитом памяти реализовал команду Read ID (Get electronic signature) - 90h. Например, для памяти Samsung 734 K9GAG08U0M возвращает следующие 5 байт: ec-d5-14-b6-74. Вроде бы похоже на правду, т.к. EC - это samsung, также здесь указано, что памяти гигабайт.

Далее попытка чтения (00h). Один цикл на установку команды, 4 цикла адреса, далее для примера 20 циклов чтения. Если перед чтением было вызвано Read ID, то чтение будет каждый раз возвращать данные Read ID. Т.е.: ec-d5-14-b6-74- ec-d5-14-b6-74... Также тестировал на Hynix HY27UV08BG5A и Samsung 616 K9L8G08U0M. Ведут себя так же

Возможно пропускаю что-то принципиальное? Надо ли указывать какой-то маркер завершения команды? Почему новая команда может не устанавливать? C flash работаю впервые

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 18:19:57
Alter Ego
А второй байт команды?
Изображение

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 18:38:16
DeXP
Alter Ego писал(а):А второй байт команды?
Для Samsung 616 K9L8G08U0M нужен. Именно для него всё изначально реализовывал. Ведёт себя так же (кстати, в не зависимости, есть 30h или нету о_О). Для более свежего самсунга и для хьюникса второй байт команды по даташиту не нужен

Если первой командой после подключение было чтение, то возвращает либо ноль, либо 48, либо ещё какое-либо число для каждой ячейки. Никак не FF. После операции read ID возвращает данные Read ID. Помогает только обесточить устройство и включить секунд через 5

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 19:20:56
Alter Ego
А почему 4 цикла адреса, а не 5?

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 19:27:02
DeXP
Alter Ego писал(а):А почему 4 цикла адреса, а не 5?
Аналогично. Для новых микросхем нужно 4. Для этой 5. Может в самой реализации циклов ошибся? Да вроде ж копипаста с Read ID...

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 19:46:16
Alter Ego
DeXP писал(а):Может в самой реализации циклов ошибся?
Возможно...

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 19:50:54
DeXP
Alter Ego писал(а):
DeXP писал(а):Может в самой реализации циклов ошибся?
Возможно...
Там легко перепутать нисходящий/восходящий фронт WE/RE. Но если перепутан фронт, то возвращает нули. WE дёргается, когда пишу адрес. RE - когда читаю данные. Вроде ничего не перепутал(

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 20:31:59
Alter Ego
Похоже, незащелкивается команда, что-то с CLE и WE.

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 22:13:40
DeXP
Alter Ego писал(а):Похоже, незащелкивается команда, что-то с CLE и WE.
Делаю:
CLE=1
WE=0
IO=00h
WE=1
CLE=0

Эта логика правильна? После каждой команды приличные задержки

Re: NAND flash повторяет последнюю команду

Добавлено: Вс июл 21, 2013 23:12:26
Alter Ego
Да, команда должна защелкиваться. Почему не хочет - не понятно.

Re: NAND flash повторяет последнюю команду

Добавлено: Пн июл 22, 2013 15:44:28
DeXP
Alter Ego писал(а):Да, команда должна защелкиваться. Почему не хочет - не понятно.
Проверил ещё раз все ноги - именно CLE дёргает нестабильно. Спасибо, навели на мысль. Буду исправлять