一.需求说明
fpga首先全擦除flash芯片,然后往flash芯片中写入一页数据,再接着读取这一页数据。
二.硬件介绍
1.flash资源介绍

  • M25P16芯片是flash芯片,容量是16Mbit。
  • 16Mbit=16×1024×1024bit=2×1024×1024byte=2,097,152 bytes 。
  • 总共有32个扇区,每个扇区有512×1024bit=65536byte。
  • 每个扇区有256页,每页有256个字节。
  • 每个地址占三个字节,第一个字节表示扇区,第二个字节表示页数,第三个字节表示页内地址。

    2.命令介绍
    注:在页编程(PP),扇区擦除(SE),全擦除(BE),写入状态寄存器(WRSR)这些操作之前必须先写入写使能指令(WREN)。

    三.时序说明
    1.两种SPI模式
    模式1:CPOL=0, CPHA=0。时钟信号在空闲状态是低电平,fpga在偶数延(下降沿)改变数据,flash在奇数延(上升沿)采集数据。
    模式2:CPOL=1, CPHA=1 。时钟信号在空闲状态是高电平,fpga在奇数延(下降沿改变数据),flash在偶数延(上升沿采集数据)。


    2.时钟频率
    fC是指令操作的频率,fR是读数据的频率。fC的最大值是50M,fR的最大值是20M,可以取12.5M,这样能满足所有的操作。

    3.时序延时
    下图1处,表示当S使能信号拉低之后,与第一个上升沿之间的延时为tSLCH,大于5ns
    下图2处,表示当指令最后一位的上升沿到S使能信号拉高之间的延时为tCHSH,大于5ns
    下图3处,表示当指令写完成之后,S使能信号拉高维持的时间tSHSL,大于100ns,这样才能保证写入的指令让flash有足够的时间去执行。

    发送完指令之后,需要将片选信号拉高,让flash有执行相关操作。比如发送完写使能之后,需要将片选信号拉高保持一段时间。发送全擦除指令之后,需要将片选信号拉高并保持40秒,flash才能把所有字节数据置为1(擦除),时间值如下图所示。

    4.写使能时序

    5.全擦除时序


    6.扇区擦除时序
    写入扇区擦除指令之后紧接着写入扇区的三个字节的地址。只要这个地址在这个扇区内有效即可,不用关系具体地址。

    7.(页编程)页写数据时序

    8.连续写时序
    连续写时序和页写时序类似,区别只是数据的个数。如果只写一个字节,那么data就是一个字节,写完之后把片选信号拉高即可。也可以写多个数据,想要停止写,把片选拉高就行。
    9.连续读时序
    . 读数据操作不需要发送写使能指令,且执行数据读操作过程中,片选信号拉低后和拉高前无需做规定时间等待,发送读指令+三字节地址之后,就可以在miso端口接收数据了。下图的时序图就是完整的数据普通读操作时序(对应还有一种快读模块)。
    . 数据读取首地址可以为芯片中的任何一个有效地址,使用数据读(READ)指令可以对芯片内数据连续读取,当首地址数据读取完成,会自动对首地址的下一个地址进行数据读取。若最高位地址内数据读取完成,会自动跳转到芯片首地址继续进行数据读取,只有再次拉高片选信号,才能停止数据读操作,否者会对芯片执行无线循环读操作。

