今天被打算学习一下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. 电子设计常用芯片总结

    目录 1.AMS1117稳压电源芯片: 1.LM2940线性稳压芯片: 参考资料: 1.AMS1117稳压电源芯片: (1)封装: (2)特征及应用: 实例:电源模块: (3)引脚定义: (4)典型运 ...

  2. 全国大学生电子设计竞赛(二)--电源常用技术与算法

    电源常用技术与算法 1 有效值检波技术 1.1 均值检波技术 1.2 峰值检波技术 1.3 均方根值检波技术 2 高精度采样技术 2.1 AD的选择 2.1.1 A/D转换器的性能指标 2.1.2 A ...

  3. 全国大学生电子设计竞赛(六)--常用整流技术

    整流电路详解 1 基本整流电路 1.1 基本整流电路 1.2 半波整流电路 1.3 半波整流电路 1.4 桥式整流滤波电路 2 高功率因数整流技术 2.1 APFC的控制方式 1.峰值电流控制 2.滞 ...

  4. 电子设计竞赛(4)-常用的两种PID算法

    公众号关注 "大鱼机器人" 设为 "星标",重磅干货,第一时间送达! 1. 什么是PID PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备.气动 ...

  5. 电子设计中常用的运放电路

    文章目录 反向放大器 同向放大器 加法器1 加法器2 减法器 积分电路 微分电路 差分放大电路 电流检测 电压电流转换检测 文末获取更多资料 由于运放的电压放大倍数很大,一般通用型运算放大器的开环电压 ...

  6. 「第五篇」全国电子设计竞赛-电源题设计方案总结

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 0  前言 许多朋友给我留言说,有没有电源题目的一些文章可以参考. 为了给大家找更多 ...

  7. [渝粤教育] 西南科技大学 电子设计EDA 在线考试复习资料

    电子设计EDA--在线考试复习资料 一.单选题 1. 执行菜单命令(   ),用户可以选定某个元件,使程序只对与该元件相连的网络进行自动布线. A.uto Routing/All B.uto Rout ...

  8. 基于TI器件的电子竞赛常用模拟系统设计与实践

    基于TI器件的电子竞赛常用模拟系统设计与实践 第一讲 理想运放模型 理想运放模型![[Pasted image 20220710094850.png]] 叠加定理计算运算输出![[FZ0%[4~XO] ...

  9. 电子电路设计基本概念100问(六)【学习目标:原理图、PCB、阻抗设计、电子设计基本原则、基本原器件等】

    笔者电子信息专业硕士毕业,获得过多次电子设计大赛.大学生智能车.数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究.对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验,共同 ...

最新文章

  1. springboot 请求路径有后缀_springboot指定访问url接口后缀:*.do或*.action
  2. python多线程读取文件的问题_Python多线程同步---文件读写控制方法
  3. java fromstring_Java UUID fromString()方法与示例
  4. 总结了点React,咱也不敢说
  5. java solr_通过Java访问Solr服务实例及相关配置
  6. c语言程序位置式pid算法,增量式与位置式PID算法(C语言实现与电机控制项目)...
  7. Codeforces Round #263 (Div. 2) D. Appleman and Tree 树形dp
  8. vue中 vue-router的路由的2种模式 (原生js模拟演示)
  9. 通信要学很多计算机课吗,辽宁科技学院通信工程专业要学哪些课程,好学吗?...
  10. loadrunner12 + ie11 无internet, 代码中文乱码
  11. 判断字符串是否是正整数
  12. Vue:错误Component template should contain exactly one root element解决
  13. 云桌面 瘦终端_云终端与瘦终端简介
  14. Python微信文章 抓取转PDF
  15. linux文件句柄上线的修改,修改Linux文件句柄限制
  16. 机器人运动学、动力学基础上利用MATLAB进行PID控制仿真
  17. sum(case when) 学习
  18. mysql 漏洞排查_MySQL最新漏洞分析_MySQL
  19. 矩阵运算库 C语言 (Matrix_hub)
  20. 深入理解SMTP协议之邮件客户端

热门文章

  1. SAP Spartacus localStorage 里存储的 auth Token 过期时间
  2. 使用 SAP UI5 CLI 命令行工具构建和运行 SAP UI5 应用
  3. 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧
  4. 如何检查并unregister本地注册的Chrome service worker
  5. how is SAP CDS view SADL load generated
  6. SAP ABAP Netweaver和Hybris Commerce的开发license
  7. Fiori elements执行过程解析:When click go in table list, odata service is sent
  8. 使用Hybris commerce的promotion rule进行促销活动
  9. HANA live report - metadata retrieve - where I can find it in HANA studio
  10. 2015-03-19 header note update in my Appointment