Queued Synchronous Peripheral Interface (QSPI)

文章目录

  • 1. 介绍
  • 2. Feature List
  • 3. 概述
    • 3.1 QSPI框图
    • 3.2 操作模式
    • 3.3 三线模式
    • 3.4 时钟极性和时钟相位
  • 4. Master模式
    • 4.1 状态机
    • 4.2 采样点
    • 4.3 波特率
    • 4.4 通信模式
      • 4.4.1 短数据模式
      • 4.4.2 长数据模式
      • 4.4.3 短连续模式
      • 4.4.4 长连续模式
      • 4.4.5 单配置多帧模式
      • 4.4.6 XXL模式
      • 4.4.7 Move Count 模式
      • 4.4.8 总结
  • 5. Slave模式
  • 6. Tx\Rx中断
    • 6.1 单步移动模式
    • 6.2 批量移动模式
    • 6.3 合并移动模式
  • 7. 测试记录
    • 7.1 线模式
    • 7.2 最高波特率测试
  • 8. 其他

1. 介绍

SPI是一种主从的通讯接口,主机一般是MCU,从机可以是各种外设驱动芯片(也可以是MCU)。通过片选信号的激活,主机可以实现和不同从机之间的QSPI通讯。=

Queued Synchronous Peripheral Interface (QSPI),此处的Q是指Queued (队列),内部自带FIFO,需要注意此处的QSPI并不是Standard SPI里面的四线SPI(Qual SPI)。

具体可参考文章:SPI总结

2. Feature List

  • 支持全双工、半双工、单工
  • 支持四线、三线(缺片选)模式,半双工、单工模式下,仅两个线(时钟、数据线)
  • 支持灵活的数据格式,数据位数2~32bit可编程(加奇偶校验:3到33位);移位方向、时钟极性、相位可编程
  • 支持Tx\Rx,错误状态(接收、波特率、发送错误、奇偶校验错误),传输状态(帧的开始或结束…)中断
  • 支持DMA
  • 硬件支持奇偶校验:奇校验;偶校验;无校验位
  • 从模式下有7个从机片选输入SLSIB…H;
  • 主模式下有16个从机片选输出SLSO[15:0](主模式下最多可挂在16路从机)
  • Master模式下输出片选极性可配置(高 or 低电平有效)
  • Loop-Back mode(回环模式)
  • 高速输入捕获(HSIC)(部分型号没有该模块,具体见Part1手册,46页)
  • 最高通信速率50Mbps(仅部分QSPI支持,实测使用普通引脚的SPI最高20Mbps,大于20Mbps后需要使用LVDS引脚)

3. 概述

3.1 QSPI框图

在这里插入图片描述

3.2 操作模式

IP本身不区分全双工、半工、单工操作模式,半工和单工都是通过外部连线进行实现。

在这里插入图片描述

Ifx QSPI半双工实现方式与其他SPI半双工实现不太一样,普通SPI直接将MTSR和MRST在芯片内部合并为同一个Pin输入输出,而Ifx QSPI的仅部分的QSPI可以合并,大部分半双模式下都需要外部短接来实现。具体实现方式如下

Master与Slave的MTSR、MRST四个引脚全部连接,主、从的发送端都设置为开漏输出,总线外接上拉电阻,利用“线与”特性完成数据传输。

  • Master发,Slave收时:Slave会往DATAENTRY写0xFF,也就是Slave端的MRST会一直发送0xFF,总线处于“线与”状态,所以Slave收到的数据就是Master发送的数据
  • Master收,Slave发时:同上

根据Pin映射,可以分为两种连接方式

1、使用内部连接(对应半双工图中实线部分)

Ifx的内部连接只针对QSPI0\1设计了,其他几个QSPI未提供这样的功能,Mater和Slave的发送都必须配置为“开漏输出”,否则会烧坏GPIO,Master的数据数据采用MRSTA引脚输入(配置PISEL.MRIS = 0即可)
由于两个输出都设置为开漏输出,所以总线需要接上拉电阻才能正常输出高电平,上拉电阻可以通过外部连接的方式给入,也可以同时设置主从的数据输入引脚为上拉输入。
在这里插入图片描述
2、使用外部连接(对应半双工图中虚线部分)
Master和Slave的发送接收都连在一起(四个Pin都连到一根总线上),Mater和Slave的发送都配置为“开漏输出”。

