硬件外观
引脚说明
关于如何接线?
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);
}
代码获取
可在野火源码寻找,也可在评论区获取,如有错误欢迎指正一起进步。