Пытаюсь дописывать в сектор программной flash LPC1758 без предварительного стирания сектора. Исходное состояние области в которую пишу - все 0xFF. Так вот: иногда запись проходит нормально, иногда - записанное не соответствует записываемому (как правило - в каком-либо одном байте). Если предварительно стереть сектор - то всегда всё ок. Перепробовал уже вроде всё, что можно: запрещал прерывания на всю процедуру записи, менял сектора, размеры записываемого сегмента, писал кодом из ОЗУ и flash и т.п. - всё без толку. Вот такой блок (hex): 18,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,81,15,3A,18 ,94 даёт сбой каждую 4-ю запись. После проверки получаю что записано: 18,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,20,00,81,15,3A,18 ,94 И результат всегда такой. Каждая 4-я запись у меня идёт по адресу, кратному 0x20 (может это как-то влияет). Повторная многократная запись поверх по этим-же адресам этого-же блока не помогает.
Согласно AN11008 с сайта NXP такая запись без стирания возможна. В еррате ничего нет.
Сталкивался-ли кто-нибудь с подобным?
|