TC37x LFBGA-292引脚统计如下:
在这里插入图片描述

  • 图中数字1表示对应Pin支持QSPI的某个功能,例如QSPI的P20.12行的1,表示该引脚支持Mater和Slave模式下的输出功能和Master模式下MRSTA的输入。
  • 仅黄色背景的两个引脚在半双工模式下可以走内部直接连接,不用额外占用其他引脚

3.3 三线模式

缺少片选信号,仅限定一对一通信。
在这里插入图片描述

3.4 时钟极性和时钟相位

CPH: 控制时钟相位
CPOL: 控制时钟极性
在这里插入图片描述

4. Master模式

4.1 状态机

Master模式下除发送数据以外,还需要提供串行时钟和片选信号。
一帧QSPI信号包含5个阶段:空闲延时、前置延时、数据阶段、尾随延时和一个可选的等待阶段,其中空闲延时阶段分为空闲A与空闲B。
在这里插入图片描述
相应时间计算公式如下:
在这里插入图片描述

4.2 采样点

类似CAN协议,此处可以通过配置ABC三个参数偏移采样点,一般普通的SPI,则使用其中一个边沿采样数据。
在这里插入图片描述

4.3 波特率

QSPI时钟除以大于4的整数,此处fPER时钟为200Mhz,故fSCLK时钟最大50Mhz(QSPI的时钟线)
在这里插入图片描述
计算公式如下:

备注:
1、QSPI模块有两个时钟输入,一个是fSPB用来驱动寄存器读写,一个fPER,用来生成QSPI波特率时钟。
2、时钟可参考(CCU输出时钟命名为fQSPI):Clocking System

4.4 通信模式

所有模式总结:

在这里插入图片描述
注意:用户并不能直接操作控制寄存器和移位寄存器的,通过其他接口进行间接操作。

  • 发送数据时,用户数据都是先写入xxx_ENTRY寄存器中,硬件自动搬运到Tx FIFO中,其中传输后,硬件在从FIFO中搬配置到配置寄存器(BACON)或搬数据到移位寄存器中。
  • 读取数据时,将移位寄存器的数据或状态寄存器(STATUS)内容搬到Rx FIFO中,用户通过RX_EXIT寄存器进行读取。
    在这里插入图片描述

4.4.1 短数据模式

以bit为单位传输,一次可传输2~32bit数据,每次传输前都需要先写一次配置在写数据。配置中BACON.BYTE固定为0,BACON.LAST = 1固定为1
在这里插入图片描述

4.4.2 长数据模式

以Byte为单位传输,一次可传输2~32Byte数据,此处框图只是示意图,实际写一个配置后,后续最大可写入8个DATA块,一个DATA块最大32bit。
配置中BACON.BYTE = 1,BACON.LAST = 1
在这里插入图片描述
备注:代码中限定一个配置之后,最大跟4个DATA,可能是因为FIFO的深度为4导致,实测跟8个也能正常通信。
在这里插入图片描述

4.4.3 短连续模式

在短数据的基础上,传输多个短数据块,只需要在首尾各写一次配置。
第一次配置:BACON.BYTE=0,BACON.LAST = 0,开始发起通信
最后一次配置:BACON.BYTE=0,BACON.LAST = 1,在发一笔数据后,结束通信
在这里插入图片描述
备注:驱动代码中单独区分了短模式和短连续模式,但IfxQspi_SpiMaster_exchange接口中,会自动根据形参count进行切换,当count为1时,短数据模式,大于1时,短连续模式。

4.4.4 长连续模式

在长数据的基础上,传输多个长数据块,一个配置后面跟多少DATA,由BACON.DL参数决定,前面n-1个配置的LAST = 0,仅最后一次时,将LAST配置为1。
在这里插入图片描述

4.4.5 单配置多帧模式

只需要写入一次BACON寄存器值,就可以发送多帧数据,避免连续模式,发送的多个配置。单次传输数据长度最大16bit。
在这里插入图片描述
备注:
1、该模式下所有的配置和数据都写到MIX_ENTRY中,根据高16bit数据进行区分,高16bit非0,则认为是配置,否则是数据。
2、实际该模式为短数据模式的扩展,可以看成多个短数据拼接而成,只是数据和配置都往MIX_ENTRY写,数据长度最大16bit而已。
3、传输过程中,若修改其中的配置,,例如BYTE = 1,LAST = 1,会自动切换到长数据模式进行传输。