fpga使用spi协议擦除读写flash芯片相关推荐

  1. STM32学习之SPI协议(读写FLASH)

    关于STM32学习分享 第八章 SPI协议(读写FLASH) 文章目录 关于STM32学习分享 前言 二.代码 1.spi_flash.c 2.spi_flash.h 3.main.c 总结 前言 开 ...

  2. 【FPGA】SPI协议详解及对flash读写操作

    FPGA基于SPI实现对flash读写操作 概括 一.SPI协议.flash讲解 1.SPI协议 2.flash (1)WREN (2)RDID (3)WRSR (4)READ (5)PP (6)SE ...

  3. stm32中spi可以随便接吗_STM32的SPI模式读写FLASH芯片全面讲解

    例程完整代码: SPI协议简介 SPI协议,即串行外围设备接口,是一种告诉全双工的通信总线,它被广泛地使用在ADC,LCD等设备与MCU间通信的场合. SPI信号线 SPI包含4条总线,分别为SS,S ...

  4. STM32的SPI模式读写FLASH芯片全面讲解

    SPI协议简介 SPI协议,即串行外围设备接口,是一种告诉全双工的通信总线,它被广泛地使用在ADC,LCD等设备与MCU间通信的场合. SPI信号线 SPI包含4条总线,分别为SS,SCK,MOSI, ...

  5. 【FPGA】SPI协议

    1.SPI简介 SPI(Serial Perripheral Interface, 串行外围设备接口)是 Motorola 公司推出的一种同步串行接口技术.SPI 总线在物理上是通过接在外围设备微控制 ...

  6. arduino使用SPIFlash库 读写Flash芯片

    SPIFlash库 – SPI华邦电子闪存Flash芯片arduino库 GITHUB 工程地址:SPIFlash 该库是用于华邦串行闪存芯片的库.目前的形式支持识别闪存芯片和它的各种功能:自动地址分 ...

  7. FPGA实现SPI协议

    SPI接口 1 简单的设计模块1 首先简单的想一下这个模块应该怎么设计. 拿到这个小题目你的思路是怎么样的呢?很多时候靠经验设计,并没有一个顺序的思路. 六步法: 第一步:输入输出波形的画出 第二步: ...

  8. STM32 SPI通信(读写flash)

    SPI通信 四线制 MISO:主设备数据输入,从设备数据输出 MOSI:主设备数据输出,从设备数据输入 SCLK:时钟信号 CS:片选引脚(低电平有效) 时序图 读写程序 flash读写函数: u8 ...

  9. SPI协议的Flash

    简介 不是所有的flash都是spi协议,本节学习用SPI协议传输数据的flash SPI是摩托罗拉公司提出的通讯协议,和IIC一样,也是板级的协议,但是速度要比IIC快得多. SPI是全双工通信 S ...

最新文章

  1. Udacity机器人软件工程师课程笔记(二十九) - 全卷积网络(FCN)
  2. Android期末项目-校园论坛
  3. R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理、比较误分类率指标
  4. IEEE技术领域大奖公布:ML先驱上榜,大陆唯一获奖学者来自清华
  5. 独家 | AutoFlip:智能化视频剪裁的开源框架(附链接)
  6. 【Java 虚拟机原理】线程栈 | 栈帧 | 局部变量表 | 反汇编字节码文件 | Java 虚拟机指令手册 | 程序计数器
  7. DedeCms模板防盗的方法
  8. Alluxio 助力 Kubernetes,加速云端深度学习
  9. 我的.gitignore下配置。存在这里一下。日后有空研究研究!
  10. react列表元素hover
  11. VMware安装虚拟机并使用NAT模式连接网络
  12. 双边滤波器—— Matlab实现
  13. 如何成为一名出色的次世代游戏美术师?
  14. Python自动运维系列:每天凌晨定时执行特定任务
  15. python, numpy
  16. 《工程学导论》读书笔记-2
  17. OverFeat 详解
  18. Android前景与背景
  19. 三维管型ybc预览以及动态成型仿真控件
  20. Firewalld防火墙IP伪装与端口转发

热门文章

  1. 组态王下拉式组合框使用教程_组态王下拉列表框问题
  2. Linux C基础02——进制转换和c语言简单介绍
  3. 杰理之AC104如何解析FAT文件系统中的dir文件【篇】
  4. 每天五个面试题,保温杯里泡枸杞!!!
  5. 2015年ps计算机试题,2015年3月全国计算机一级考试PS模拟试题及答案(三)
  6. 连分式插值函数-Cpp
  7. 调研发现:外企最关注员工心理健康,私企对财务健康投资最大,国企更关注员工职业和社会健康 | 美通社头条...
  8. error: invalid preprocessing directive 问题解决
  9. 匿名科创--匿名UWB超宽带定位模块--2、使用介绍
  10. B bit 比特 字节 单位换算 bps Bps Mbps MBps 网络带宽bps Bps