STM32读写W25Q
Posted 文某9
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32读写W25Q相关的知识,希望对你有一定的参考价值。
文章目录
硬件外观
引脚说明
关于如何接线?
1,CS
2,MISO
3,3.3V
4,GND
5,MOSI
6,SCK
7,3.3V
8,3.3V
关于如何查询芯片引脚?(打开STM32手册)
代码摘要
这段来自野火源码,需要修改的是芯片地址
关于为何要修改地址?
程序的流程是预先设置一个地址,也就是上面的地址,然后在程序跑起来的时候读取芯片的地址,读取
地址后与预先设置的地址对照,然后打印提示信息。
int main(void)
/* 配置串口为:115200 8-N-1 */
USART_Config();
printf("\\r\\n 这是一个8Mbyte串行flash(W25Q64)实验 \\r\\n");
/* 8M串行flash W25Q128初始化 */
SPI_FLASH_Init();
/* 获取 Flash Device ID */
DeviceID = SPI_FLASH_ReadDeviceID();
Delay( 200 );
/* 获取 SPI Flash ID */
FlashID = SPI_FLASH_ReadID();
printf("\\r\\n FlashID is 0x%X,\\
Manufacturer Device ID is 0x%X\\r\\n", FlashID, DeviceID);
/* 检验 SPI Flash ID */
if (FlashID == sFLASH_ID)
printf("\\r\\n 检测到串行flash W25Q64 !\\r\\n");
/* 擦除将要写入的 SPI FLASH 扇区,FLASH写入前要先擦除 */
// 这里擦除4K,即一个扇区,擦除的最小单位是扇区
SPI_FLASH_SectorErase(FLASH_SectorToErase);
/* 将发送缓冲区的数据写到flash中 */
// 这里写一页,一页的大小为256个字节
SPI_FLASH_BufferWrite(Tx_Buffer, FLASH_WriteAddress, BufferSize);
printf("\\r\\n 写入的数据为:%s \\r\\t", Tx_Buffer);
/* 将刚刚写入的数据读出来放到接收缓冲区中 */
SPI_FLASH_BufferRead(Rx_Buffer, FLASH_ReadAddress, BufferSize);
printf("\\r\\n 读出的数据为:%s \\r\\n", Rx_Buffer);
/* 检查写入的数据与读出的数据是否相等 */
TransferStatus1 = Buffercmp(Tx_Buffer, Rx_Buffer, BufferSize);
if( PASSED == TransferStatus1 )
printf("\\r\\n 8M串行flash(W25Q64)测试成功!\\n\\r");
else
printf("\\r\\n 8M串行flash(W25Q128)测试失败!\\n\\r");
// if (FlashID == sFLASH_ID)
else// if (FlashID == sFLASH_ID)
printf("\\r\\n 获取不到 W25Q128 ID!\\n\\r");
while(1);
代码获取
可在野火源码寻找,也可在评论区获取,如有错误欢迎指正一起进步。
以上是关于STM32读写W25Q的主要内容,如果未能解决你的问题,请参考以下文章