基于SPI的flash读写操作

1、实验目标

        使用页写或连续写操作向Flash芯片写入数据,再使用数据读操作读取之前写入数据,将读取的数据使用串口传回PC机,使用串口助手传回数据并与之前写入数据比较,判断正误。

注意:在向Flash芯片写入数据之前,先要对芯片执行全擦除操作。

2、操作时序

2.1 读操作时序

        结合数据手册来详细说明一下SPI-Flash芯片数据读操作的相关内容。数据读操作,操作指令为8’b0000_0011(03h),具体见图

        要执行数据读指令,首先拉低片选信号选中Flash芯片,随后写入数据读(READ)指令,紧跟指令写入3字节的数据读取首地址,指令和地址会在串行时钟上升沿被芯片锁存。随后存储地址对应存储单元中的数据在串行时钟下降沿通过串行数据总线输出。

        数据读取首地址可以为芯片中的任何一个有效地址,使用数据读(READ)指令可以对芯片内数据连续读取,当首地址数据读取完成,会自动对首地址的下一个地址进行数据读取。若最高位地址内数据读取完成,会自动跳转到芯片首地址继续进行数据读取,只有再次拉高片选信号,才能停止数据读操作,否者会对芯片执行无线循环读操作 。

        数据读操作的详细介绍及时序图,具体见图 

         数据读操作指令写入之前无需先写入写使能指令,且执行数据读操作过程中,片选信号拉低后和拉高前无需做规定时间等待,上图中的时序图就是完整的数据读操作时序。

2.2 写操作时序

        写操作分为页写操作和

2.2.1 页写操作时序

实验目标:

        使用页写指令,向Flash中写入N字节数据,N为整数,且大于0小于等于256。在本本实验中我们向Flash芯片中写入0-99,共100字节数据,数据初始地址为24’h00_04_25。

        注意:在向Flash芯片写入数据之前,先要对芯片执行全擦除操作。

        页写(Page Program)操作,简称PP,操作指令为8’b0000_0010(02h),具体见图:

        由数据手册中页写操作可知,页写指令是根据写入数据将存储单元中的“1”置为“0”,实现数据的写入。在写入页写指令之前,需要先写入写使能(WREN)指令,将芯片设置为写使能锁存(WEL)状态;随后要拉低片选信号,写入页写指令、扇区地址、页地址、字节地址,紧跟地址写入要存储在Flash的字节数据, 在指令、地址以及数据写入过程中,片选信号始终保持低电平,待指令、地址、数据被芯片锁存后,将片选信号拉高;片选信号拉高后,等待一个完整的页写周期(tPP),才能完成Flash芯片的页写操作。

        Flash芯片中一页最多可以存储256字节数据,这也表示页写操作一次最多向Flash芯片写入256字节数据。页写指令写入后,随即写入3字节数据写入首地址,首地址为扇区地址、页地址、字节地址组成,扇区地址与页地址是确定数据写入Flash的特定扇区的特定页,字节地址位再该页数据写入的字 节首地址。

        当数据写入的字节首地址为该页的首地址,及字节首地址为8’b0000_0000,数据写入个数为0-256字节,数据可以被正确写入Flash芯片;

        当数据写入的字节首地址不是该页的首地址,及字节首地址不是8’b0000_0000,数据写入个数为0-256字节,若数据写入个数少于字节首地址地址到末地址之间的存储单元个数,数据可以被正确写入Flash芯片;若数据写入个数多于字节首地址地址到末地址之间的存储单元个数,等于字节首地址地址到末地址之间的存储单元个数的数据可以被正确写入Flash芯片,超出的那部分数据,会以8’b0000_0000为字节首地址顺序写入本页,覆盖改地

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super_WY_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值