CW32F030 内置多个 SPI 接口,本文记录用 SPI0 主机模式驱动 W25Q64 SPI Flash 的工程实现,包括引脚配置、读写命令封装和工程注意事项。
## 一、硬件连接
| 信号 | CW32F030 引脚 | W25Q64 |
| --- | --- | --- |
| SCK | PA5 | CLK |
| MOSI | PA7 | DI |
| MISO | PA6 | DO |
| CS | PA4 | CS# |
## 二、SPI0 初始化要点
1. 配置 GPIO 复用为 SPI0 功能,注意 CS 使用普通 GPIO 手动控制;
2. SPI0 主机模式,时钟极性 CPOL=0、相位 CPHA=0(模式 0);
3. 分频后 SCK 建议不超过 20MHz,长走线可适当降速;
4. 传输完成后清空忙标志。
## 三、W25Q64 命令封装
```c
uint8_t spi_flash_read_id(void) {
uint8_t cmd = 0x9F, id = 0;
cs_low();
spi0_write_byte(cmd);
spi0_write_byte(0xFF);
id = spi0_read_byte();
cs_high();
return id;
}
```
读数据时先发 0x03 读命令,再发 24 位地址,随后连续读取数据字节;写数据前必须先执行 0x06 写使能,并等待 WIP 标志清零。
## 四、注意事项
1. 写页大小为 256 字节,跨页写要分段处理;
2. 擦除扇区(4KB)前确认没有正在进行写操作;
3. 若 SPI 时钟过高速率不稳定,优先检查 MISO 上拉和走线长度。
以上就是 CW32F030 驱动 W25Q64 的要点,欢迎交流。 |
|