4.4.6 XXL模式

长数据模式的一种扩展模式,长数据模式最大可传输2 ~ 32byte,使用XLL模式可以传输2~65536byte。
使用方法
设置BACON.DL = 0,,BACON.BYTE = 1,设置XXLCON.XDL位域值(数据传输长度);
另外XXLCON.BYTECOUNT:可以显示剩余需要发送的字节数。

4.4.7 Move Count 模式

可以传输8192个短数据帧。
使用方法:MCCON.MCEN = 1;BACON.BYTE = 0;BACON.LAST = 0;
待传输数据长度通过MC.COUNT设置(1 ~ 8191),MC. MCOUNT显示还剩传输的数据块。
在这里插入图片描述
备注:这里的两个中断是路由到User Interrupt。

4.4.8 总结

在Ifx手册中定义了非常多的模式,这些模式都是围绕BYTE、LAST、DL三个参数进行展开的,了解这些参数后,直接操作寄存器也可以完成数据发送,注意BACON配置寄存器都是只读属性的,只能通过BACON_ENTRY或MIX_ENTRY寄存器间接写入。
在这里插入图片描述
DL:数据长度,可以是bits也可以是Bytes,由BYTE位控制。当DL非 0时,组成短、短连续、长、长连续模式,等于0时,组合为XXL模式
BYTE:数据传输单位,等于0,DL表示传输多少bits,等于1,DL表示传输多少Bytes
LAST:表示当前配置是否为最后一个配置,如果是,则为配置为1,不是则配置为0。硬件会根据该配置,决定数据发送完成后,是否拉高片选,所有的模式,其实都是围绕该配置进行实现的。例如单配置多帧时,LAST固定为1,每次发送完成后,拉高片选,下次发起传输后,重新拉低片选。

调用Ifx接口,初始化完成后,直接操作寄存器实现长数据传输:

    Ifx_QSPI_BACON bcfgVal;Ifx_QSPI *qspiPtr;qspiPtr = &MODULE_QSPI2;printf("QSPI%d longContinue mode test\t", 0);bcfgVal.B.CS = 1;bcfgVal.B.DL = 11;bcfgVal.B.BYTE = 1;   /*长数据模式下BYTE = 1 */bcfgVal.B.MSB = 1;bcfgVal.B.PARTYP = 0;bcfgVal.B.TRAIL = 7;bcfgVal.B.TPRE = 0;bcfgVal.B.LEAD = 7;bcfgVal.B.LPRE = 0;bcfgVal.B.IDLE = 7;bcfgVal.B.IPRE = 0;bcfgVal.B.LAST = 0;    /* 先发送12byte数据,在发送last = 1命令,结束数据传输 */qspiPtr->MIXENTRY.U = bcfgVal.U;qspiPtr->MIXENTRY.U = 0xAA535251;qspiPtr->MIXENTRY.U = 0xAA535252;qspiPtr->MIXENTRY.U = 0xAA535253;Qspi_ldelay();IfxQspi_read32(qspiPtr, &g_qspi.spiBuffers.spiMasterRxBuffer[0], 3);bcfgVal.B.DL = 3;bcfgVal.B.LAST = 1;    /* 在发送last = 1命令,结束数据传输 */qspiPtr->MIXENTRY.U = bcfgVal.U;qspiPtr->MIXENTRY.U = 0xAA535254;Qspi_ldelay();IfxQspi_read32(qspiPtr, &g_qspi.spiBuffers.spiMasterRxBuffer[3], 1);

备注:由于QSPI发送数据的同时也会接收数据到Rx FIFO中,故发送数据时也要考虑将Rx FIFO数据读出,否则会造成Rx FIFO下溢。

5. Slave模式

TBD

6. Tx\Rx中断

QSPI TXFIFO与RXFIFO可以配置为单步移动、批量移动、组合移动三种不同的工作模式。

6.1 单步移动模式

