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的主要内容,如果未能解决你的问题,请参考以下文章

stm32和外接flash(w25q)连接问题

野火STM32 Flash&sd卡模拟U盘

野火STM32开发板中的UCGUI LIB是怎么生成的

STM32野火教程学习笔记

第36章 SDIO—SD卡读写测试

[长文干货]MicroPython移植到野火STM32F429开发板