2 FPGA实现SPI接口--SPI接口芯片的实际使用

目录
1、芯片
1.1、概述
1.2、引脚
1.3、SPI模式
1.4、存储架构
1.5、指令表
1.6、其他
2、指令测试
2.1、页写(PAGE )
2.1.1、时序
2.1.2、代码
2.1.3、及仿真结果
2.1.4、上板验证
2.2、读数据(READ DATA BYTES)
2.2.1、时序
2.2.2、代码
2.2.3、及仿真结果
2.2.4、上板验证
2.3、扇区擦除( Erase)
2.3.1、时序
【2FPGA实现SPI接口--SPI接口芯片的实际使用】2.3.2、代码
2.3.3、及仿真结果
2.3.4、上板验证
2.4、全擦除(Bulk Erase)
2.4.1、时序
2.4.2、代码
2.4.3、及仿真结果
2.4.4、上板验证
3、其他
1、芯片
在上篇文章,简要介绍了SPI协议,编写了SPI协议的FPGA驱动,但是在验证环节,仅仅验证了发送时序,而没有与从机进行通信验证,未免测试不够周全 。本文通过对FLASH芯片的仿真模型进行一系列测试,从而验证SPI驱动的代码的正确性,同时对进行一个了解 。
1.1、概述
是一款带有先进写保护机制和高速SPI总线访问的2MB串行Flash存储器,该存储器主要特点:
该款器件特别适用于一体化打印机、PC主板、机顶盒、CD唱机和DVD视盘机、数字电视、数码相机、图形卡和平面显示器等各种应用的代码和数据存储需求 。
1.2、引脚
其引脚描述如下:
1.3、SPI模式
根据SPI时钟信号的高低电平自适应的支持SPI通讯模式的模式0和模式3:
1.4、存储架构
一共2MB字节的存储空间,分32个扇区(),每个扇区256页(PAGE),每页256字节(BYTE) 。每个字节的的存储地址由扇区地址(8bit)+页地址(8bit)+字节地址(8bit)构成,地址表如下:
1.5、指令表
支持页写入,全擦除,扇区擦除,读取数据等一系列指令,具体指令表如下:
1.6、其他
需要注意的是支持的频率如下,所以在我们的仿真实验中选择12.5M这个频率 。
此外,页写入,全擦除,扇区擦除等指令在发出后,仍需要一定的时间才能真正执行完,各个指令所需的时间如下:

2  FPGA实现SPI接口--SPI接口芯片的实际使用

文章插图
最后需要注意的一点是,在两个指令之间需要间隔一定的时间(比如发送全擦除指令前需要发送写使能指令,在这两个指令之间就需要间隔一定的时间),具体时间如下:
2、指令测试
在这一章针对集中常用的指令进行代码编写及仿真测试 。
2.1、页写(PAGE ) 2.1.1、时序
页写(Page )操作,简称 PP,操作指令为 8’(02h) 。页写指令是根据写入数据将存储单元中的“1” 置为“0”,实现数据的写入 。在写入页写指令之前,需要先写入写使能(WREN)指令,将芯片设置为写使能锁存(WEL)状态;随后要拉低片选信号,写入页写指令、扇区地址、页 地址、字节地址,紧跟地址写入要存储在 Flash 的字节数据,在指令、地址以及数据写入过程中,片选信号始终保持低电平,待指令、地址、数据被芯片锁存后,将片选信号高;片选信号拉高后,等待一个完整的页写周期(tPP),才能完成 Flash 芯片的页写操作 。
Flash 芯片中一页最多可以存储 256 字节数据,这也表示页写操作一次最多向 Flash 芯片写入 256 字节数据 。如字节首地址为 8’,字节首地址地址到末地址之间的存储单元个数为 241 个,即本页最多可写入 241 字节数据,若写入数据为 200 个字节,数据可以被正确写入; 若写入数据为 256 个字节,前 241 个字节的数据可以正确写入 Flash 芯片,而超出的 15 个字节就以本页的首地址 8’ 为数据写入首地址顺序写入,覆盖本页原有的前 15 个字节的数据 。