Микроконтроллер 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 - все страницы должны распологаться в одном блоке, для надежности прописал жестко в виде константы.
Какие ещё могут быть различия в условиях выполнения обычной команды программирования страницы и с кэшированием?