基于FPGA的SPI_FLASH程序设计

SPI_FLASH简介

        

spi_flash是一种通用存储器,也称为SPI NOR Flash或SPI Flash。它使用SPI(Serial Peripheral Interface)接口进行通信,可以通过串行方式读写数据。spi_flash的特点是工作电压低,体积小,读写速度快,并且可擦写次数很大。因此,它被广泛应用于嵌入式系统中,用于存储程序代码、配置信息和数据。

spi_flash的存储单元由位线和字线组成,可以以字节为单位进行读写操作。它通常具有多个扇区,每个扇区又包含许多块。spi_flash的读操作是通过发送地址和读指令来获取数据,写操作是通过发送地址、写指令和数据来存储数据。

spi_flash的容量可以从几十KB到几GB不等。它可以通过软件进行编程,并且支持批量擦除和写入操作。此外,spi_flash还具有保护数据的功能,可以设置写保护位来防止误操作。

spi_flash的接口标准化,可以与许多微控制器和处理器进行连接。它可用于存储启动代码、操作系统、驱动程序和各种应用程序。在嵌入式系统中,spi_flash通常用作存储设备的主要存储介质,提供快速、可靠的数据存储和读取功能。

SPI_FLASH的通信协议

        它支持 Standard SPI、 Dual SPI Quad SPI 三种 SPI 协议通信方 式,最大传输数据速率可达
50MB/S

SPI_FLASH的存储容量 

 我们这里以W25Q128FV芯片为例子进行介绍,如下图所示。

这款芯片的总容量是128Mbit,这个存储阵列被划分为256个BLOCK(64KB),每一个BLOCK块划分为16个Sector(4KB) ,每一个Sector是包含16个page(256个字节)。

SPI_FLASH的指令介绍

 WR_EN指令介绍

WRENWriteEnable):使能指令(06h),写使能指令可将 Flash 芯片设置为写使能锁存(WEL)状态; 在每一次页写操作(PP)、扇区擦除(SE)、全擦除(BE)和写状态寄存器(WRSR)操作之前,都需要先进行写使 能指令写入操作。操作时序为先拉低片选信号,写入写使能指令,在指令写入过程中,片选信号始终保持 低电平,指令写入完成后,将片选信号拉高。

 READ STATUS REGISTER指令介绍

读取状态寄存器指令( 05h ),这条指令的作用就是指令允许读取状态 寄存器。状态寄存器可以在任何时候读取,即使在编程、擦除或写入状态寄存器循环进行操作时也是可以的。每次读取BUSY状态值来判断芯片是否处于工作状态还是空闲状态,从而更好的执行后续命令操作。

 

Page program指令介绍  

页编辑指令( 02h ),可以理解成写数据指令,当执行页编辑指令时就可以往对应的扇区对应的页中写入数据,一次性最多写入 256 个字节数据。 注意一点,当整页写数据时你可以不必写满 256 个字节,小于 256 个字节也是可以的,但是不能超过 256 个字节数据,因为超过 256 个字节,多余的数据就会返回这一页的开头重新写入,这样就会覆盖之前已经写入的数据

 

 

 READ DATA指令介绍

 

读取数据指令( 03h ),当 FLASH 中被写入数据后我们可以使用 ReadData 指令将 数据读取出来。操作过程就是发送命令字+地址,然后flash芯片就会读取数据。

 

 BLOCK ERASE(52h)指令介绍

 

扇区擦除指令( 52h ),扇区擦除指令是将 Flash 芯片中的被选中扇区的所有存储单 元设置为全 1 ,在 Flash 芯片写入扇区擦出指令之前,需要先写入写使能 (WREN) 指令,将芯片设置为写使 能锁存(WEL) 状态;随后要拉低片选信号,写入扇区擦除指令、扇区地址、页地址和字节地址,在指令、 地址写入过程中,片选信号始终保持低电平,待指令、地址被芯片锁存后,将片选信号拉高;扇区擦除指 令、地址被锁存并执行后,需要等待一个完整的扇区擦除周期(tSE) ,才能完成 Flash 芯片的扇区擦除操 作。

 

 备注:擦除命令还有其他几种,这里不再介绍。

