我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

    

本文介绍X-CTR100控制器 板载FLASH存储芯片W25Q64的使用。

W25Q64,芯片容量为64M bit,即8M Byte,可用于存储参数、字库、图片等数据。

原理

W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。所以,这需要给W25Q64开辟一个至少4K的缓存区,这样必须要求芯片有4K以上的SRAM才能有很好的操作。W25Q64的擦写周期多达10W次,可将数据保存达20年之久,支持2.7~3.6V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。

 支持标准、双输出和四输出的SPI

 高性能串行闪存

 高达普通串行闪存性能的6倍

 80Mhz的时钟操作

 支持160Mhz的双输出SPI

 支持320Mhz的四输出SPI

 40MB/S的数据连续传输速率

 高效的"连续读取模式"

 低指令开销

 仅需8个时钟周期处理内存

 允许XIP操作

 性能优于X16并行闪存

 低功耗,温度范围宽

 单电源2.7V至3.6V

 4mA有源电流

 -40°C 至+85°C的正常运行温度范围

 灵活的4KB扇区构架

 扇区统一擦除(4KB)

 块擦除(32KB和64KB)

 1到256个字节编程

 超过10万次擦除/写循环

 超过20年的数据保存

 高级的安全功能

 软件和硬件写保护

 自上至下,扇区或块选择

 锁定和保护OTP

 每个设备都有唯一的64位ID

 CS:片选信号输入

 DO(IO1):数据输出(数据输入输出1)

 WP(IO2):写保护输入(数据输入输出2)

 GND:地信号

 DI(IO0):数据输入(数据输入输出0)

 CLK:串行时钟输入

 HOLD(IO3):Hold输入(数据输入输出3)

 VCC:电源

例程

读取W25Q64芯片ID,FLASH读写数据测试,掉电唤醒测试。

硬件说明

硬件资源:

  • 串口UART1
  • W25Q64

硬件连接:

X-CTR100设计有SPI FLASH存储芯片和TF卡接口,共用SPI1资源,可通过片选信号进行分时工作。

软件生态

X-SOFT软件生态,X-API文件如下。

ax_w25q64.c——X-CTR100 板载W25Q64 FLASH存储源文件

ax_w25q64.h——X-CTR100 板载W25Q64 FLASH存储头文件

操作函数如下:

void AX_W25Q64_Init(void); //W25Q64初始化

void AX_W25Q64_SectorErase(uint32_t sector); //W25Q64擦除一个扇区    

void AX_W25Q64_ChipErase(void); //W25Q64擦除整个芯片

void AX_W25Q64_Read(uint8_t *pbuf, uint32_t addr, uint16_t num); //W25Q64指定地址读出指定长度的数据

void AX_W25Q64_Write(uint8_t *pbuf, uint32_t addr, uint16_t num); //W25Q64指定地址写入指定长度的数据

void AX_W25Q64_PageWrite(uint8_t *pbuf, uint32_t addr, uint16_t num); //W25Q64页写操作

uint32_t AX_W25Q64_ReadID(void); //W25Q64读取芯片ID

void AX_W25Q64_WakeUp(void); //W25Q64唤醒操作

void AX_W25Q64_PowerDown(void); //W25Q64掉电操作

软件说明

本例程FLASH初始化成功后,首先进行读取ID操作,然后进行数据读写测试,并显示读写数据进行对比。最后进行掉电唤醒测试,掉电500ms后唤醒芯片。在FLASH不操作状态下,掉电处理可降低系统功耗。主程序代码如下。

int main(void)

