玩转X-CTR100 l STM32F4 l W25Q64 SPI串行FLASH存储

我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 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存储的更多相关文章
- 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
第24章 SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- 第25章 串行FLASH文件系统FatFs—零死角玩转STM32-F429系列
第25章 串行FLASH文件系统FatFs 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.c ...
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...
- 玩转X-CTR100 l STM32F4 l 舵机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器控制步进电机 ...
- 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器基础板载资源 ...
- 玩转X-CTR100 l STM32F4 l PS2无线手柄
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...
随机推荐
- Android Studio Design界面不显示layout控件的解决方法
发现更改了 layout里面的xml文件后 切换到design后,没有显示控件 解决方法 解决办法: 在 res/values/styles.xml 文件中 将原有的 前面添加 Base. The ...
- vuejs全局api概念
什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在构造 ...
- springmvc的声明式事务管理类型讲解
以方法为单位,进行事务控制:抛出异常,事务回滚. 最小的执行单位为方法.决定执行成败是通过是否抛出异常来判断的,抛出异常即执行失败 中文名 声明式事务 外文名 declarative tran ...
- stm32 iic读取mpu6050失败 改用串口
mpu6050使用iic一直失败.放弃治疗,使用串口... #include "led.h" #include "mpu6050.h" #include &qu ...
- LCA在线算法详解
LCA(最近公共祖先)的求法有多种,这里先介绍第一种:在线算法. 声明一下:下面的内容参考了http://www.cnblogs.com/scau20110726/archive/2013/05/26 ...
- 【转】总结C++中取成员函数地址的几种方法
转自:“http://www.cnblogs.com/nbsofer/p/get_member_function_address_cpp.html” 这里, 我整理了4种C++中取成员函数地址的方法, ...
- js实现滑动拼图验证码
js实现滑动拼图验证码,我这个样式是仿那些大网站做了, 学习用的,只用到前端. 小的个人网站感觉还可以用,大一点的别人用机器一下就破解了. 下面看图示: 样子大概是这样的. 源码在这 百度网盘: ...
- Java注解的使用,类似于C#的Attribute
1.定义注解,代码如下: import java.lang.annotation.*; /** * 定义注解类,用于注解某个类或方法 * * @author Administrator * */ @T ...
- 读CSV文件
/// <summary> /// 读取csv文件 /// </summary> /// <param name="csvPath">strin ...
- LeetCode--070--爬楼梯
problem description: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 ...