赞
踩
编辑:CrazyRabbit
日期:2022年8月3日
本文是英飞凌官方培训的笔记摘录,入门篇第九节课。
QSPI是一种主从的通讯接口,主机一般是MCU,从机可以是各种外设驱动芯片(也可以是MCU)。通过片选信号的激活,主机可以实现和不同从机之间的QSPI通讯。值得注意的是,QSPI的通讯协议本身并没有国际标准,需要主机和从机之间自行协商,一般需要阅读从机的芯片手册,了解他的通讯协议,并编写相应的驱动程序,从而实现主机和从机的双向通讯。
左上角是QSPI的系统框图,首先有一个时钟控制单元,其次通过四根线和外部进行通讯,所以涉及到端口的配置,需要配置四根线的输入、输出以及相应的属性。QSPI在通讯过程中,可能产生各种中断,需要CPU或DMA对中断进行处理。
值得注意的是,QSPI通过四根线与外部进行通信,这四根线分别是:时钟、数据输入、数据输出以及片选信号。其支持MASTER和SLAVE的全双工操作方式,当然也支持半双工和单工的收发方式。
支持最大50Mb/s的比特率
关键特性:
下图右下角的框图是QSPI的内核和用户接口,包括16路的片选信号输出,4x32位的Tx FIFO和Rx FIFO,一些操作寄存器,全局控制寄存器,ECON、BACON寄存器,数据转换寄存器等等。
它对于队列的支持主要体现在:不仅可以把数据放到Tx FIFO里发送,还可以将配置参数(数据长度,LSB/MSB转换方向,时钟极性和相位,可变的比特率和延迟,校验类型,帧长度)放到Tx FIFO中进行配置。系统会自动识别哪些是配置参数,哪些是数据。将其分别移送到BACON寄存器和数据转换寄存器当中进行发送。
对于Rx而言,也是同样的道理。接收到的数据会自动存放到Rx FIFO里,包括状态和数据。可以根据自己的需求通过DMA或其他方式读取数据和状态进行解析。
这样做的好处是,可以将SPI的数据帧和配置参数实现在不同通道之间灵活的动态转换。
QSPI另外一个关键的特性是灵活的帧格式配置,包括:数据位数,波特率,转换方向,时钟极性、相位…
如上图重点介绍下QSPI Timing的时序图,从上图可以看到整个过程可以分为若干个阶段:
波特率、idle、trailing和leading的延迟都可以灵活配置。
下图是第一张简略的系统框图的详细版本。
可以看到,QSPI作为完整的模块,也是挂在SPB总线上的。内部有两个模块,分别是User Interface(用户接口模块)和Shift Engine(转换引擎),它们的时钟来源是不同的。
用户接口模块里有TxFIFO、RxFIFO以及SFR(特殊功能寄存器)。对于FIFO的操作,可以通过DMA进行,特别是在数据较多的情况下,通过DMA能有效降低CPU的负荷。可以通过DMA来将需要发送的数据搬运到TxFIFO里进行发送,也可以通过RxFIFO产生的中断通过DMA搬运出来进行数据的解析。
关于中断,包括Tx/Rx FIFO的事件中断,以及错误中断,因为TxFIFO和R小FIFO本身可以设置阈值,当超过某个阈值时,会触发中断。也包括一些Phase中断。
图片右边是其端口的配置,取决于我们QSPI工作时处在MASTER还是SLAVE模式。在Master模式下,它支持16个可选的片选信号选择;在Slave模式下,只有七种。
这里是SPI作为MASTER的应用实例。可以看到,SPI作为MASTER,最典型的应用也是一个4线的例子。需要注意的是,谁是MASTER,它的时钟和片选信号就由谁产生。可以看到,如果是MASTER的话,左上角的SCLKO和SLSO都是输出模式,另外两根线就是输入和输出。
MTSR表示Master Transmitte,Slave Receive
MRST表示Master Receive,Slave Transmitte
需要注意的是,对于半双工以及单工,并不需要额外的寄存器配置或驱动修改,可以通过外部,比如说将MTSR和MRST两线短接起来,即同一时刻只有一个数据在上面传输。对于单工而言,可以将MRST这根线断掉,只发不收。
最后一个例子是SPI作为Slave,也是四线模式,只是方向相反。如:SCLKI和SLSI是作为输入的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。