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

 
 
> проблемы с MT29F4G01AAADD, Не записываются данные
Грендайзер
сообщение Oct 8 2015, 12:29
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Здравствуйте. Работаю с микросхемой памяти MT29F4G01AAADD. Наисал программку для ПК на которой несколько кнопок : ID, Write_enable, Write_disable, reset, program_load, program_execute, erase и get_features_C0h которые соответственно посылают запрос на чтение ID, разрешает запись, запрещает, сбрасывает устройство, программтруют кэш и производят запись его содержимого в основной массив, а так же считывают регистр состояния по адресу C0h. При нажатии на кнопку, соответствующая команда транслируется на контроллер по UART и дальше по SPI на устройство. Запрос ID проходит нормально (устройство передаёт значения 0x2C и 0x32 что соответствует числам в даташите). Далее запускаю команду разрешения записи WRITE ENABLE (06h). Чинаю данные с регистра состояния (GET FEATURES (0Fh) по адресу C0h). Устройство отсылает в ответ 2 (что значит, что бит WEL выставился в 1 что то же соответствует данным в даташите). Когда отсылаю команду WRITE DISABLE (04h) то бит WEL выставился в 0 что то же верно. Далее отсылаю WRITE ENABLE (06h), потом читаю регистр статуса - там 2, т.е. всё хорошо. Далее выполняю команду PROGRAM LOAD (02h), отсылая побайтно следующие данные : 0x02 - номер команды, 0x08, 0x40 - 2112-ая страница, блок № 0, 0x55 - данные для записи. Далее команду PROGRAM EXECUTE (10h) : 0x10 - номер команды, 0x04, 0x20, 0x00 - 2112-ая страница, блок № 0, 6 бит значение которых не важно. Читаю регистр статуса, память шлёт число 8, что значит, что P_Fail - встал в 1, что означает Program fail (т.е. ошибка записи). Примерно таже история при выполнение команды BLOCK ERASE (D8h). Не пойму, в чём дело?! 05.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
gerber
сообщение Oct 11 2015, 08:28
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Команда 02h адресует данные внутри страницы (page), то есть валидны 0-2111 байт (2048+64), остальные 2112-4096 адреса считаются "out of bounds" и попытка записи в них, естественно, дает ошибку.
Вы же последовательностью 02h,08h,40h как раз и задаете 2112 адрес внутри страницы, который выходит за диапазон.

Сообщение отредактировал gerber - Oct 11 2015, 10:31


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Oct 18 2015, 14:38
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Да, спасибо большое за ответ. Разобрался сразу, после того, как написал сообщение (хорошая мысля приходит опосля) laughing.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:36
Рейтинг@Mail.ru


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