玩转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读写数据测试,掉电唤醒测试。 硬件说明硬件资源:
硬件连接: X-CTR100设计有SPI FLASH存储芯片和TF卡接口,共用SPI1资源,可通过片选信号进行分时工作。 软件生态X-SOFT软件生态,X-API文件如下。 ax_w25q64.c——X-CTR100 板载W25Q64 FLASH存储源文件 ax_w25q64.h——X-CTR100 板载W25Q64 FLASH存储头文件 操作函数如下:
软件说明本例程FLASH初始化成功后,首先进行读取ID操作,然后进行数据读写测试,并显示读写数据进行对比。最后进行掉电唤醒测试,掉电500ms后唤醒芯片。在FLASH不操作状态下,掉电处理可降低系统功耗。主程序代码如下。
实现效果上电复位后,运行效果如下图所示。 ???? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 关于两个Fragment布局报错Error inflating class fragment的
- 实战之使用正则表达式截取热点数据,并封装成以某个热点为单
- c# – 如何访问Windows 8.1存储区内Hubsection Datatemplat
- 在巨大的XML文件中组合值
- 正则表达式 – 正则表达式a或b
- bitbake错误:sqlite3.OperationalError: unable to open d
- Open Flash Chart使用笔记
- ruby-on-rails – 如何在rails 3.x迁移中更改新列的位置
- 有没有办法优化C的doxygen?
- c# – 使用LINQ更新IEnumerable对象的简单方法