加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SPI方式读取外部FLASH抓取时序图

发布时间:2020-12-15 07:16:25 所属栏目:百科 来源:网络整理
导读:???????? 使用 STM32 的 SPI 控制器,对外部的 W25X16 FLASH ( 2M 字节)芯片进行操作。以下为逻辑分析仪抓取的时序。 ???????? 以下是该 FLASH 芯片的命令表。 ??? ? 1、 ? ????????1、 读取器件 ID 。 先拉低片选信号 CS ,再发送命令 0XAB ,再发送三个

???????? 使用STM32SPI控制器,对外部的W25X16 FLASH2M字节)芯片进行操作。以下为逻辑分析仪抓取的时序。

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

???

?

1、? ????????1、读取器件ID

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

???

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

???

?

2、? ????????2、读取jedec标准ID

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

第一个数据:生产厂商

第二个数据:存储器类型

第三个数据:容量

???

?

3、?????????3、 写使能

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

???

?

4、?????????4、 写数据

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

??

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

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

???

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

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

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

???

?

5、? ????????5、扇区擦除

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

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

???

6、? ????????

????????????????6、块擦除

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

?

7、? ????????7、芯片擦除

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

?

8、?????????8、 读数据

FLASH的读数据有三种方式:

?

第一种是普通读方式:

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

?

???

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

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

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

???

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

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

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

?????????????????? ???? 第一个字节?????? ????? ?第二个字节

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

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

?

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

?

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

????

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

?????

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

MISO?? 0 1 1 0? 0 1 0 0???????? ( 1D7,1D1)??? ( 2D7,2D1)?

???????? MOSI?? 1 0 0 1? 0 0 0 0?? 1D6,1D0? 2D6,2D0

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

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

?????

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



? ? 可以下载pdf,查看清晰波形图片信息。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读