15、W601之SPI Flash实验——W25Q128

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。其他的读写功能都只是逻辑上的,比较简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值