Menu Close

SPI 通讯协议(3)SPI FLASH 介绍

 

SPI  协议中, 其中一种应用就是驱动SPI FLASH , 当然, spi 协议也是可以用于其他设备通讯的, 比如video switch, 无线模块, lcd 显示屏等等。 在嵌入式系统中, 因为 spi flash 使用pin 比较少 (通常4pin ),速率又比较高 (很多spi flash 单线能达到133M bit/s),容量(相对于eerpom) 也比较大,所以经常使用spi flash 作为程序存储使用。更多的内容请登录: ica123.com

参考文章:

SPI 通讯协议 及 SPI 相关工程 详解

在参考文章最后列出几种常用的spi flash 手册。以及相关的工程代码(zip)

 

SPI FLASH 有很多生产厂家, 向 micron, winbond, Macronix,Microchip,ST 等等很多厂家。这些厂家的SPI FLASH 各有不同, 但也有很多相同的地方。基本上都是通过SPI  发送相应的命令,发送数据, 或者是发送相应的命令 ,接收数据。由于各个厂家生产的芯片容量,性能,电压标准的不同,所有会有不同的spi 命令。 总结下来,有一些标准的命令, 各个生产厂家都是共同遵循的。

通用命令

flash command

 

    命令格式: 05,  8clock 。。。    当对芯片有相关的写操作, 擦除,编程等等指令, 都需要使用这个指令来验证是否写入成功。下图为 status 寄存器相关资料

%title插图%num

厂家的spi flash 指令 不止以上这些, 还有其他的指令,但那些指令并不是经常使用。 各个厂家的指令代码也不尽相同。有些甚至是不支持的。 但只使用以上这些通用指令,完全可以对各个厂家的flash 进行操作。

1)编程指令 (02h)

%title插图%num

 

2) 4K扇区擦除(20h)

%title插图%num

3)块擦除(d8h)

%title插图%num

4)全片擦除(c7h)

%title插图%num

5)读厂家ID(9fh)

%title插图%num

6) 读数据指令(03h)

%title插图%num

7)写有效指令(06h)
%title插图%num

8)写失效指令(04h)

%title插图%num

9) 读状态寄存器(05h)
%title插图%num

用户常用的flash操作

作为用户(fpga ,或者软件开发者),通常的操作有 :

1)全片擦除

2)扇区擦除,只有当前扇区被擦除后, 才能进行编程。

3)地址编程(写数据到flash)

4)读数据 (从某个地址开始, 连续读出相应的flash 中的数据)

5)读厂家ID (确定是那个厂家的芯片, 确定芯片容量,性能, 电压等等)

 

SPI flash 操作流程

全片擦除

 

注: 除了第4条, 其他每一条都是完整的指令,即: 开始有 片选有效, 结束后设置 片选无效。

扇区擦除

 

注: 除了第4条, 其他每一条都是完整的指令,即: 开始有 片选有效, 结束后设置 片选无效。

地址编程(写数据到flash)

 

注: 除了第4条, 其他每一条都是完整的指令,即: 开始有 片选有效, 结束后设置 片选无效。

 

读数据 (从某个地址开始, 连续读出相应的flash 中的数据)

 

 

读厂家ID (确定是那个厂家的芯片, 确定芯片容量,性能, 电压等等)

1)发送 : 9f  + 8clock + 8clock + 8clock + 8clock  。。。;    读取当前所使用的芯片的厂家ID ,读取 3 bytes  —  nbyes。 一般不会小于 3 bytes。

 

 

 

Posted in FPGA, FPGA, IP开发, RISC-V, RISC-V IPcore设计, RISC-V 教案, 元器件, 存储器, 教材与教案, 文章, 资料区

发表评论

相关链接