ZYNQ QSPI控制器

ZYNQ QSPI控制器
线性地址模式只可从Qspi Flash中读数。在配置QSPI BOOT时,BOOT ROM工作在线性地址模式,且访问时钟为ARM接入的晶振时钟,因此在选用晶振时频率不能大于Flash的最高访问时钟频率。
线性地址模式下IO可以配置为单片选4bit接口、双片选8bit并行接口和双片选stacked 接口,单片器件时必须接到QSPI0上。单片QSPI Flash线性地址映射空间为0xFC00_00000xFCFF_FFFF,若采用两片,必须是同一生产厂家,保证协议相同,在配置为双片选8bit并行接口时,两片Flash必须要是同样容量同一厂家器件,保证访问完全同步,寻址空间为0xFC00_00000xFDFF_FFFF。
配置为双片选stacked 接口时,容量可以不同,但必须是相同协议的器件。但第一片器件建议使用128Mb器件,这样不会存在地址空区。线性地址模式的读操作极为简单,在确保TxFIFO和RxFIFO为空的情况下设置qspi.Config_reg[Man_start_en]和qspi.Config_reg[PCS]为0,qspi.LQSPI_CFG.[LQ_MODE]为1即可。
1.2 IO模式
在IO模式下,访问QSPI Flash的命令、地址和数据都根据SPI Flash数据手册的规定由用户软件组织写到FIFO中,控制器负责将其串行化后从总线发出。在IO模式下,可选择自动和手动两种操作模式,手动模式下又有自动片选和手动片选两种模式。自动模式由发数据转为收数据时存在一定局限,因此在实际使用中多为手动模式。
QSPI控制器提供了四个可将数据写到FIFO的TXD寄存器,如下表1所示。
表1 TXD寄存器在这里插入图片描述
这样就提供了丰富的选择,无论是按字写、按字节、按双字节三字节都可以,但需要注意的是在不同寄存器间切换时需要等待FIFO已经为空状态。TxFIFO和RxFIFO使用同一个门时钟,因此对于每一个字节,包括命令和地址,每从TxFIFO取出一个字节,一个自己的数据也会写入到RxFIFO中。
为了从SPI Flash读数据,软件除了写入相关的命令、地址、模式、dummy等外,还必须向TxFIFO写和读数据个数等额的Dummy数据,这样才会有控制器写RxFIFO的时钟。
需要特别注意的是,在IO模式下,控制器自动识别用户指令,在控制器使能,且片选有效的情况下写入FIFO的第一条指令被控制器认为是命令,命令总是通过数据线D0发出,命令+数据最长为4字节,也就是说在发出读写命令时,有效地址位总是3字节,只能访问16MB地址空间。
控制器自动识别含义的命令如表2所示。
表2 控制器自动识别含义的命令
在这里插入图片描述
无论是线性地址模式还是IO模式访问QSPI,控制器均只支持表2所示的命令并自动切换控制器工作模式。在表2所列命令之外的,控制器均默认通过D0发出和接收。
2 QSPI Flash选择
Zynq Qspi Flash控制器并不支持所有的Qspi Flash器件,因此在选择Qspi Flash时必须满足:
① 支持QOR命令:BootRom默认方式;
② 支持3字节地址模式:默认最大支持16MB,超出16MB部分通过地址寄存器设置后仍可通过3字节地址模式访问的。
不支持Qspi Flash器件见UG585 12.2.6小节的描述。
2.1 QSPI Flash操作实例
以镁光的N25Q512 Qspi Flash为例,简要说明要点:
N25Q512 QspiFlash支持Extended、Dual和Quad三种SPI协议模式,默认为Extended模式,默认模式即和Zynq QSPI 控制器访问协议匹配。
N25Q512 QspiFlash共512Mb的密度,分成4个BANK,每个BANK密度为16MB,可以通过Extended Address Register或者切换到4字节地址模式来对16MB以上的空间进行访问。因为Zynq Qspi Flash仅支持3字节地址模式,因此访问高地址空间时,通过切换Extended Address Register来实现。通过该方式存在一定的风险,那就是BootRom只能访问低16MB空间,为避免镜像写到高地址空间去,在每次用Xilinx工具烧写Flash前一定要重新断电重启,使Flash的Extended AddressRegister恢复到默认状态。
N25Q512 QspiFlash在Erase、Program和访问内部寄存器前一定要先发出写使能命令(06H);Erase、Program命令发出后一定要读FlagStatus寄存器。
N25Q512 QspiFlash,擦除可以是子页擦除(4KB)、页擦除(64KB)和Die擦除(32MB)。一页大小为256B,因此每个Program命令只能写256字节的数据。
3 作为BOOT器件的考虑
在使用Qspi Flash需要注意:
① BootROM只能访问低16M(单SS)或低32M(双SS),因此镜像必须存储下可访问空间内;
② 单SS时,启动器件必须挂在QSPI控制0上;
③ 双SS并行8bit模式时BootROM的搜索步长是64KB,其模式为32KB,因此为减少搜索时间,启动镜像最好从地址0开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值