Я работаю над обновлением прошивки, чтобы основной контроллер системы мог программировать другие микросхемы STM32.Я использую UART на скорости 115200 бит / с с 8E1, как написано в примечаниях к приложению AN2606 и AN3155 .В настоящее время я пытаюсь прошить STM32F429.Я могу читать флэш без проблем.
Чтобы проверить функциональность записи, я пишу 8 байтов по адресам, кратным 4, как предложено в AN3155 .Я проверил строки данных с помощью логического анализатора, и все отправлено правильно, и STM отвечает ACK на все.
Когда я пытаюсь прочитать его обратно, я получаю случайные значения в этих местах.Значения всегда одинаковы при записи на один и тот же базовый адрес, но они изменяются при записи в другое место.
Я установил регистр конфигурации диапазона напряжения ( AN2606 стр. 30) в 0x03,потому что мой блок питания 3,3 В.Объяснение этого регистра довольно запутанное, поэтому я даже не уверен, что этот параметр правильный, и я не смог найти ничего, что могло бы пойти не так.
ОБНОВЛЕНИЕ:
Я попытался записать все 4-байтовые выровненные адреса, а затем прочитать их для сравнения.Я сделал это с различными размерами данных.Все записи неверны по базовому адресу сектора.Неудачные адреса имеют следующие шаблоны:
Bytes Incorrect write addresses
4 0, 10, 20, 30, ...
8 0, 0C, 1C, 2C, 3C, ...
12 0, 08, 18, 28, 38, ...
16 0, 04, 14, 24, 34, ...
32 0 04, 14, 24, 34, ...
64 0, 04, 08, 0C, 14, 18, 1C, 24, ...
128 all
256 all
РЕШЕНИЕ:
Doh!Была проблема со стиранием вспышки, которую я не заметил.