电子设计常用总线--QSPI
今天被打算学习一下QSPI的相关知识,以外惊喜发现了SPI协议的其他家族成员,我们常说的SPI协议其实是包括:Standard SPI(3-wire)、Dual SPI(4-wire)和Queued SPI(6-wire)三种协议接口。Standard SPI通常就称SPI,有4根信号线,分别为CLK、CS、MOSI和MISO。Dual SPI通常只是针对SPI Flash而言,并不应用于所Standard SPI和Dual SPI不是今天要学习的重点,QSPI才是今天的主角,QSPI与Dual SPI类似,也是应用于SPI Flash的操作,6线制的QSPI Flash是在4线制DSPI Flash的基础上增加了两根I/O线(SIO2,SIO3),目的是一个时钟内传输4个bit数据,显而易见的是对于SPI Flash而言,在相同的时钟速率下,数据线数目越多,传输速率越高。下面就QSPI的相关知识进行简单总结,以备后续学习查阅。
有SPI外设,操作SPI Flash往往是向Flash中写入数据或者单纯读取Flash中存储的数据,基本不用实时的数据交互,导致SPI全双工通讯的优势并没有发挥出来,因此扩展了MOSI和MISO的用法,让它们工作在半双工模式,用以加倍数据传输。在操作Dual SPI Flash时,可以发送一个命令字节进入dual mode,这样MOSI变成SIO0(Serial IO 0),MISO变成SIO1(Serial IO 1),这样一个时钟周期内就能传输2个bit数据,加倍了数据传输。
QSPI(Queued Serial Peripheral Interface,队列串行外设接口)
QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展,比SPI应用更加广泛。在SPI协议的基础上,Motorola公司对其功能进行了增强,增加了队列传输机制,推出了队列串行外设接口协议。使用QSPI接口,用户可以一次性传输包含多达16个8位或16位数据的传输队列。而且QSPI一旦启动传输,直到传输结束,传输过程都不需要CPU干预,极大的提高了传输效率。在总线结构上QSPI与SPI相比最大的结构特点是以80字节的RAM代替了SPI的发送和接收数据寄存器。
该接口可以在以下三种模式下工作:
间接模式:使用 QSPI 寄存器执行全部操作
状态轮询模式:周期性读取外部 Flash 状态寄存器,而且标志位置 1 时会产生中断(如擦除或烧写完成,会产生中断)
内存映射模式:外部 Flash 映射到微控制器地址空间,从而系统将其视作内部存储器
QSPI常见的功能框图如下图所示
QSPI使用6根信号连接Flash,分别是四个数据线BK1_IO0~BK1_IO3,一个时钟输出CLK,一个片选输出(低电平有效)BK1_nCS,它们的作用介绍如下:
(1)BK1_nCS:片选输出(低电平有效),适用于一个主设备上挂多个外设Flash的情况下选择要操作的目标Flash。QSPI通讯以BK1_nCS线拉低为开始信号,以BK1_nCS线被拉高作为结束信号。
(2)CLK:时钟输出,用于通讯数据同步,它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如STM32的QSPI时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。
(3)BK1_IO0:在双线/四线模式中为双向IO,单线模式中为串行输出。
(4)BK1_IO1:在双线/四线模式中为双向IO,单线模式中为串行输入。
(5)BK1_IO2:在四线模式中为双向IO。
(6)BK1_IO3:在四线模式中为双向IO。
QSPI命令序列
QSPI通过命令与Flash通信,每条命令包括指令、地址、交替(复用)字节、空指令和数据共五个阶段,而这五个阶段任一阶段均可跳过,但至少要包含指令、地址、交替字节或数据阶段之一。nCS在每条指令开始前下降,在每条指令完成后再次上升。QSPI四线模式下的读命令时序如下图所示。
1)指令阶段
这一阶段,将在QSPI_CCR[7:0]寄存器的instruction字段中配置的一条8位指令发送到Flash,指定待执行操作的类型。
尽管大多数Flash从IO0/SO信号(单线SPI模式)只能以一次1位的方式接收指令,但指令阶段可选择一次发送2位(在双线SPI模式中通过IO0/IO1)或一次发送4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QSPI_CCR[9:8]寄存器中的IMODE[1:0]字段进行配置。若IMODE = 00,则跳过指令阶段,命令序列从地址阶段(如果存在)开始。
2)地址阶段
在地址阶段,将1-4字节发送到Flash,指示操作地址。待发送的地址字节数在QSPI_CCR[13:12]寄存器的ADSIZE[1:0]字段中进行配置。在间接模式和自动轮询模式下,待发送的地址字节在QSPI_AR寄存器的ADDRESS[31:0]中指定;在内存映射模式下,则通过AHB(来自于内核或DMA)直接给出地址。地址阶段可一次发送1位(单线SPI模式通过SO)、2位(双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QUADSPI_CCR[11:10]寄存器中的ADMODE[1:0]字段进行配置。若ADMODE = 00,则跳过地址阶段,命令序列直接进入下一阶段(如果存在)。
3)交替字节阶段
在交替字节阶段,将1-4字节发送到Flash,一般用于控制操作模式。待发送的交替字节数在QSPI_CCR[17:16]寄存器的ABSIZE[1:0]字段中进行配置。待发送的字节在QSPI_ABR寄存器中指定。
交替字节阶段可一次发送1位(在单线SPI模式中通过SO)、2位(在双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QSPI_CCR[15:14]寄存器中的ABMODE[1:0]字段进行配置。若ABMODE = 00,则跳过交替字节阶段,命令序列直接进入下一阶段(如果存在)。
交替字节阶段存在仅需发送单个半字节而不是一个全字节的情况,比如采用双线模式并且仅使用两个周期发送交替字节时。在这种情况下,固件可采用四线模式(ABMODE = 11)并发送一个字节,方法是ALTERNATE的位7和3置“1”(IO3保持高电平)且位6和2置“0”(IO2线保持低电平)。此时,半字节的高2位存放在ALTERNATE的位4:3,低2位存放在位1和0中。例如,如果半字节2 (0010)通过IO0/IO1发送,则ALTERNATE应设置为0x8A (1000_1010)。
4)空指令周期阶段
在空指令周期阶段,给定的1-31个周期内不发送或接收任何数据,目的是当采用更高的时钟频率时,给Flash留出准备数据阶段的时间。这一阶段中给定的周期数在QSPI_CCR[22:18]寄存器的DCYC[4:0]字段中指定。在SDR和DDR模式下,持续时间被指定为一定个数的全时钟周期。若DCYC为零,则跳过空指令周期阶段,命令序列直接进入数据阶段(如果存在)。空指令周期阶段的操作模式由DMODE确定。为确保数据信号从输出模式转变为输入模式有足够的“周转”时间,使用双线和四线模式从Flash接收数据时,至少需要指定一个空指令周期。
5)数据阶段
在数据阶段,可从Flash接收或向其发送任意数量的字节。在间接模式和自动轮询模式下,待发送/接收的字节数在QSPI_DLR寄存器中指定。在间接写入模式下,发送到Flash的数据必须写入QSPI_DR寄存器。在间接读取模式下,通过读取QSPI_DR寄存器获得从Flash接收的数据。在内存映射模式下,读取的数据通过AHB直接发送回Cortex或DMA。数据阶段可一次发送/接收1位(在单线SPI模式中通过SO)、2位(在双线SPI模式中通过IO0/IO1)或4位(在四线SPI模式中通过IO0/IO1/IO2/IO3)。这可通过QUADSPI_CCR[15:14]寄存器中的ABMODE[1:0] 字段进行配置。若DMODE = 00,则跳过数据阶段,命令序列在拉高nCS时立即完成。这一配置仅可用于仅间接写入模式。
电子设计常用总线--QSPI相关推荐
- 电子设计常用芯片总结
目录 1.AMS1117稳压电源芯片: 1.LM2940线性稳压芯片: 参考资料: 1.AMS1117稳压电源芯片: (1)封装: (2)特征及应用: 实例:电源模块: (3)引脚定义: (4)典型运 ...
- 全国大学生电子设计竞赛(二)--电源常用技术与算法
电源常用技术与算法 1 有效值检波技术 1.1 均值检波技术 1.2 峰值检波技术 1.3 均方根值检波技术 2 高精度采样技术 2.1 AD的选择 2.1.1 A/D转换器的性能指标 2.1.2 A ...
- 全国大学生电子设计竞赛(六)--常用整流技术
整流电路详解 1 基本整流电路 1.1 基本整流电路 1.2 半波整流电路 1.3 半波整流电路 1.4 桥式整流滤波电路 2 高功率因数整流技术 2.1 APFC的控制方式 1.峰值电流控制 2.滞 ...
- 电子设计竞赛(4)-常用的两种PID算法
公众号关注 "大鱼机器人" 设为 "星标",重磅干货,第一时间送达! 1. 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备.气动 ...
- 电子设计中常用的运放电路
文章目录 反向放大器 同向放大器 加法器1 加法器2 减法器 积分电路 微分电路 差分放大电路 电流检测 电压电流转换检测 文末获取更多资料 由于运放的电压放大倍数很大,一般通用型运算放大器的开环电压 ...
- 「第五篇」全国电子设计竞赛-电源题设计方案总结
点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 0 前言 许多朋友给我留言说,有没有电源题目的一些文章可以参考. 为了给大家找更多 ...
- [渝粤教育] 西南科技大学 电子设计EDA 在线考试复习资料
电子设计EDA--在线考试复习资料 一.单选题 1. 执行菜单命令( ),用户可以选定某个元件,使程序只对与该元件相连的网络进行自动布线. A.uto Routing/All B.uto Rout ...
- 基于TI器件的电子竞赛常用模拟系统设计与实践
基于TI器件的电子竞赛常用模拟系统设计与实践 第一讲 理想运放模型 理想运放模型![[Pasted image 20220710094850.png]] 叠加定理计算运算输出![[FZ0%[4~XO] ...
- 电子电路设计基本概念100问(六)【学习目标:原理图、PCB、阻抗设计、电子设计基本原则、基本原器件等】
笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...
最新文章
- springboot 请求路径有后缀_springboot指定访问url接口后缀:*.do或*.action
- python多线程读取文件的问题_Python多线程同步---文件读写控制方法
- java fromstring_Java UUID fromString()方法与示例
- 总结了点React,咱也不敢说
- java solr_通过Java访问Solr服务实例及相关配置
- c语言程序位置式pid算法,增量式与位置式PID算法(C语言实现与电机控制项目)...
- Codeforces Round #263 (Div. 2) D. Appleman and Tree 树形dp
- vue中 vue-router的路由的2种模式 (原生js模拟演示)
- 通信要学很多计算机课吗,辽宁科技学院通信工程专业要学哪些课程,好学吗?...
- loadrunner12 + ie11 无internet, 代码中文乱码
- 判断字符串是否是正整数
- Vue:错误Component template should contain exactly one root element解决
- 云桌面 瘦终端_云终端与瘦终端简介
- Python微信文章 抓取转PDF
- linux文件句柄上线的修改,修改Linux文件句柄限制
- 机器人运动学、动力学基础上利用MATLAB进行PID控制仿真
- sum(case when) 学习
- mysql 漏洞排查_MySQL最新漏洞分析_MySQL
- 矩阵运算库 C语言 (Matrix_hub)
- 深入理解SMTP协议之邮件客户端
热门文章
- SAP Spartacus localStorage 里存储的 auth Token 过期时间
- 使用 SAP UI5 CLI 命令行工具构建和运行 SAP UI5 应用
- 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧
- 如何检查并unregister本地注册的Chrome service worker
- how is SAP CDS view SADL load generated
- SAP ABAP Netweaver和Hybris Commerce的开发license
- Fiori elements执行过程解析:When click go in table list, odata service is sent
- 使用Hybris commerce的promotion rule进行促销活动
- HANA live report - metadata retrieve - where I can find it in HANA studio
- 2015-03-19 header note update in my Appointment