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

STM32F4xx_SPI_FLASH

Аватара пользователя
dvk
Сообщения: 40
Зарегистрирован: Вс мар 22, 2026 8:04 pm
Откуда: Тилимилитрямдия

STM32F4xx_SPI_FLASH

Сообщение 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 пока отказался , ради простоты
Последний раз редактировалось dvk Сб мар 28, 2026 3:53 pm, всего редактировалось 2 раза.
Аватара пользователя
dvk
Сообщения: 40
Зарегистрирован: Вс мар 22, 2026 8:04 pm
Откуда: Тилимилитрямдия

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

Модуль создан на базе имеющегося в редакторе spi_tx , в него добавлены переменная для хранения ID и маленький массивчик для данных
mass.png
mass.png (3.52 КБ) 163 просмотра
datat_id.png
пример чтения
Последний раз редактировалось dvk Сб мар 28, 2026 3:51 pm, всего редактировалось 1 раз.
Аватара пользователя
dvk
Сообщения: 40
Зарегистрирован: Вс мар 22, 2026 8:04 pm
Откуда: Тилимилитрямдия

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

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

Re: STM32F4xx_SPI_FLASH

Сообщение VitGo »

ну еще написать подпрограмму записи - и можно оформлять в виде модуля читающего\записывающего флешку

на счет SPI1 - ну главное чтобы с чего то можно было начать, дальше уже кому надо будет поправят
Аватара пользователя
dvk
Сообщения: 40
Зарегистрирован: Вс мар 22, 2026 8:04 pm
Откуда: Тилимилитрямдия

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

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

Re: STM32F4xx_SPI_FLASH

Сообщение VitGo »

я про код записи во флешку со стороны мку..
то что можно через утилиту - это тоже конечно полезно, но скорее для тех кому восстановить данные надо..

я просто думаю как в своем проектике делать хранилище.. и вариант с какой нить spi флешкой пока мне нравиться...
разметить ее как cpm диск и использовать в операционке,
Аватара пользователя
dvk
Сообщения: 40
Зарегистрирован: Вс мар 22, 2026 8:04 pm
Откуда: Тилимилитрямдия

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

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

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

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

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

Сам шучу, сам смеюсь
2.png
красненькое , но работает :shock: . Интересно было бы услышать критику такого MACROсофака
Аватара пользователя
dvk
Сообщения: 40
Зарегистрирован: Вс мар 22, 2026 8:04 pm
Откуда: Тилимилитрямдия

Re: STM32F4xx_SPI_FLASH

Сообщение dvk »

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

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

Вернуться в «FLASH Memory»