Flash基础入门之SPI方式读取外部FLASH抓取时序图
小标 2019-01-24 来源 : 阅读 1790 评论 0

摘要:本文主要向大家介绍了Flash基础入门之SPI方式读取外部FLASH抓取时序图,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了Flash基础入门之SPI方式读取外部FLASH抓取时序图,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

使用STM32的SPI控制器,对外部的W25X16 FLASH(2M字节)芯片进行操作。以下为逻辑分析仪抓取的时序。

         以下是该FLASH芯片的命令表。

1、读取器件ID。

先拉低片选信号CS,再发送命令0XAB,再发送三个字节的dummy。读取第四个字节数据,数据就是device ID。最后拉高CS,结束一次操作。


         以下是发送命令0XAB放大的图。可以看出CLK空闲状态是高电平(CPOL = 1),偶数边沿为采样时刻(CPHA = 1)。


2、读取jedec标准ID

先拉低片选信号CS,再发送命令0X9f,读取三个数据。最后拉高CS,结束一次操作。

第一个数据:生产厂商

第二个数据:存储器类型

第三个数据:容量


3、 写使能

Flash在写数据,擦除,写状态寄存器之前,首先要打开写使能。打开写使能的方法也很简单,发送命令0x06即可。


4、 写数据

拉低片选,发送命令0x02,表示写操作。发送3个字节的地址。因为选用的flash芯片大小为2M,地址范围为0x00_0000 – 0x1f_ffff。所以需要24位表示地址。因此要发送3个字节来表征写入的地址。


         三个地址发送完毕后,就开始发送要写入的数据。


         数据写完毕后,拉高片选即可。


         在写数据完成后,要读取flash芯片的状态寄存器,判断器件状态。

         读取状态寄存器,所用命令为0x05,第二个SPI周期即为读取的状态寄存器值,可以一直读取该状态寄存器的值。


当读到状态寄存器的值为0x00后,表示器件完成写操作。


5、扇区擦除

使用命令0x20对扇区进行擦除。


         擦除是从写入扇区地址开始到扇区结束地址之间的内容擦除。即如果写入擦除的地址是0x00_0010,那么就会将0x00_0010 – 0x00_0FFF(一个扇区大小是4k)之间的内存区域擦除为0xff。


6、块擦除

和扇区擦除一样,只是发的命令为0xd8,擦除的最大大小是64KB。

 

7、芯片擦除

擦除整个芯片,发送命令0xc7。

8、 读数据

FLASH的读数据有三种方式:

 

第一种是普通读方式:

先拉低片选信号CS,再发送命令0X03,发送读取数据的地址,3个字节。后面每个SPI周期,就是读取的数据。

 

         第二种是快速读方式(fast read):

先拉低片选信号CS,再发送命令0X0b,发送读取数据的地址,3个字节。发送一个dummy的SPI周期,后面每个SPI周期,就是读取的数据。


         快速读方式,要等待5个SPI周期后,才开始读取有效信息。而普通读模式下,只需等待4个SPI周期后,就可以读取有效信息了。

   

         第三种是快速双通道读方式(fast read dual output)

拉低片选CS,发送命令0x3b,发送读取数据的地址,3个字节。发送一个dummy的SPI周期,后面每个SPI周期,就是读取的数据。

         从时序图。看出这种读方式下,MOSI和MISO都参与了读数据的传输。所以在这种模式下,一个SPI可以读取两个字节。

                        第一个字节              第二个字节

         MISO    (1D7, 1D5, 1D3, 1D2)    (2D7, 2D5, 2D3, 2D2)

         MOSI        (1D6, 1D4, 1D2, 1D0)    (2D6, 2D4, 2D2, 2D0)

 

         下面通过波形图比较一下三种读取数据方式:

 

普通read读取的波形图。第一个有效数据在第5个SPI处,值为0x69, 第二个有效数据在第6个SPI处,值为0x20。


Fast read读取的波形图。第一个有效数据在第6个SPI处,值为0x69,第二个有效数据在第7个SPI处,值为0x20。


Fast read dual读取的波形图。MOSI和MISO同时参与数据的读取。第一个有效数据和第二个有效数据在第6个SPI处。

MISO   0 1 1 0  0 1 0 0         ( 1D7, 1D5, 1D3, 1D1)    ( 2D7, 2D5, 2D3, 2D1) 

         MOSI   1 0 0 1  0 0 0 0   (1D6, 1D4, 1D2, 1D0)  (2D6, 2D4, 2D2, 2D0)

         组合得到第一个数据   01 10 10 01  0x69

组合得到第二个数据   00 10 00 00  0x20

     

       从抓取的波形图,来学习SPI驱动外部的FLASH,是可以很直观的看到数据传输的过程,从而对SPI协议及外部的FLASH驱动有更深的了解。

以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程