STM Урок 217. HAL. STM32F4. FLASH память W25Q. Считываем данные в программу



Продолжая тему программирования контроллера STM32F4 и также работу с последовательной FLASH-памятью серии W25Q, мы попытаемся с помощью программы для ПК прочитать данные из памяти микросхемы. Причём прочитаем мы все данные полностью, и, мало того, попробуем их сохранить в файл. Это позволит нам полностью сохранить нашу прошивку, как говорят, сделать дамп FLASH-памяти, для дальнейшего её использования.

Программу также можно будет скачать по ссылке внизу страницы.

Схема урока не изменилась, осталась такая же, как и в прошлом уроке

 

 

И проект мы за основу также возьмём из прошлого урока с именем SPI_25Q32_INFO_TO_PC и присвоим ему новое имя SPI_25Q32_READ_TO_PC.

Откроем наш проект в Cube MX и прибавим скорость для UART, иначе мы будем очень долго считывать информацию даже из 32-килобитной микросхемы

 

 

Сгенерируем проект, откроем его в Keil, подключим файл w25q_spi.c, настроим программатор на автоперезагрузку, а также отключим оптимизацию.

Если мы теперь соберём прошьём проект, то, когда будем пробовать нашу программу в действии, то в программе для ПК, мы должны будем изменить значение битрейта

 

 

Прочитаем служебную информацию

 

 

Всё у нас работает.

Возвращаемся к нашему проекту.

Первым делом из файла w25q_spi.c в файл w25q_spi.h перенесём объявление структуры w25_info_t, иначе её тип не виден в других файлах. Объявление переменной данного типа не переносим, только самой структуры

 

 

 

В файле main.c подключим переменную

 

 

В бесконечном цикле в функции main() добавим комментарий, чтобы было понятно, какую мы ждём команду

 

 

Для индикации различных команд мы будем использовать разные светодиоды, поэтому погасим красный светодиод

 

 

Добавим также комментарий, сообщающий о том что далее мы передаём длину пакета

 

 

После длины пакета мы будем передавать также общее количество страниц памяти, а также размер страницы

 

 

Выйдя из тела условия, добавим другое условие, в котором мы будем ждать от компьютера команду на чтение уже не служебной информации, а информации непосредственно из памяти микросхемы

 

 

Если мы дождались именно такой команды, то зажжём красный светодиод, а зелёный погасим

 

 

Добавим цикл, в котором прочитаем в буфер содержимое очередной страницы

 

 

Аналогично первому условию начнём готовить данные.

Оправим компьютеру команду, которая объяснит ему, что от нас идут именно полезные данные и их размер, равный размеру одной страницы

 

 

Далее передадим содержимое нашей страницы

 

 

Передачу разделим по 100 байтов, так компьютер принимает лучше, так почему-то программа не совсем корректно работает с большими порциями

 

 

Размер страницы и количество страниц мы уже не передаём, компьютер их уже знает, так как он получил это по первой команде.

В принципе, наша программа готова.

Проверим её работу. Соберём код, прошьём контроллер, запустим программу на компьютере, считаем служебную информацию, после чего кнопка чего кнопка чтения памяти станет активной. Попытаемся прочитать содержимое памяти микросхемы

 

 

Когда процесс считывания закончится, мы увидим содержимое памяти в шестнадцатеричном виде

 

 

Мы видим, что стала активной кнопка записи в файл. Попробуем воспользоваться ей и сохранить наш дамп для чего назовём наш файл и сохраним в нужное нам место на компьютере

 

 

Мы видим, что файл наш сохранился

 

 

Откроем его и посмотрим

 

 

Содержимое похоже на оригинальное. Вообще я сравнивал получившийся файл с оригинальным, который я записывал в микросхему с помощью программатора — всё сходится, файлы одинаковы.

Итак, на данном уроке нам удалось считать всю информацию из микросхемы, передать её на компьютер, после чего сохранить в файл.

Всем спасибо за внимание!

 

 

Предыдущий урок Программирование МК STM32 Следующий урок

 

 

Исходный код

 

 

Программа для работы с микросхемой

 

 

Отладочную плату можно приобрести здесь STM32F429I-DISCO

Микросхему FLASH-памяти W25Q32FVSSIG SOP8 (5 штук) можно приобрести здесь W25Q32FVSSIG

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

STM HAL. STM32F4. FLASH память W25Q. Считываем данные в программу

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*