目的是保持TXFIFO尽可能满,尽可能写入一个自由的元素来重新填充TXFIFO
TXFIFO中断:软件对TXFIFO写入产生中断,TXFIFO往移位配置寄存器写入数据产生
RXFIFO中断:移位寄存器(或STATUS) 将新元素写入空的RXFIFO时产生,用户通过SPB总线读取时(RXEXIT/RXEXITD)
DMA请求源:软件对TXFIFO写入(写入BACONENTRY/DATAENTRY/MIXENTRY)

6.2 批量移动模式

TXFIFO中断:当FIFO层级低于GLOBALCON1.TXFIFOINT时才产生中断,优点是减少CPU中断次数
RXFIFO中断:当填充级别上升到编程阈值时,就会产生RXFIFO中断(默认配置为0,有多少个数据,进多少次接收中断)

6.3 合并移动模式

TXFIFO中断:结合①②,低于GLOBALCON1.TXFIFOINT时才产生中断,区别是在低于该FIFO时,发送BACON/DATA时也会产生中断。
RXFIFO中断:结合①②,高于GLOBALCON1.RXFIFOINT时才产生中断,区别是在高于该FIFO时,接受到数据也会产生中断。

7. 测试记录

7.1 线模式

初始化引脚时,不配置CS引脚,参数设置为NULL_PTR,就对应三线模式。
在这里插入图片描述
在这里插入图片描述

7.2 最高波特率测试

最高波特率50Mbps,40Mbps可以逻辑分析仪可以正确解析,但50M无法解析,通过物理波形可以得知,数据传输正确。
无法解析原因:猜测是频率过高,由于线电容影响,导致数据解析异常。
注意事项:20M以上需要使用支持LVDS pad的引脚,否则引脚的物理特性会导致波特率达不到,这里使用QSPI4的P21.1作为时钟输出口
40M测试结果如下:
在这里插入图片描述
50M测试结果如下,通过轮廓可以得知数据正确:
发送4个字节的0xf0
在这里插入图片描述
发送4个字节的0x55 0xF0 0xF0 0xF0
在这里插入图片描述

8. 其他

Ifx Qspi长数据/长连续模式使用问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551430.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

选择国企eHR人事管理系统的时候,应该注意什么?

近年来,中国正步入高速发展的黄金时期,国有企业(国企)在追求效率和管理水平提升方面迈出了重要步伐。为了进一步实现数字化、流程化和科学化管理,越来越多的国企选择引进eHR(电子人力资源管理)系…

【Diffusion分割】MedSegDiff-v2:Diffusion模型进行医学图像分割

MedSegDiff-V2: Diffusion-Based Medical Image Segmentation with Transformer 摘要: 最近的研究揭示了 DPM 在医学图像分析领域的实用性,医学图像分割模型在各种任务中表现出的出色性能就证明了这一点。尽管这些模型最初是以 UNet 架构为基础的&…

opencv实战项目(三十):使用傅里叶变换进行图像边缘检测

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一,什么是傅立叶变换?二,图像处理中的傅立叶变换:三,傅里叶变换进行边缘检测: 一&#xff0c…

13个大V出文需要准确把握的重要因素

推文作为全球最大的社交平台之一,吸引了很多大V(即具有巨大粉丝团的影响力和的账户)的关注。那些大V常常运用推文发布相关各种各样热点的营销推广信息,以吸引更多人的关注参与。推文的发布时间段是V在宣传推广过程中需要准确把握的…

【真实访问】那些选择土木专业的学生,后来怎么样了?

“你会让孩子报土木专业吗?” 7月15日,澎湃新闻在微博上发起线上调研,截至16日12时,8000多人参与了投票,结果显示近7000人选择“不会,天坑专业”。短短几年时间,土木工程专业的报考从“香饽饽”…

CAN总线的错误类型

前言 CAN总线的错误类型主要包括:位错误、填充错误、格式错误、ACK错误和CRC错误。这里一定要做好CAN总线的错误类型、错误帧类型、节点状态之间的区别。 错误类型是帧传输出错的原因类型;错误帧类型(主动错误帧、被动错误帧)是帧…

基于IntraWeb的数据表格的多选实现

基于IntraWeb的数据表格的多选实现 既可以单条操作,也可以多选操作。 delphi源代码。 BS开发Web网站开发,不需要安装服务器,Apache和IIS都不需要,自带企业级服务器。 运行exe服务器就架好了,直接打开手机浏览器或者…

