Микроконтроллер SAM3SU посредством GPIO работает с NAND Flash K9F2G08U0B (8-ми битная флэшка на 256 мегабайт). Пока запись страницы выполнялась с помощью пары 0x80 - 0x10 (обычная операция записи) все шло хорошо, решил попробовать ускорить командой Cache Program. Пишу все страницы одного блока кроме последней парой команд 0x80 - 0x15, и последнюю страницу обычной командой программирования страницы (0x80 - 0x10), после каждой комадны ожидаю готовности по пину RDY/BSY. В коде разница для страниц буквально выглядит так: if ( page == 63 ) { NAND_WRITE_CLE( NAND_CMD_PAGEPROG2 ); } else { NAND_WRITE_CLE( NAND_CMD_CACHEPROG ); }
Нормально записывается только последняя страница блока (63), остальные при чтении показывают сплошные 0xFF. Если в обоих ветка условия поставить команду обычного программирования страницы, то все страницы пишутся нормально. В Datasheets нашел только одно требование к работе Cache Program - все страницы должны распологаться в одном блоке, для надежности прописал жестко в виде константы. Какие ещё могут быть различия в условиях выполнения обычной команды программирования страницы и с кэшированием?
Сообщение отредактировал semibug - Jul 22 2012, 10:11
|