浅谈Zynq Qspi控制器的三种模式

1 zynq qspi控制器 zynq qspi控制器支持三种模式:i/o模式、线性地址模式和传统spi模式,其中线性地址模式双片选支持最大的线性地址空间为32mb,可通过ps dma读取。
1.1 线性地址模式
线性地址模式只可从qspi flash中读数。在配置qspi boot时,boot rom工作在线性地址模式,且访问时钟为arm接入的晶振时钟,因此在选用晶振时频率不能大于flash的最高访问时钟频率。
线性地址模式下io可以配置为单片选4bit接口、双片选8bit并行接口和双片选stacked 接口,单片器件时必须接到qspi0上。单片qspi flash线性地址映射空间为0xfc00_0000~0xfcff_ffff,若采用两片,必须是同一生产厂家,保证协议相同,在配置为双片选8bit并行接口时,两片flash必须要是同样容量同一厂家器件,保证访问完全同步,寻址空间为0xfc00_0000~0xfdff_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开始。

“元件强基”与“电机提效”两大产业政策为万物互联与智能制造铺就创新发展道路
基于C8051F020单片机实现多波段光谱辐射计采集系统的设计
SMT焊盘氧化的原因,避免SMT焊盘氧化的方法
人工智能医疗加速发展 AI技术监听细胞声音
窄脉冲LIV测试系统的典型应用有哪些?
浅谈Zynq Qspi控制器的三种模式
琻捷胎压监测芯片SNP739D为安全出行保驾护航
谷歌与企业合作开发AR购物市场
F频段干扰问题的几种解决方案
浅析汽车电源系统的工作原理
单片机仿真器的五大作用
MX5旗舰机发布!搭载MTK真八核CPU Helio10
华为畅享Max降价促销 4+128GB版仅969元
科技巨头都青睐的元宇宙究竟是什么
隧道矿井应急通信解决方案
农业怎样利用物联网实现打翻转
振动监测装置常见故障分析和处理方法
测量MAX38908线性稳压器的输出电流
手机的CPU(ARM)跟PC的CPU(x86)有什么差别?
曝TCL将推出三折叠手机