使用STM32F407VET6的硬件SPI1读写W25Q16
对应引脚
SCK:PA5;
MISO:PA6
MOSI:PA7
CS:PB0
初始化SPI的函数
创建对应的结构体并设置参数
初始化引脚
SPI_1的发送和读取函数
W25Q16相关操作函数
主函数
测试
错误总结:
1:由于在SMT32F4中文手册中没有找到SPI引脚的配置模式,一开始参考了STM32F103的手册中的引脚配置模式,配置MISO引脚为上拉输入,测试结果一直读不到数据。后面将其配置为复用功能,才能正常接收数据。
2:一开始编写W25Q16的相关函数并没有加入延时函数,导致只能读取ID号,不能擦除和写入数据。本人在网络上搜索到的解决办法,也不能解决不能写入的问题,最后多次尝试发现写入一个短暂的延时可以正常擦除和写入。W25Q16的SPI时钟最大应该支持的是80MHZ,本笔记中的SPI的时钟设置为42MHZ,但是主时钟是168MHZ,可能是程序执行的速度快了,函数操作之间加延时可以正常读写W25Q16。