Zombie Slaughter 写实30个僵尸丧尸带动画角色模型

包含30个操纵的僵尸(15个男性和15个女性角色)+动画 所有僵尸都有分离的身体部位,以获得更好的射击/砍杀体验:) PBR材质包含4种纹理(基色、法线、粗糙度、AO),分辨率为4096x4096。 动画包括: -闲置 -步行 - 走回去 - 向右转 - 向左转 -担心 -尖叫 - 走路惹 -快跑 -阿格罗…

人工智能与伦理:如何确保AI应用中的隐私保护

引言 随着人工智能技术的飞速发展,AI已经渗透到我们生活的各个领域,从智能助手到个性化推荐系统,再到医疗诊断和金融服务,人工智能正在为我们带来前所未有的便利。然而,伴随着AI的广泛应用,隐私保护问题日益…

优选驾考系统小程序的设计

管理员账户功能包括:系统首页,个人中心,驾校管理,驾考文章管理,驾照类型管理,报名入口管理,学员报名管理,练车预约管理,考试场地管理 微信端账号功能包括:系统…

加油卡APP系统:省时、优惠、安心!

在汽车加油的刚需下,如何更加优惠的“加油”成为了大众关心的重点,而以优惠为主的加油卡系统也成为了大众的主要选择。 加油卡系统是汽车加油线上的服务系统,拥有全国各地的加油站权限,能够让车主在手机上进行充值,同…

VMware虚拟机连接公网,和WindTerm

一、项目名称 vmware虚拟机连接公网和windterm 二、项目背景 需求1:windows物理机,安装了vmware虚拟机,需要访问公网资源,比如云服务商的yum仓库,国内镜像加速站的容器镜像,http/https资源。 需求2&#xf…

【git】git分支之谜-十分钟给你讲透彻

这里写自定义目录标题 引子分支的直观模型在 git 中,分支是完整的提交记录分支用commit ID存储人们的直觉通常并没有那么错rebase 使用“直观”的分支概念merge也使用“直观”的分支概念github pull request 也使用直观的想法直觉很好,但它也有一些局限性…

前端编程艺术(1)---HTML

目录 1.HTML 2.注释 3.标题标签 4.段落标签 5.换行与水平分隔线 6.文本格式化标签 7.图像标签和属性 8.超链接 8.列表标签 9.表格标签 10.表单标签 11.HTML5 1.HTML HTML(HyperText Markup Language,超文本标记语言)是一种用于创建…

【JAVA开源】基于Vue和SpringBoot的新闻推荐系统

本文项目编号 T 056 ,文末自助获取源码 \color{red}{T056,文末自助获取源码} T056,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

Node-RED系列教程-23node-red获取OPCDAServer数据(DCOM配置)

准备了一个干净的windows 2016虚拟机: administrator wong@123 以管理员身份进入系统: 准备好如下软件: 使用的nodejs版本为: 设置淘宝镜像源: npm config set registry https://registry.npmmirror.com 安装nodered: npm install -g --unsafe-perm node-red@2.2.2

如何组织鼠标的默认的事件

如何组织鼠标的默认的事件 我原先的代码是 dblclick"checkNode(data)"设置了一个双击的事件,我如果双击的话就会导致这个内容被选中。 选中内容的同时会触发浏览器默认的操作,导致出现复制的框这些东西。 解决的方法。加一句。 mousedown.pr…

Power apps:一次提交多项申请

1、添加一个Form,导入sharepoint列表,添加确认,继续,取消按钮 2、在页面的onvisible属性中添加 Set(applynumber,Last(付款申请表).申请编号1); #定义一个申请编号变量,每次申请,就将列表最后一个…

2024上海网站建设公司哪家比较好TOP3

判断一家网建公司的好坏,第一是看公司背景,包括成立时间,工商注册信息等,第二可以去看看建站公司做的案例,例如,网站开发、设计、引流等等的以往案例,了解清楚具体的业务流程。 一、公司背景 …

让小脚本成为自己高效测试的工具

测试中会遇到的工具 软件测试如果仅仅靠手工去执行会发现在很多地方力不从心,虽然市面上已经有大牛开源了一些测试工具可以供我们使用但是在一些公司特有的业务方面则需要我们借助开源或重新做一个自己的测试工具。 测试常用的开源工具 死链接检测工具 Xenu home…