Страница 1 из 2

STM32F4xx_SPI_FLASH

Добавлено: Сб мар 28, 2026 3:11 pm
dvk
VitGo писал(а): Ср мар 25, 2026 6:28 pm Модулем работы с SPI FLASH в итоге поделитесь ?
Не знаю что вы хотите от флешки, мне нужно было только чтение данных ( это криво-косо и сделал). Записывать на флешку данные я планирую с помощью ExternalLoader через STLink-Utility. Затевалось всё для работы с вот такими платками BlackPill
борд.png
На них есть место под флешку , это очень удобно, можно конечно и на проводках подкинуть.
схема.png
Схема подключения флешки на моей плате, ( версии у плат бывают разные и пины могут отличаться ) нужно проверять.
F401_spi_flash.rar
(79.4 КБ) 7 скачиваний
Демо проект , проверял на F401RCT6 и на F411CEU6 , но думаю на любом чипе F4 должно работать. Сделал две функции , чтение ID флешки и чтение последовательности данных с нужного адреса . Процесс чтения ID очень простой, нужно передать команду 0x9F и затем 3 любые байты , считывая принятый байт из регистра SPI_DR . Для чтения данных нужно отправить команду 0x03, затем три байта адреса ( старшим байтом вперёд), и затем отправлять и читать столько сколько хотим получить байт данных. От использования DMA пока отказался , ради простоты

Re: STM32F4xx_SPI_FLASH

Добавлено: Сб мар 28, 2026 3:14 pm
dvk
Модуль создан на базе имеющегося в редакторе spi_tx , в него добавлены переменная для хранения ID и маленький массивчик для данных
mass.png
mass.png (3.52 КБ) 170 просмотров
datat_id.png
пример чтения

Re: STM32F4xx_SPI_FLASH

Добавлено: Сб мар 28, 2026 3:33 pm
dvk
Для записи данных во флешку можно использовать STLink Utility или CubeProgrammer и Внешний Загрузчик .
F4_External_Loader.rar
(23.59 КБ) 7 скачиваний
Это сам загрузчик , его нужно добавить в папку External Loader любой из этих программ.В самой папке уже содержаться разные загрузчики для разных плат, их можно все удалить. Затем нужно выбрать загрузчик и указать адрес 0x90000000
stlinkutil1.png
stlinkutil2.png
Загрузчик писался для F411 и флешки W25Q64 которая должна сидеть на SPI1 как на схеме выше, это обязательно. Загрузчик нормально работает сейчас и с F401RCT6 и флешкой W25Q32. работать будет и с меньшим объёмом флешки а вот флешками размером 128 Мбит и больше уже не будет в полном объёме.

Re: STM32F4xx_SPI_FLASH

Добавлено: Сб мар 28, 2026 6:39 pm
VitGo
ну еще написать подпрограмму записи - и можно оформлять в виде модуля читающего\записывающего флешку

на счет SPI1 - ну главное чтобы с чего то можно было начать, дальше уже кому надо будет поправят

Re: STM32F4xx_SPI_FLASH

Добавлено: Сб мар 28, 2026 7:03 pm
dvk
VitGo писал(а): Сб мар 28, 2026 6:39 pm на счет SPI1 - ну главное чтобы с чего то можно было начать, дальше уже кому надо будет поправят
SPI1 нужен для работы через внешний загрузчик STLink Utility. Если не использовать внешний загрузчик то конечно можно любой настраивать, только нужно как-то что-то записать :D

Re: STM32F4xx_SPI_FLASH

Добавлено: Сб мар 28, 2026 9:19 pm
VitGo
я про код записи во флешку со стороны мку..
то что можно через утилиту - это тоже конечно полезно, но скорее для тех кому восстановить данные надо..

я просто думаю как в своем проектике делать хранилище.. и вариант с какой нить spi флешкой пока мне нравиться...
разметить ее как cpm диск и использовать в операционке,

Re: STM32F4xx_SPI_FLASH

Добавлено: Вс мар 29, 2026 9:43 pm
dvk
VitGo писал(а): Сб мар 28, 2026 6:39 pm ну еще написать подпрограмму записи
Вчера попробовал писать . Эта гадюка ( запись ) , самая замороченная. Нужна ещё очистка , чтение статуса, проверка корректности записи :shock:
Вы примерно представляете сколько данных и как часто нужно будет писать ?
контроль износа есть в вашей операционке ? наверное нет

Re: STM32F4xx_SPI_FLASH

Добавлено: Пн мар 30, 2026 8:28 pm
dvk
День добрый.
Перенёс все проверки флагов в подпрограммы
2026-3-30 18-15-54.png
Пришла мысля , можно ли их как-то в макросы обернуть ? А главное как ?))) У меня не получилось слёту

Re: STM32F4xx_SPI_FLASH

Добавлено: Пн мар 30, 2026 11:30 pm
dvk
Сам шучу, сам смеюсь
2.png
красненькое , но работает :shock: . Интересно было бы услышать критику такого MACROсофака

Re: STM32F4xx_SPI_FLASH

Добавлено: Чт апр 02, 2026 2:19 pm
dvk
F401_spi_flash.rar
(85.54 КБ) 8 скачиваний
Добавил :
Очистку сектора
Запись страницы
Проверку статуса записи\стирания
prog_page.png
Запись одного байта выглядит так.
1 Отправляем команду разрешения записи
2 Проверяем установился ли бит разрешения записи в статус регистре флешки
3 Отправляем команду записи и адрес куда будем писать. Затем один байт(для теста)
4 Проверяем бит занятости в статус регистре флешки. Он показывает что процесс записи\стирания продолжается и другие команды флешка не примет , пока бит не сбросится.

Всё это происходит "очень" долго. Если производить запись не очень часто , то пункт 4 можно исключить или перенести его в начало цикла записи. Пункт 2 тоже не особо нужен , у меня во всех тестах бит WEL (Write Enable Latch) в статус регистре успевал установиться до начала записи.
Можно всё ускорить и настроить под свои нужды