SPI_FLASH指令如何操作 

 前面介绍的这些指令就是实际操作spi_flash时要用到的指令,具体如何操作呢?

 对spi_flash操作主要就是分为2个部分:写操作和读操作。

写操作部分

  1. 对空白的地址进行写操作

      第一步:执行写使能命令

       第二步:执行写命令

      第三步:执行读状态寄存器命令(判断flash芯片是否处于空闲状态)  如果读取的状态寄存器为空闲本次写就结束;如果读取状态寄存器为非空闲,继续发送本条命令,直达读取的状态寄存器为空闲 为止。

      2.对写过数据的地址重新进行写操作

第一步:执行写使能命令

第二步:执行擦除命令

第三步:执行读状态寄存器命令(判断flash芯片是否处于空闲状态)  如果读取的状态寄存器为空闲本次写就结束;如果读取状态寄存器为非空闲,继续发送本条命令,直达读取的状态寄存器为空闲 为止。

第四步:执行写使能命令

第五步:执行写命令

 第六步:执行读状态寄存器命令(判断flash芯片是否处于空闲状态)  如果读取的状态寄存器为空闲本次写就结束;如果读取状态寄存器为非空闲,继续发送本条命令,直达读取的状态寄存器为空闲 为止。

 读操作部分

         执行读命令。

系统程序框架设计

 

 本系统通过串口下发相关指令,实时的对SPI_FALSH芯片进行读写操作,从而实现简单的人机交互功能,使用者操作起来更加直观和便利。

上板 实验结果

 首先通过串口下发写操作对spi_flash写入256个递增数据,然后下发回读命令,从spi_flash芯片中将写入的数据读出,最后通过串口发送回传到PC端的串口助手进行显示。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【单片机家电产品学习记录--红外线】

单片机家电产品学习记录–红外线 红外手势驱动电路,(手势控制的LED灯) 原理 通过红外线对管,IC搭建的电路,实现灯模式转换。 手势控制灯模式转换,详细说明 转载 1《三色调光LED台灯电路》&#xff0c…

矩阵空间秩1矩阵小世界图

文章目录 1. 矩阵空间2. 微分方程3. 秩为1的矩阵4. 图 1. 矩阵空间 我们以3X3的矩阵空间 M 为例来说明相关情况。目前矩阵空间M中只关心两类计算,矩阵加法和矩阵数乘。 对称矩阵-子空间-有6个3X3的对称矩阵,所以为6维矩阵空间上三角矩阵-子空间-有6个3…

【Turtle】海龟先生

什么是编程 计算机只懂0和1这样的语言,可是我们不懂,当我们希望 计算要能帮我们做事情的时候,该怎么办呢? 我们需要一种更简便的方法告诉计算机要做什么,所以人类发明了编程语言 利用计算机编程语言,我们…

硬件了解 笔记

motherboard的高低端区别在哪里? 核心:从单核变成双核,多核(几核就是几个打工人) 多线程:6核本来对应6个线程,但是多线程就是说6核对应12个线程 频率 主频:平时打工的速度 睿频&…

iNeuOS工业互联网操作系统,“低代码”表单开发应用过程(一)

iNeuOS工业互联网操作系统,“低代码”表单开发应用过程(一) 目 录 1. 概述... 2 2. “低代码”表单开发应用过程... 2 1. 概述 iNeuOS工业互联网操作系统“表单设计”功能经过升级后,能够适用于更多应用场景&…

Altair® FluxMotor® 电机拓扑探索和多物理场优化

Altair FluxMotor 电机拓扑探索和多物理场优化 FluxMotor 致力于解决电机的整体设计问题。该软件工具可帮助工程师加快电机设计速度,在考虑多物理场约束条件的同时快速探究各种参数配置,并在几分钟内选出完善的可能。 FluxMotor 具有简单直观的使用界面…

美摄科技AI智能图像矫正解决方案

图像已经成为了企业传播信息、展示产品的重要媒介,在日常拍摄过程中,由于摄影技巧的限制和拍摄环境的复杂多变,许多企业面临着图像内容倾斜、构图效果不佳等挑战,这无疑给企业的形象展示和信息传递带来了不小的困扰。 美摄科技深…