{

    uint8_t str[] = { "X-CTR100 FLASH TEST" };

    uint8_t str1[sizeof(str)];

    uint32_t id = 0;

    uint32_t address = 2 * 4096;

 

    /* X-CTR100初始化 */

    AX_Init(115200);

    printf("***X-CTR100 FLASH W25Q64读写例程***\r\n\r\n");

 

    //模块初始化及配置

    AX_W25Q64_Init();

 

    //XAPI测试:读取W25Q64 FLASH ID测试

    printf("*W25Q64 读取FLASH ID测试\r\n");

    id = AX_W25Q64_ReadID();

    printf("*W25Q64 FLASH ID:0x%X\r\n\r\n", id);

 

 

    //X-API测试:读写W25Q64测试    

    printf("*W25Q64读写测试\r\n");

    //擦除将要写入的FLASH扇区

    AX_W25Q64_SectorErase(address);

    //写数据

    AX_W25Q64_Write(str, address, sizeof(str));

    printf("*地址 0x%X 写入数据:%s\r\n", address, str);

    //读数据

    AX_W25Q64_Read(str1, address, sizeof(str));

    printf("*地址 0x%X 读出数据:%s\r\n", address, str1);

 

    //X-API测试:掉电唤醒测试

    AX_W25Q64_PowerDown();

    AX_Delayms(500);

    AX_W25Q64_WakeUp();

 

    while (1)

    {

        AX_Delayms(500);

        AX_LEDG_Toggle();

    }

}

实现效果

上电复位后,运行效果如下图所示。

    

玩转X-CTR100 l STM32F4 l W25Q64 SPI串行FLASH存储的更多相关文章

  1. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  2. 第25章 串行FLASH文件系统FatFs—零死角玩转STM32-F429系列

    第25章     串行FLASH文件系统FatFs 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.c ...

  3. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  4. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  5. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  6. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  7. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  8. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  9. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

随机推荐

  1. 【分布式计算】30分钟概览Spark分布式计算引擎

    本文主要帮助初学者快速了解Spark,不会面面俱到,但核心一定点到. Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Dat ...

  2. [JavaScript] - form表单转json的插件

    jquery.serializejson.js 之前好像记录过,做项目又用到了再记下 在页面中引入js后就可以使用了 示例: //点击设置微信信息的form表单提交按钮后,执行wxConfig的con ...

  3. 【eclipse】阿里巴巴代码检测插件在线安装

    https://p3c.alibaba.com/plugin/eclipse/update

  4. 关于xargs cp中,如何确定拷贝的源和目的 (copied)

    Seker: find . -name "*" |xargs cp ???? 这里 xargs cp 怎么区分cp源 和 cp目的 例如:想把 查询到的文件 都copy到/home ...

  5. Linux——软件包简单学习笔记

    Linux中的是那种软件包:  (这里学习是基于redHat的Cent-OS) 1: 二进制软件包管理(RPM.YUM) 2:源代码包安装 3: 脚本安装(Shell或Java脚本) 一: 二进制软件 ...

  6. Goroutines和Channels(一)

    Go语言中的并发程序可以用两种手段来实现.本章讲解goroutine和channel,其支持“顺序通信进程”(communicating sequential processes)或被简称为CSP.C ...

  7. Jmeter测试API接口,用Jmeter自动化之检查DB数据

    如上: 注册接口,会新增数据,要怎么自动化检查DB中生成的数据呢? 很简单,只需要以下几个配置元件 JSON截取器或者正则表达式截取器:目的在于取出返回消息体中的数据aa JDBC后置处理器:目的在于 ...

  8. 使用 data.table 包操作数据

    在第一节中,我们回顾了许多用于操作数据框的内置函数.然后,了解了 sqldf 扩展包,它使得简单的数据查询和统计变得更简便.然而,两种方法都有各自的局限性.使用内置函数可能既繁琐又缓慢,而相对于各式各 ...

  9. java开源类库pinyin4j的使用

    最近CMS系统为了增加查询的匹配率,需要增加拼音检索字段,在网上找到了pinyin4j的java开源类库,提供中文转汉语拼音(并且支持多音字), 呵呵,看了看他的demo,决定就用它了,因为我在实际使 ...

  10. Android蓝牙通信功能开发

    1. 概述 Bluetooth 是几乎现在每部手机标准配备的功能,多用于耳机 mic 等设备与手机的连接,除此之外,还可以多部手机之间建立 bluetooth 通信,本文就通过 SDK 中带的一个聊天 ...