VSCode+CubeMX开发STM32笔记-SPI与Flash模块使用
使用VSCode+CubeMx开发STM32,这里介绍SPI接口读写Flash模块W25Q64;
1.建立工程
1.1 创建项目文件
从已有的仓库中创建一个工程:
1 | git clone https://github.com/makerinchina-iot/vscode_stm32cubemx_hello.git w25q64_flash |
使用VSCode打开工程后,需要更改如下名字:
- 文件夹根目录下CMakeLists.txt 文件中修改工程名字为w25q64_flash:
1 | set(CMAKE_PROJECT_NAME w25q64_flash) |
- stm32cubemx配置文件更改为 w25q64_flash.ioc ,并更改以下文件名:
1 | ... |
1.2 引脚配置
使用STM32CubeMx打开ioc配置文件,然后配置对应的SPI引脚;

- SPI1配置好时钟和时钟极性等模式;
- 这里SPI速度配置需要注意:如果选择比较高速的时钟波特率,那么对应GPIO也需要配置为高速,否则SPI会工作不正常:

2. 编写代码
2.1 基本的Flash操作
Flash操作的命令根据规格书定义通过SPI传输,主要为 HAL_SPI_Transmit 和 HAL_SPI_TransmitReceive 两个API函数;

- 读取Flash ID信息:
读取ID信息,需要发送 JECED ID命令,程序如下:
1 | /* 1. 读 ID */ |
SPI时序如下:

- 写入和读取数据
写入数据前,需要擦除在写入数据,写入数据和擦除操作都需要发送write enable命令,然后等待写入状态完成再进行下一步操作:
1 | void w25_wait_busy(void) |
- 擦除然后写入和读取测试
1 | /* 2. 擦除首扇区 */ |
3.编译并烧录代码
3.1 编译和烧录
点击生成按键即可编译工程;
在VSCode中执行task:openocd-flash烧录;
3.2 硬件连接与结果
- 按照如下方式连接硬件:
STM32 | W25Q64 Flash |
---|---|
3.3V | VCC |
GND | GND |
PA4 - SPI1_NSS | CS |
PA5 - SPI1_SCK | CLK |
PA6 - SPI1_MISO | DO |
PA7 - SPI1_MOSI | DI |
- 运行程序后结果如下:

可以看到写入到FLash的数据和读取的一致;
著作权归本网站(https://makerinchina.cn)所有,转载请注明来自 MakerInChina.