索引下推(Index Condition Pushdown,简称 ICP)

Mysql可以分为Server层和存储引擎层 所以,最终进行I/O的是存储引擎对文件系统进行I/O操作 索引下推(Index Condition Pushdown,简称 ICP) 对应InnoDB,索引下推适用于非聚簇索引(二级索引)。 …

数据结构进阶篇 之【选择排序】详细讲解(选择排序,堆排序)

民以食为天,我以乐为先 嘴上来的嘘寒问暖,不如直接打笔巨款 一、选择排序 1.直接选择排序 SelectSort 1.1 基本思想 1.2 实现原理 1.3 代码实现 1.4 直接选择排序的特性总结 2.堆排序 HeapSort 跳转链接:数据结构 之 堆的应用 二、完…

单片机中的RAM vs ROM

其实,单片机就是个小计算机。大计算机少不了的数据存储系统,单片机一样有,而且往往和CPU集成在一起,显得更加小巧灵活。 直到90年代初,国内容易得到的单片机是8031:不带存储器的芯片,要想工作&a…

FPGA高端项目:解码索尼IMX327 MIPI相机+图像缩放+视频拼接+HDMI输出,提供开发板+工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理自研HLS图像缩放详解Video Mixer…

Django详细教程(二) - 部门用户管理案例

文章目录 前言一、新建项目二、新建app三、设计表结构四、新建数据库五、新建静态文件六、部门管理1.部门展示2.部门添加3.部门删除4.部门编辑 七、模板继承八、用户管理1.辨析三种方法方法一:原始方法方法二:Form组件(简便)方法三:ModelForm…

Python | Leetcode Python题解之第8题字符串转换整数atoi

题目: 题解: INT_MAX 2 ** 31 - 1 INT_MIN -2 ** 31class Automaton:def __init__(self):self.state startself.sign 1self.ans 0self.table {start: [start, signed, in_number, end],signed: [end, end, in_number, end],in_number: [end, end,…

git源码泄露

Git 源码泄露 开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码。 确定是否存在泄漏 (1&…

C++相关概念和易错语法(2)(引用、内联函数、auto类型)

1.引用和指针的关系 引用在语法层面上不开辟新的空间,是对变量或别名取别名,我们对别名进行的任何操作也会同样作用于变量本身,这和形参有本质的区别,它的功能更像是指针。事实上,引用底层的实现就是指针,…

毅力流体设备现已加入2024年第13届生物发酵展

参展企业介绍 温州毅力流体设备有限公司位于浙江温州,这里海、陆、空交通网发达,地理位置优越。是一家经浙江-其他工商机关注册、依法经营的法人机构。 温州毅力流体设备有限公司所生产产品包括交通运输,船舶救生设备,空气呼吸器,等等,所生产…

JavaScript中什么叫深拷贝?

在 JavaScript 中,深拷贝指的是创建一个新的对象,这个新的对象与原始对象完全独立,没有任何共享的属性或者数据,它们不共享同一块内存地址。深拷贝会复制原始对象的所有属性和嵌套对象的所有属性,包括嵌套对象中的属性…

C#,简单,精巧,实用的文件夹时间整理工具FolderTime

点击下载本文软件(5积分): https://download.csdn.net/download/beijinghorn/89071073https://download.csdn.net/download/beijinghorn/89071073 百度网盘(不需积分): https://pan.baidu.com/s/1FwCsSz…

数字乡村创新之路:科技引领农村实现高质量发展

随着信息技术的快速发展,数字乡村建设已成为推动农村高质量发展的重要引擎。数字乡村通过科技创新,不仅改变了传统农业生产方式,也提升了乡村治理水平,为农民带来了更加便捷的生活。本文将从数字乡村的内涵、科技引领农村高质量发…

HCIP综合实验

各个路由器配置 R1 配置IP [R1-GigabitEthernet0/0/0]ip add 192.168.1.2 24 [R1-Serial4/0/0]ip add 15.1.1.1 24 配置缺省 [R1]ip route-static 0.0.0.0 0 15.1.1.2 接受认证 [R1-Serial4/0/1]ppp pap local-user tao password cipher tao 配置隧道地址 [R1-Tunnel…