15、W601之SPI Flash实验——W25Q128
一、W25Q128 简介
W601 的 SPI 接口来驱动 W25Q128 这个 SPI FLASH 芯片,W25Q128 是华邦公司推出的大容量 SPI FLASH 产品,W25Q128 容量为 128Mb。也就是 16M 字节。W25Q128 将 16M 的容量分为 256 个块(Block),每个块大小为 65K 字节,每个块又分为16 个扇区(Sector),每个扇区 4K 个字节。W25Q128 的最小擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。这样我们需要给 W25Q128 开辟一个至少 4K 的缓存区,这样对 SRAM 要求比较高,要求芯片必须有 4K 以上 SRAM 才能很好的操作。
二、硬件连接
三、操作W25Q128的主要指令
四、代码实现
/**
* @brief 初始化SPI FLASH的IO口
*
* @param void
*
* @return void
*/
void W25QXX_Init(void)
{
/*
FLASH_CS: PB16
*/
tls_gpio_cfg(WM_IO_PB_16, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH);
W25QXX_CS = 1; //SPI FLASH不选中
W25QXX_TYPE = W25QXX_ReadID(); //读取FLASH ID.
}
u16 W25QXX_ReadID(void)
{
u8 data;
u16 Temp = 0;
W25QXX_CS = 0;
data = 0x90;
SPI_WriteByte(&data, 1);
data = 0x0;
SPI_WriteByte(&data, 1);
SPI_WriteByte(&data, 1);
SPI_WriteByte(&data, 1);
SPI_ReadByte(&data, 1);
Temp |= data << 8;
SPI_ReadByte(&data, 1);
Temp |= data;
W25QXX_CS = 1;
return Temp;
}
最后可以通过串口打印出ID。其他的读写功能都只是逻辑上的,比较简单。