CN113448902A - 有排队串行外围接口的处理系统、集成电路、设备和方法 - Google Patents

有排队串行外围接口的处理系统、集成电路、设备和方法 Download PDF

Info

Publication number
CN113448902A
CN113448902A CN202110311738.XA CN202110311738A CN113448902A CN 113448902 A CN113448902 A CN 113448902A CN 202110311738 A CN202110311738 A CN 202110311738A CN 113448902 A CN113448902 A CN 113448902A
Authority
CN
China
Prior art keywords
data
interface
transfer
receive
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110311738.XA
Other languages
English (en)
Inventor
R·南德林格
R·奥莱科萨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Design and Application sro
STMicroelectronics Application GmbH
Original Assignee
STMicroelectronics Design and Application sro
STMicroelectronics Application GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from IT102020000006322A external-priority patent/IT202000006322A1/it
Application filed by STMicroelectronics Design and Application sro, STMicroelectronics Application GmbH filed Critical STMicroelectronics Design and Application sro
Publication of CN113448902A publication Critical patent/CN113448902A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0002Serial port, e.g. RS232C

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Abstract

本公开的实施例涉及有排队串行外围接口的处理系统、集成电路、设备和方法。实施例处理系统包括排队SPI电路,其包括硬件SPI通信接口、仲裁器和多个接口电路。每个接口电路包括传送FIFO存储器、接收FIFO存储器和接口控制电路。接口控制电路被配置为接收第一数据分组并且将其存储到传送FIFO存储器。接口控制电路从传送FIFO存储器顺序读取第一数据分组,提取至少一个传送数据字,并且将提取的字提供给仲裁器。接口控制电路从仲裁器接收接收数据字,并且将包括接收到的接收数据字的第二数据分组存储到接收FIFO存储器。接口控制电路从接收FIFO存储器顺序读取第二数据分组,并且将其传送到数字处理电路。

Description

有排队串行外围接口的处理系统、集成电路、设备和方法
相关申请的交叉引用
本申请要求于2020年3月25日提交的意大利申请No.102020000006322的权益,该申请以引用的方式并入于此。
技术领域
本公开的实施例涉及排队通信接口和相关联的方法,特别是包括多个队列的串行外围接口(SPI)和相关联的方法。
背景技术
图1示出了典型的电子系统,诸如车辆的电子系统,其包括多个处理系统10,诸如嵌入式系统或集成电路,例如现场可编程门阵列(FPGA)、数字信号处理器(DSP)或微控制器(例如,专用于汽车市场)。
例如,在图1中示出了通过适当的通信系统20连接的三个处理系统101、102和103。例如,该通信系统可以包括车辆控制总线(诸如控制器局域网(CAN)总线)以及可能还有经由网关连接到车辆控制总线的多媒体总线(诸如面向媒体的系统传输(MOST)总线)。通常,处理系统10位于车辆的不同位置,并且可以包括例如引擎控制单元(ECU)、变速器控制单元(TCU)、防抱死制动系统(ABS)、车身控制模块(BCM)和/或导航和/或多媒体音频系统。
未来世代的处理系统,特别是汽车应用专用的微控制器,将显示出复杂性的显著增加,这主要是由于功能性(诸如新协议、新功能等)的数目不断增加以及有关系统操作条件的限制(诸如较低的功耗、增加的计算能力和速度等)更加严格的缘故。
图2示出了示例性数字处理系统10(诸如微控制器)的框图,该系统可以用作图1的任何处理系统10。
在所考虑的示例中,处理系统10包括经由软件指令编程的至少一个处理单元102,诸如微处理器,通常是中央处理单元(CPU)。通常,由处理单元102执行的软件被存储在程序存储器104中,诸如非易失性存储器,诸如闪存或EEPROM。通常,存储器104可以与处理单元102集成在单个集成电路中,或者存储器104可以是单独的集成电路的形式,并且例如经由印刷电路板的迹线连接到处理单元102。因此,通常,存储器104包含用于处理单元102的固件,其中术语固件包括微处理器的软件和诸如FPGA之类的可编程逻辑电路的编程数据。
在所考虑的示例中,处理单元102可以具有从以下组中选择的相关联的一个或多个(硬件)资源106:
-一个或多个通信接口IF,例如,用于经由通信系统20交换数据,诸如通用异步接收器/传送器(UART)、串行外围设备接口总线(SPI)、内置集成电路(I2C)、控制器局域网(CAN)总线和/或以太网接口和/或调试接口;和/或
-一个或多个模数转换器AD和/或数模转换器DA;和/或
-一个或多个专用数字组件DC,诸如硬件定时器和/或计数器、或加密协处理器;和/或
-一个或多个模拟组件AC,诸如比较器、传感器,诸如温度传感器等;和/或
-一个或多个混合信号组件MSC,诸如PWM(脉冲宽度调制)驱动器。
因此,数字处理系统10可以支持不同的功能性。例如,处理单元102的行为由存储在存储器104中的固件确定,例如待由微控制器10的微处理器102执行的软件指令。因此,通过安装不同的固件,相同的硬件(微控制器)可以用于不同的应用。
图3示出了经由串行外围接口(SPI)在两个处理系统101与102之间进行通信的示例,即,处理系统10的通信接口IF是SPI通信电路30。例如,这种SPI通信接口常常用于将微控制器10连接到外围电子设备,例如安装在同一印刷电路板(PCB)上或经由电缆连接到微控制器10。
在本领域中众所周知,在SPI通信中,设备中的一个设备(例如设备101)是主设备,另一个设备(例如102)是从设备,并且设备101和102之间的通信基于具有四个信号(例如,这些信号被施加到相应的管芯/集成电路封装的相应的焊盘/引脚,并经由相应的导体(诸如PCB的导线或迹线)进行交换)的总线20,尤其是:
-由主设备101提供的时钟信号SCK;
-由主设备101提供的第一数据信号SOUT,通常称为“主输出从输入”,表示主设备101的数据输出和从设备102的数据输入;
-由从设备102提供的第二数据信号SIN,通常称为“主输入从输出”,表示主设备101的数据输入和从设备101的数据输出;
-由主设备101提供的外围芯片选择信号PCS,通常称为“从选择”。
因此,SPI是一种全双工串行通信协议。
例如,图4示意性示出了可能的SPI通信。在给定时间t0,将从选择信号PCS去断言为无效,并且被设置为指示通信/从设备被禁用(空闲状态)的第一逻辑电平(例如高)。在时刻t1,主设备101将信号PCS设置为指示通信/从设备被启用的第二逻辑电平(例如低)。然后,在时刻t2与时刻t3之间的传送阶段器件,主设备101在时钟信号SCK中生成给定的第一数目的脉冲,并且对于信号SCK中的每个时钟脉冲,将信号SOUT设置为高电平或低电平,从而顺序传送由位序列组成的传送数据字。因此,从设备102可以例如响应于时钟信号SCK而对信号SOUT进行采样。可选地,主设备101然后可以等待从设备12完成给定操作(诸如,响应于所传送的命令)。在时刻t4与时刻t5之间的接收阶段期间,主设备101然后可以在时钟信号SCK中生成给定的第二数目的脉冲。响应于该时钟脉冲,从设备102将信号SIN的逻辑电平设置为高电平或低电平,从而将由位序列组成的接收数据字顺序传送到主设备101。因此,主设备101可以例如响应于时钟信号SCK而对信号SIN进行采样。一旦该传送完成,主设备101在时刻t6再次将信号PCS设置为指示通信/从设备被禁用的第一逻辑电平(例如高)。通常,由于通信是全双工的,因此主设备和从设备也可以同时传送数据。
图5示出了也可以将多个从设备102、103和104连接到相同的主设备101,特别是相同的通信接口30,其中每个从设备102、103和104包括用于与主设备101交换信号SCK、SOUT和SIN的端子,即信号SCK、SOUT和SIN被共享,并且每个从设备102、103和104可以包括连接到主设备101的相应从选择端子的从选择端子PCS,即主设备101生成多个从选择信号PCS1、PCS2、PCS3,每个从设备102、103和104有一个从选择信号,即从选择信号PCS是专用信号。通常,从选择信号PCS1、PCS2、PCS3可以直接由接口电路30和/或经由处理电路102执行的软件命令来生成,例如,通过使用处理系统的通用I/O引脚(GPIO)来生成。
虽然SPI通信在本领域中是众所周知的,但是不幸的是,已经使用了大量实现方式变型。例如,一个或多个以下参数通常可以在各种从设备之间变化:
-从主设备101传送到从设备102的位数,即传送数据字的长度(也可以根据传送到从设备的命令而变化)和/或由主设备101从从设备102接收的位数,即接收数据字的长度(也可以根据发送给从设备的命令而变化);
-信号SCK支持的时钟频率或时钟频率范围;
-时钟极性,即空闲状态下时钟信号SCK的逻辑电平;以及
-时钟相位,即从设备是否响应于时钟信号SCK的上升沿或下降沿传送数据。
因此,当多个从设备102、103和104连接到主设备101时,每次数据传送可以需要对主设备101的接口30进行相应的重新配置,以便与相应的从设备102、103或104正确地交换数据。
通常,SPI通信接口30包括接口32,处理电路102可以通过该接口与SPI接口32交换数据。这样的接口32常常是寄存器接口,其中接口32与在处理电路102的存储器范围中的给定地址相关联。
过去还提出了所谓的排队串行外围设备接口(QSPI),其中接口32包括用于跨SPI总线20传输数据的数据队列。通常,在这种情况下,接口32包括:第一(传送,TX)存储器320,诸如先进先出(FIFO)存储器,在该存储器中存储要传送的数据;以及第二(接收,RX)存储器322,诸如FIFO存储器,在该存储器中存储接收到的数据。因此,在这种情况下,处理电路102可以通过配置SPI接口30,(顺序地)将数据存储到TX存储器320,并且可选地(顺序地)从RX存储器322读取接收到的数据,来经由接口32与从设备交换数据。
因此,也如图6所示,SPI接口30可以用于与多个从设备102…106通信。由于可能不同的特点和/或相应从选择信号的生成,单独的通信必须由主设备101来管理。因此,从SPI接口30的实现角度来看,与多个不同的从设备102…106的通信可以相当复杂。
此外,发明人已经观察到,通常优选地经由相应的软件模块/任务(例如用于与从设备102…106进行通信的任务SWT1…SWT5)来管理与给定从设备102…106的通信。通常,每个任务可以指例如由这样的操作系统OS执行的操作系统OS或应用APP的活动。
然而,当使用单个SPI通信接口30时,由处理电路102执行的不同软件任务可以必须与接口32交换数据,诸如存储器320和322。
发明人已经观察到,可以通过在处理系统10内提供多个SPI接口来解决该问题。但是,该解决方案可能是不可行的,这是因为每个SPI接口都需要处理系统10的四个引脚。
图7在这方面示出了典型的软件架构。通常,由微处理器102执行的软件包括操作系统OS,该操作系统被配置为执行至少一个应用APP。通常,操作系统OS包括驱动器DRV,该驱动器允许使用处理系统10的给定硬件资源HW,诸如资源106,诸如SPI通信接口30。例如,驱动器DRV可以管理与SPI接口30的通信,例如,通过向操作系统OS和/或(一个或多个)应用APP提供给定的软件功能,这允许了SPI接口30的配置,传送数据以及读取接收到的数据。然后,由驱动器DRV可以将这些软件命令转换为访问SPI通信接口的接口32的命令,例如,以便对相应寄存器接口32的寄存器进行编程。
发明人已经观察到,由处理电路102执行的操作系统OS的这种硬件驱动器DRV因此可以管理用于上层软件层(诸如,操作系统OS或应用APP)的不同虚拟软件接口,并且然后使用单个硬件SPI接口IF来执行配置和数据交换。但是,这有数个缺点。例如,一方面,这可以涉及安全性问题,因为例如每个软件任务SWT都可以访问SPI接口30的寄存器,从而可以读取与另一任务SWT相关联的数据。此外,每个软件任务SWT都能够与所有从设备交换数据,而在一些情况下,优选的是给定的软件任务SWT仅可以与给定的从设备交换数据。另一方面,驱动器DRV必须能够管理并行的写入/读取请求。例如,并行传送请求暗示必须做出决定:哪个任务SWT可以传送第一数据。然而,当使用例如排队SPI 30时,接口32仅包括单个传送队列320。因此,为了还管理不同的通信优先级,驱动器DRV将需要管理附加的虚拟队列。因此,所有这些软件仿真接口都将需要额外的处理能力和存储器空间。
发明内容
鉴于上述情况,本公开的各种实施例的目的是提供改善的用于SPI通信接口的解决方案。
根据一个或多个实施例,借助于包括排队串行外围设备接口的处理系统来实现上述一个或多个目的,该排队外围设备接口具有以下权利要求中具体阐述的特征。实施例还涉及相关的集成电路、设备和方法。
权利要求是本文提供的本公开的技术教导的组成部分。
如前所述,本公开的各种实施例涉及一种处理系统,诸如微控制器,其包括数字处理电路和SPI电路,该数字处理电路优选地根据存储到非易失性存储器的固件而可编程。在各种实施例中,SPI电路包括硬件SPI通信接口、仲裁器和多个接口电路。
在各个实施例中,硬件SPI通信接口包括:一个或多个移位寄存器,该移位寄存器被配置为通过对第二串行数据信号进行采样,根据传送数据字和接收数据字来生成第一串行数据信号;以及控制电路,被配置为生成针对一个或多个移位寄存器的时钟信号。在各个实施例中,仲裁器被配置为将传送数据字提供给硬件SPI通信接口,并且从硬件SPI通信接口接收接收数据字。
在各个实施例中,每个接口电路包括传送FIFO存储器、接收FIFO存储器和接口控制电路。具体而言,接口控制电路被配置为从数字处理电路接收一个或多个第一数据分组,并且将接收到的一个或多个第一数据分组存储到传送FIFO存储器。接下来,接口控制电路从传送FIFO存储器顺序读取一个或多个第一数据分组,从一个或多个第一数据分组中提取至少一个传送数据字,并且将该提取的至少一个传送数据字提供给仲裁器。继而,接口控制电路从仲裁器接收接收数据字,并且将一个或多个第二数据分组存储到接收FIFO存储器,一个或多个第二数据分组包括接收到的接收数据字。最终,接口控制电路从接收FIFO存储器中顺序读取一个或多个第二数据分组,并且将一个或多个第二数据分组传送到数字处理电路。
在各个实施例中,一个或多个第一数据分组包括命令,命令后跟随至少一个传送数据字,其中该命令包括用于存储指示数据传输计数的数据的字段,该数据传输计数标识在该命令后跟着的传送数据字的数目。在这种情况下,接口控制电路可以被配置为从一个或多个第一数据分组中提取命令,确定数据传输计数,从一个或多个第一数据分组中提取由数据传输计数指示的传送数据字数目,并且将提取的传送数据字提供给仲裁器。
例如,在各个实施例中,SPI电路包括用于指定多个传送属性项的一组全局配置寄存器,其中每个传送属性项包括用于存储数据传输计数的相应字段,并且其中命令包括指示传送属性项中的一个传送属性项的字段。在这种情况下,每个传送属性项还可以包括一个或多个字段,用于存储以下至少一项:指示时钟信号的定时的数据;指示时钟信号的非活动状态的数据;指示一个或多个移位寄存器是否响应于时钟信号的上升沿或下降沿而生成第一串行数据信号和/或对第二串行数据信号进行采样的数据;以及指示要经由第一串行数据信号传送的传送数据字的位数的数据。
在各个实施例中,命令还可以包括其他配置数据。例如,在各个实施例中,控制电路被配置为生成多个从选择信号,并且命令可以包括指示在相应传送数据字的传送期间应该设置哪个从选择信号的数据。在各个实施例中,命令还可以包括指示提供给仲裁器的相应提取的传送数据字的优先级的数据。相反,在其他实施例中,每个接口电路包括相应的一组单独配置寄存器,其中每组单独配置寄存器包括一个或多个字段,该字段用于存储指示被提供给仲裁器的相应提取的传送数据字的优先级的数据。
因此,在各个实施例中,SPI电路可以包括用于配置硬件SPI通信接口和/或仲裁器的全局配置寄存器,并且每个接口电路可以包括相应的一组用于配置相应接口电路的单独配置寄存器。在这种情况下,数字处理电路的地址范围中的相应存储器地址范围可以与这组全局配置寄存器和这组单独配置寄存器相关联,并且处理系统可以被配置为针对由数字处理电路所执行的给定软件任务限制存储器地址范围的访问。
例如,在各个实施例中,数字处理电路被配置为执行(因此,也可以执行)提供多个执行环境的管理程序,其中每个执行环境被配置为执行相应操作系统。因此,在这种情况下,管理程序可以被配置为限制对执行环境的存储器地址范围的访问。
在各个实施例中,SPI电路还可以经由DMA请求与数字处理单元交换数据。例如,在各个实施例中,处理系统包括:存储器,连接到数字处理电路;以及DMA控制器,被配置为根据经由第一DMA通道接收的数据读取请求从存储器读取数据,并且根据经由第二DMA通道接收到的数据写入请求将数据存储到存储器。在这种情况下,SPI电路可以包括被配置为与DMA控制器通信的DMA接口,并且至少一个接口电路的接口控制电路可以被配置为经由DMA接口通过向DMA控制器发送数据读取请求来接收一个或多个第一数据分组,以及经由DMA接口通过向DMA控制器发送数据写入请求来传送一个或多个第二数据分组。
具体而言,在各个实施例中,至少一个接口电路包括相应的一组单独配置寄存器,用于配置传送FIFO存储器中的空闲条目的第一阈值和接收FIFO存储器中的填充条目的第二阈值。在这种情况下,至少一个接口电路的接口控制电路可以被配置为确定在传送FIFO存储器中的空闲条目的数目是否超过第一阈值,并且当在传送FIFO存储器中的空闲条目的数目超过第一阈值时,经由DMA接口将数据读取请求发送给DMA控制器。相似地,至少一个接口电路的接口控制电路可以被配置为确定在接收FIFO存储器中的填充条目的数目是否超过第二阈值,并且当接收FIFO存储器中的填充条目的数目超过第二阈值时,经由DMA接口将数据写入请求发送给DMA控制器。
附图说明
现在将参考附图来描述本公开的实施例,这些附图仅通过非限制性示例的方式提供,在附图中:
图1示出了包括多个处理系统的电子系统的示例;
图2示出了诸如微控制器的处理系统的示例;
图3示出了在主设备与从设备之间的SPI通信的示例;
图4示出了经由SPI通信交换的数据的示例;
图5示出了在主设备与多个从设备之间的SPI通信的示例;
图6示出了多个软件任务的示例,这些软件任务使用相同的SPI通信接口来与多个从设备进行通信;
图7示出了由处理系统执行的软件的软件层的示例;
图8示出了根据本公开的SPI通信接口的实施例;
图9示出了由处理系统执行的软件的软件层的第一实施例;
图10示出了由处理系统执行的软件的软件层的第二实施例;
图11示出了根据本公开的处理系统的实施例;
图12示出了由处理系统执行的软件的软件层的第三实施例;
图13示出了根据本公开的处理系统的另一实施例;
图14至图18、图20至图37和图39示出了SPI通信接口的实施例的各种配置寄存器;
图19示出了SPI通信的属性的配置的实施例;
图38、图40和图41示出了提供给SPI通信接口的数据分组和从SPI通信接口接收的数据分组的实施例;以及
图42示出了SPI通信接口的控制电路的操作的实施例。
具体实施方式
在以下描述中,给出了许多具体细节以提供对实施例的透彻理解。可以在没有一个或数个具体细节的情况下或者可以用其他方法、组件、材料等实践实施例。在其他情况下,未详细示出或描述公知的结构、材料或操作,以避免使实施例的各方面晦涩难懂。
在整个说明书中,对“一个实施例”或“实施例”的提及意味着结合该实施例描述的特定特征、结构或特点被包括在至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特点。
本文提供的标题仅是为了方便,并不解释实施例的范围或含义。
在下面的图8至图42中,已经参照图1和图7描述的部分、元件或组件由先前在这些图中使用的相同附图标记表示;为了避免给本详细描述带来负担,下面将不再重复对这些前述元素的描述。
如前所述,本公开的各个实施例涉及SPI通信接口。具体而言,在各个实施例中,SPI通信接口向处理电路102提供多个接口,从而允许需要使用SPI接口的每个软件任务SWT可以使用SPI通信接口的相应接口。
图8示出了根据本公开的SPI接口电路30a的第一实施例。具体而言,在所考虑的实施例中,SPI接口30a包括给定数目(n+1)(例如n=7)个接口320…32n,其中每个接口32包括:相应传送队列3200…320n,用于存储相应传送数据分组TX0…TXn,诸如相应的FIFO存储器;以及相应接收队列3220…322n,用于存储接收的数据分组RX0…RXn,诸如相应的FIFO存储器。
在所考虑的实施例中,传送队列3200…320n和接收队列3220…322n连接到仲裁器34,仲裁器34被配置为确定应当将哪些传送数据提供给硬件SPI通信接口36。例如,在各个实施例中,硬件SPI通信接口36包括至少一个寄存器360,用于存储要经由信号SOUT传送的数据以及经由信号SIN接收的数据。例如,至少一个寄存器360可以包括一个或多个移位寄存器。具体而言,在所考虑的实施例中,使用单个移位寄存器360,其中移位寄存器360的串行输入被连接至信号SIN,并且移位寄存器360的串行输出被连接至信号SOUT。优选地,(一个或多个)移位寄存器360的并行接口用于(经由仲裁器34)在(一个或多个)寄存器360与队列320和322之间交换数据。
在所考虑的实施例中,硬件SPI通信接口36还包括控制电路362,其被配置为生成(串行)时钟信号SCK和给定数目(m+1)(例如m=12)个从选择信号PCS0…PCSm,以下也以数据向量PCS[m:0](例如PCS[11:0])的形式来标识从选择信号PCS0…PCSm
因此,在所考虑的实施例中,仲裁器34可以确定接口320…32n中的哪个接口被选择性地连接到硬件SPI通信接口36。例如,可以经由传送信号TX0将第一数据分组TX0,1提供到队列3200。在各个实施例中,经由各种信号TX和RX交换的数据分组具有给定的第一位数,诸如8、16、32或64位,并且寄存器360具有给定的第二位数,诸如8、16、32或64位。优选地,第一数字和第二数字对应,第二数字是第一数字的倍数,或者第一数字是第二数字的倍数。
在各个实施例中,为此目的,仲裁器34被配置为确定传送请求。例如,仲裁器34可以通过监测传送队列的填充状态来自动确定传送请求,诸如指示FIFO存储器是空的还是包括至少一个元素的空信号。附加地或备选地,请求传送的电路可以设置相应的传送请求信号,诸如硬件或软件传送请求触发信号。
因此,响应于传送请求,仲裁器34将队列连接到寄存器360,从而将第一数据分组TX0,1存储在寄存器360中。通常,为了填充寄存器360,可以从队列3200中读取仅一部分或多个数据分组。但是,如前所述,优选地,寄存器360具有存储到队列320/322的每个数据分组的尺寸,其优选地对应于处理电路102的字长。
因此,一旦数据已被存储到寄存器360中,优选地,经由对寄存器360的并行写入访问,控制电路362可以生成时钟信号SCK并且设置至少一个从选择信号PCS[m:0]。为此,如下文将更详细描述的,控制电路362可以具有关联的以下项:
-针对所有接口320…32n共用的一组全局配置寄存器;和/或
-针对每个接口320…32n的一组单独配置寄存器。
例如,给定接口320…32n的单独寄存器可以包括标识时钟信号SCK的请求属性、要设置的从选择信号PCS[m:0]和/或要传送的位数的数据。
因此,响应于该配置,控制电路362可以生成给定的第一数目的时钟脉冲,用于顺序传送经由信号SOUT存储到寄存器360的数据的位等级。如果被请求,则控制电路362然后可以生成给定的第二数目的时钟脉冲,以对信号SIN的位等级进行采样,并且将接收到的位顺序地存储到(一个或多个)寄存器360。
例如,假设利用给定从设备的SPI传送是基于包括16位的请求,这16位用于请求具有16位的数据,则接口30a可以被配置为传送具有16位的数据字。接下来,第一传送数据分组可以包括请求,并且第二传送数据分组可以包括默认数据,诸如具有被设置为“1”或“0”的所有比特的位序列。因此,响应于两个传送数据分组的传送,SPI接口36将提供包括默认数据(诸如被设置为“1”或“0”的位序列)的第一接收数据分组以及包括根据传送的请求所确定的数据的第二接收数据分组。
一旦将接收到的数据存储到(一个或多个)寄存器360中,仲裁器34就可以将数据存储到接收队列3220。具体而言,由于SPI通信基于主-从通信,所以仅由接口36响应于先前的请求而接收数据,这也可以通过设置从选择信号来暗示。因此,所接收的数据被唯一地链接到由给定接口32执行的给定传送请求。
在这方面,图9示出了修改后的软件架构的实施例。具体而言,同样在这种情况下,由微处理器102执行的软件包括被配置为执行至少一个应用APP的操作系统OS。同样在这种情况下,操作系统OS可以包括驱动器DRV,该驱动器DRV允许使用处理系统10的给定硬件资源106,诸如资源106,包括SPI通信接口30a,诸如用于一个或多个资源106的一个或多个驱动器DRVx
然而,在这种情况下,驱动器DRV可以包括多个驱动器DRV0…DRVn,其中每个驱动器DRV0…DRVn被配置为:例如,通过向操作系统OS和/或(一个或多个)应用APP提供给定的软件功能(这允许SPI接口30的配置)来管理与相应接口320…32n的通信,传送数据以及读取接收到的数据。然后,这些软件命令可以由相应驱动器DRV转换为访问相应接口320…32n的命令。因此,在所考虑的实施例中,每个驱动器DRV0…DRVn只可以与相应的接口320…32n通信。
因此,各种软件任务,诸如应用APP0…APPn,可以使用相应的专用驱动器DRV0…DRVn
图10示出了修改后的软件架构的第二实施例。具体而言,在这种情况下,由微处理器102执行的软件包括管理程序HYP,诸如管理程序操作系统。
这样的管理程序HYP可以提供多个执行环境,诸如执行环境EEH以及一个或多个执行环境EEa、EEb等。具体而言,每个执行环境允许执行相应的操作系统。例如,执行环境EEH、EEa和EEb可以分别执行操作系统OSH、OSa和OSb。例如,执行环境EEH可以用于执行主机操作系统,该主机操作系统用于管理管理程序HYP的操作。相反,执行环境EEa和EEb可以用于执行相应的访客操作系统OSa和OSb。因此,每个操作系统EEH、EEa和EEb还可以包括相应的驱动层DRVH、DRVa和DRVb。类似地,管理程序HYP也可以包括驱动层HYP_DRV。
因此,在各个实施例中,可以例如经由主机环境EEH来配置管理程序HYP,以将接口320…32n的给定子集分配给每个执行环境EEH、EEa和EEb。例如,通过使用由处理单元102可寻址的接口320…32n,可以使用处理系统10的硬件存储器保护单元、或例如在管理程序HYP内实现的软件存储器保护单元,来确保每个执行环境只可以访问针对给定执行环境启用的接口320…32n的地址范围。因此,以这种方式,给定的软件任务,诸如应用,可以仅使用分配给相应执行环境的接口320…32n
此外,在各个实施例中,管理程序HYP还可以例如经由主机环境EEH来配置接口320…32n的一部分,以便例如针对每个接口320…32n指示可以设置哪个从选择信号PCS,从而指定给定的执行环境可以与哪个从设备进行通信。
在这方面中,图11示出了处理系统10a的可能实施例,特别是示出了在诸如微处理器的处理电路102与接口30a之间的数据流。在不失一般性的情况下,仅示出了两个接口320和321
具体而言,在所考虑的实施例中,处理电路102可以以任何适当的方式与存储器104(诸如,RAM)通信,例如,通过使用经由总线系统112传送的地址信号ADR和数据信号DAT。
在所考虑的实施例中,存储器104可以针对每个接口32包括相应的存储器区域,例如,B0和B1。此外,存储器区域的每个存储器区域包括分别用于存储要传送的数据的相应传送子区域/缓冲区BTX和用于存储接收的数据的接收子区域/缓冲区BRX,例如B0TX/B1TX和B0RX/B1RX。因此,处理电路102(或处理系统10的另一资源106)可以存储要传送到传送子区域BTX中的一个传送子区域(例如B0TX)的数据,并且可以从相应接收子区域BRX(例如B0RX)中读取接收到的数据。
在所考虑的实施例中,存储器104还经由合适的通信信道连接到接口30a,特别是传送和接收队列。具体而言,在各个实施例中,每个传送存储器子区域(例如B0TX和B1TX)经由相应的直接存储器访问(DMA)通道(例如CH01和CH11)连接到相应的传送队列(例如3200和3201),并且每个接收存储器子区域(例如B0RX和B1RX)经由相应的DMA通道(例如CH02和CH12)连接到相应的接收队列(例如3220和3221)。因此,在各个实施例中,在存储器104和接口30a之间的数据交换是基于分开的DMA通道的。
如图11所示,在各个实施例中,处理电路102还可以与接口30a的一个或多个配置寄存器REGG、REG0和REG1通信。例如,可以经由上述总线112,例如通过使用地址信号ADR和数据信号DAT,来执行与这些寄存器的通信。例如,在各个实施例中,给定的地址范围可以与存储器104(特别是存储器子区域BTX和BRX)以及接口30a的寄存器相关联。具体而言,在所考虑的实施例中,与寄存器相关联的地址范围包括:
-与多个寄存器REGG相关联的第一地址范围,用于交换接口30a的全局/公共配置和/或状态数据;以及
-针对接口320…32n中的每个接口,与多个相应寄存器(例如REG0和REG1)相关联的相应地址范围,用于与相应接口(例如320和321)交换配置和/或状态数据。
因此,处理电路102的存储器控制器(诸如,用于生成地址信号ADR和数据信号DAT)或由处理电路102执行的管理程序HYP和/或操作系统OS可以通过以下方式限制对接口320…32n的访问:通过限制对与存储器子区域BTX和BRX、全局寄存器REGG和单独寄存器(REG0和REG1)相关联的地址或地址范围的访问。
例如,图12示出了地址范围的组织的实施例。具体而言,在所考虑的实施例中,处理电路102再次使用地址信号ADR和数据信号DAT来访问全局寄存器REGG和单独寄存器,例如所考虑的示例中的八个寄存器REG0…REG7。例如,在所考虑的实施例中,使用以下地址:针对寄存器REGG的0x0000…0x00FF、针对寄存器REG0的0x0100…0x01FF、针对寄存器REG1的0x0200…0x02FF、针对寄存器REG2的0x0300…0x03FF等。通常,也可以将固定偏移量添加到这些地址。
因此,通过将每个执行环境的存储器访问限制到给定的地址范围,可以将每个全局寄存器REGG和单独寄存器分配到给定的驱动器,例如,前面提到的驱动器HYP_DRV、DRVH、DRVa和DRVb,诸如:
-管理程序HYP具有(特享)访问权限,并且可以访问与全局寄存器REGG相关联的地址范围(例如0x0000…0x00FF),以及可选地,管理程序HYP还可以访问与单独寄存器相关联的地址范围(例如0x0100…0x08FF);
-每个执行环境或甚至由执行环境执行的每个软件任务都可能无法访问与全局寄存器REGG相关联的地址范围(例如0x0000…0x00FF),而只可以访问与单独寄存器的相应子集相关联的地址范围的子集(例如0x0100…0x01FF和0x0300…0x3FF),同时被禁止访问其他接口32的地址范围。
如前所述,访问控制可以通过硬件或软件存储器保护来增强,该保护可以通过以下项配置:
a)管理程序,可选地经由用于配置管理程序的主机环境,从而限制对执行环境EEH、EEa、EEb的给定接口321…32n的访问,和/或
b)由给定的执行环境EEH、EEa、EEb执行的操作系统OSH、OSa、OSb,从而限制对由相应操作系统OSH、OSa、OSb执行的软件任务的给定接口321…32n的访问。
如前所述(例如参见图8),多个接口321…32n可通过经由仲裁器/调度器34与硬件SPI通信接口36交换数据,来使用相同的硬件SPI通信接口36。
如前所述,优选地,仲裁是基于优先级执行的。在各个实施例中,可以例如通过以下至少一种方式来指定优先级:
-通过将第一优先级数据存储在全局寄存器REGG中,从而例如经由管理程序HYP为每个接口321…32n指定优先级;
-通过将第二优先级数据存储在单独寄存器REG1…REG7中,其中为每个接口321…32n指定优先级;例如,经由给定操作系统执行的驱动器;以及
-通过将第三优先级数据与要传送的相应数据一起存储在传送缓冲区BTX中,其中,例如经由给定操作系统执行的驱动器,为要传送的每个数据分组或数据分组序列指定优先级。
因此,在各个实施例中,在具有单个操作系统的常规软件环境(图9)和虚拟/管理程序环境(图10)二者中,所提出的SPI接口电路32a都可以由独立的软件任务使用。在各个实施例中,可以针对每个执行环境和/或每个软件任务来控制对分开的接口321…32n的访问。此外,可以直接在硬件层34上执行优先级处理,例如,根据标识执行环境的数据、软件任务(例如链接到给定的从设备)、甚或请求数据传送的单个传送来执行。
在各个实施例中,与给定接口321…32n相关联的寄存器和全局寄存器REGG被分组在连续的地址范围内,这简化了对这些相应寄存器的存储器访问的实现方式。
在下文中,现在描述SPI通信接口电路32a的可能的详细实现方式。这样的电路32a可以具有以下一个或多个特征:
-接口32a可以被配置为主设备或从设备;
-支持多达给定数目的传输组/接口32,诸如八个接口320…327,其中每个传输组/接口32可以支持以下一项或多项:
-在TX和RX FIFO 320和322中具有给定条目的数目的缓冲操作;
-与TX和RX队列320和322的DMA接口;
-传送可以经由软件控制和/或基于由处理系统的另一硬件资源(例如引脚/焊盘或资源106)生成的至少一个(可编程的)硬件触发来发起;
-可以提供接收到的数据的状态,其可以包括以下一项或多项:奇偶校验错误、CRC错误、队列结束状态、所使用的芯片选择信号、时间戳;
-可以支持突发模式,其中传送帧包括多个要传送的数据分组;
-在用于确定要传输的下一帧的传输组之间的基于优先级的仲裁;
-可编程的全局和/或单独SPI传送属性,诸如:
-可编程时钟极性和相位;
-可编程延迟,例如在信号PCS与时钟信号SCK之间的延迟(在时刻t1与t2和/或在t5与t6之间的延迟)、和/或在一帧内数据分组之间的延迟;
-要传送/接收的帧的数据分组的可编程大小,诸如在4位与32位之间。
图13示出了SPI通信接口30a的实施例,其再次包括给定数目的接口320…32n、以及仲裁器34和硬件SPI传送器/接收器电路36,其中每个接口320…32n包括传送队列320和接收队列322。
如前所述,SPI接口电路32a经由适当的通信接口连接到处理电路102。例如,在所考虑的实施例中,SPI接口电路32a包括:
-被配置为管理多个DMA通道DMA_Tx和DMA_Rx的DMA接口300,其中每个传送队列320和接收队列322可以具有相关联的相应DMA通道;以及
-总线从接口302,被配置为将SPI接口30a连接到处理系统10的总线系统112,例如用于连接到处理系统102。
例如,在各个实施例中,总线从接口302和DMA接口300遵循高级微控制器总线架构(AMBA),其中DMA接口300经由DMA控制器108连接到AMBA或AMBA高性能总线(AHB)112,并且总线从接口302是连接到APB总线的高级外围总线(APB)从设备,该APB总线又经由桥接电路110连接到AMBA或AHB总线。在这种情况下,处理电路102连接到AMBA或AHB总线140。类似地,一个或多个存储器104可以经由一个或多个存储器控制器104a连接到总线112。例如,存储器可以是处理电路102的非易失性程序存储器或易失性存储器104b,诸如随机存取存储器(RAM)。
在所考虑的实施例中,每个接口320…32n包括相应的传送队列3200…320n和相应的接收队列3220…322n。在各个实施例中,每个接口320…32n还包括相应的接口控制电路3240…324n,其被配置为管理与仲裁器34的数据交换。具体而言,如将在下面更详细地描述的,每个控制电路324被配置为读取相应传送队列320的内容并且提取命令CMD和要传送的相应数据DATA,即(诸如,经由DMA控制器108和DMA接口300)处理电路102(或请求数据的传送的任何其他电路)向相应的接口32提供一个或多个数据分组,这些数据分组被存储到相应的传送队列320中,其中一个或多个数据分组包括命令CMD和相应的数据DATA。因此,控制电路324可以被配置为提取命令和数据,并且将该信息提供给仲裁器34。例如,这在图13中示意性地示出,其中接口320…32n将命令信号CMD0…CMDn和数据信号DATA0…DATAn提供给仲裁器34。相反,仲裁器34将选择的命令CMD和数据DATA提供给硬件SPI接口36。因此,硬件SPI接口根据命令CMD传送数据DATA,并且可选地接收相应的数据RXDATA,该数据被转发到仲裁器34。在所考虑的实施例中,仲裁器34因此将接收到的数据RXDATA提供给接口320…32n
在各个实施例中,硬件SPI接口36可以经由诸如可配置交叉开关的路由电路114连接到处理系统10的引脚/焊盘。
在各个实施例中,每个接口320…32n还可以包括触发管理电路3260…326n,其被配置为例如:
-从处理系统10的另一电路接收触发信号TIN,并且向仲裁器发信号通知传送请求;和/或
-响应于传送/接收的完成,生成触发信号TOUT。
在各个实施例中,每个接口320…32n还可以包括时间戳管理电路3280…328n。具体而言,该时间戳管理电路328可以被配置为:响应于传送的开始(如由触发管理电路326发信号通知或者优选地如仲裁器34发信号通知的实际传送开始)或数据接收的结束(由仲裁器34发信号通知),来存储时间戳信号TIME。
通常,当电路32a被配置为主设备时,上述操作适用。然而,在各个实施例中,电路32a也可以被配置为从设备。因此,在这种情况下,硬件SPI接口36可以生成启用信号EN,其指示已经接收到数据RXDATA,并且这些数据应该被存储到预定队列,例如队列3200。例如,当在从模式下被操作时,硬件SPI通信电路36可以监测从选择信号PCS[0]和信号SCK,并且当经由从选择信号PCS[0]启用时,SPI通信电路36可以响应于时钟信号SCK存储信号SIN的逻辑电平。
因此,在所考虑的实施例中,电路30a提供用于缓冲SPI序列的多个队列接口320…32n。每个队列表示传输组,并且实现FIFO与外部设备之间进行的数据传送和接收。如以下将更详细描述的,TX FIFO 320可以被配置为存储SPI命令和要被传输的数据,而RXFIFO322缓冲传入的串行数据。在各个实施例中,队列的条目的数目和/或每个条目的位数可以是可配置的。
在各个实施例中,更长的SPI序列也可以被存储在SPI接口电路30a外部的存储器中,例如存储器104b。在这种情况下,在存储器与SPI接口电路30a之间的数据传输可以通过DMA控制器108和/或经由处理电路102执行的软件指令自动完成。
具体而言,在各个实施例中,SPI接口30a支持主模式和从模式。在主模式下,接口32a启动并且控制串行通信。在这种模式下,时钟信号SCK和从选择信号PCS[m:0]被配置为由接口30a输出,并且被配置为由接口30a生成。在SPI主模式下,要传送的每个SPI帧可以包括与相应数据DATA相关联的命令CMD,其允许逐帧地指定给定的传输属性。相反,帧的数据DATA从传送FIFO 320加载到传送移位寄存器360中,并且在串行输出引脚SOUT上被移出。同时,在串行输入引脚SIN上输入的串行数据在接收移位寄存器360(也可能对应传送移位寄存器)中被移位,并且作为数据条目被存储在接收FIFO 322中。
相反,在各个实施例中,从模式可以允许SPI接口30a与SPI总线主设备进行通信。在这种模式下,SPI接口30a响应于外部控制的串行传输。SCK信号和给定的从选择信号(例如PCS[0])被配置为输入,并且由SPI总线主设备驱动。在这种情况下,某些传输属性(诸如时钟极性、时钟相位和帧大小)也可以是可编程的。
因此,在各个实施例中,当作为主设备操作时,传送FIFO 320被配置为接收包括以下内容的帧:
-包括命令CMD的第一条目;以及
-包括要传送的数据的一个或多个条目。
在各个实施例中,在主模式和从模式二者下,接收FIFO 322都被配置为接收包括一个或多个条目的帧,该条目包括接收的数据。如以下将更详细描述的,可选地,每个帧或每个接收到的数据分组还可以包括最后一个条目,该最后一个条目包括指示接收到的数据的状态的状态RxSTATUS。
如上所述,在各个实施例中,SPI接口30a可以包括一组全局寄存器REGG和一组单独寄存器REG0…REGn,以便控制SPI接口30a(特别是仲裁器34和硬件SPI通信接口)的操作。优选地,这些寄存器可经由总线从接口302(例如经由相应的地址)访问。
例如,在各个实施例中,全局寄存器REGG可以包括一个或多个以下寄存器:
-MCR:模块配置寄存器;
-HW_CONFIG_STATUS:硬件配置状态寄存器;
-GLOBAL_STATUS:全局状态寄存器;
-GLOBAL_IRQ_CTRL:全局中断控制寄存器;
-GLOBAL_IRQ_STATUS:全局中断状态寄存器;
-TAC[k:0]:一组传输属性控制寄存器,其中一个或多个寄存器TAC(诸如两个寄存器TAC_L和TAC_H)与每个接口320…32n相关联;以及
-MONITOR_SLAVE_SELECT:监测从选择寄存器。
相反,每个接口320…32n可以具有关联的单独寄存器REG0…REGn,其可以包括队列控制、状态和(可选地)中断寄存器。例如,队列控制、状态和中断寄存器可以包括一个或多个以下寄存器:
-Q_SETUP:队列设置寄存器;
-Q_HW_CFG:队列硬件配置寄存器;
-Q_STATUS:队列状态寄存器;
-Q_CTRL:队列控制寄存器;
-Q_IRQ_CTRL:队列中断控制寄存器;以及
-Q_IRQ_STATUS:队列中断状态寄存器;
在各个实施例中,每个接口320…32n还可以具有相关联的其他可选的单独寄存器REG0…REGn,诸如一个或多个以下寄存器:
-队列FIFO推入/弹出寄存器;
-队列调试寄存器;以及
-队列CRC寄存器。
例如,在各个实施例中,队列FIFO推入寄存器Q_TxFIFO_PUSH和队列FIFO弹出寄存器Q_RxFIFO_POP可以被用于临时存储要存储到传送FIFO 320的(经由接口300接收的)数据以及从接收FIFO存储器322读取的(要经由接口300传送的)数据。出于调试目的,因此访问这些寄存器可以很有用。
通常,这些寄存器还可以用于将数据分组直接传送到给定接口32(例如通过将数据存储到寄存器Q_TxFIFO_PUSH,然后将数据写入相应的传送FIFO 320),并且从给定接口32读取数据分组(例如通过从寄存器Q_RxFIFO_POP读取数据,然后通过从接收FIFO 322读取新的数据分组来重新填充该寄存器)。因此,在各个实施例中,在处理电路102与接口30a之间的(要传送或接收的数据帧的)数据交换可以直接经由给定队列的寄存器Q_TxFIFO_PUSH和Q_RxFIFO_POP完成,或者间接经由相应的缓冲区BTX和BRX以及使用DMA传输来完成。
相反,队列调试寄存器可以包括一个或多个以下寄存器:
-Q_TxFIFO_PTR:队列传送FIFO指针寄存器;
-Q_RxFIFO_PTR:队列接收指针寄存器。
附加地或备选地,FIFO存储器320和322的完全调试也是可能的,这可以包括对FIFO存储器320和/或322的每个条目的读取和/或写入访问。例如,在各个实施例中,队列调试寄存器还可以包括以下寄存器:
-Q_DEBUG_PTR:队列调试指针寄存器;
-Q_DEBUG_TxFIFO_DATA:传送寄存器的队列调试数据(经由信号指针Q_DEBUG_PTR选择);以及
-Q_DEBUG_RxFIFO_DATA:接收寄存器的队列调试数据(经由信号指针Q_DEBUG_PTR选择)。
在各个实施例中,队列调试寄存器还可以包括指示最后或正在进行的命令CMD的队列命令寄存器Q_DEBUG_TxFIFO_CMD。
如前所述,在各个实施例中,硬件SPI接口还可以被配置为选择性地执行错误验证操作,诸如对接收到的数据的奇偶校验或CRC验证。在这种情况下,队列CRC寄存器可以包括一个或多个以下寄存器:
-Q_CRC_CFG:队列CRC配置寄存器;
-Q_CRC_INIT:队列CRC初始化寄存器;
-Q_CRC_POLY:队列CRC多项式寄存器;
-Q_CRC_TX:队列CRC传送寄存器;以及
-Q_CRC_RX:队列CRC接收寄存器。
下面将描述上述寄存器的可能实现方式。通常,该描述仅用于说明的范围,以便示出可以如何实现SPI接口30a的给定功能的配置。然而,一个或多个配置寄存器或其字段可以纯粹是可选的(因为相应的配置也可以固定在硬件级别),该配置也可以用其他寄存器实现,或者这些寄存器的字段可以被以不同的方式组织。类似地,将通过示例的方式示出哪些条目是可读取的和/或可写入的(用“R”和“W”横向指示),以及用“Reset”指示的相应位的可能重置值。
例如,图14示出了模块配置寄存器MCR的实施例。在所考虑的实施例中,寄存器MCR包括以下字段(由接口30a相应地处理):
-MSTR:允许选择SPI接口30a在主模式还是从模式下操作;
-CONT_SCKE:允许选择时钟信号SCK是不连续的(即仅在帧传输期间生成)还是连续的;
-PCS_DEFAULT_LEVEL:允许选择每个从选择信号的非活动电平,例如PCS[x]非活动电平为0或1;
-SAFE_SPI_MODE:允许选择是否启用SafeSPI模式;
-SAMPLE_POINT:允许指定SPI主机何时对信号SIN进行采样并且生成信号SOUT;
-MTFE:允许指定是启用还是禁用修改的定时格式;
-DEBUG_FREEZE:允许指定是否响应于调试请求而停止SPI接口30a的传送/接收操作;
-LOOPBACK_EN:允许启用或禁用内部环回,其中信号SIN有选择地(内部)连接到信号SOUT;
-CRC_ERR_STOP:允许指定在发生CRC错误时是否中断数据传送;
-PAR_ERR_STOP:允许指定在发生奇偶校验错误时是否中断数据传送;
-MODULE_EN:允许启用或禁用SPI接口30a。
如前所述,字段SAMPLE_POINT允许指定信号SIN和SOUT的传输格式。例如,在各个实施例中(如下所述),可以经由用于每个接口300…30n的相应字段CPOL和CPHA,例如经由寄存器TAC_H中的相应标志(在下文中将更详细地描述)来指定时钟极性和相位。在这种情况下,字段SAMPLE_POINT可以仅指定信号SIN和SOUT的属性。例如,当对于给定的300…30n,将标志CPHA设置为低时,硬件SPI接口36可以根据字段SAMPLE_POINT的以下位值对信号SIN进行采样并且驱动信号SOUT:
-00:在偶数SCK沿上采样SIN,并且在奇数SCK沿上驱动SOUT;以及
-01:在偶数SCK沿之前的一个系统时钟采样SIN,并且在奇数SCK沿之后的一个系统时钟驱动SOUT。
相反,当针对给定的300…30n将标志CPHA设置为高时,硬件SPI接口36可以根据字段SAMPLE_POINT的以下位值对信号SIN进行采样以及驱动信号SOUT:
-00:在奇数SCK沿上采样SIN,并且在偶数SCK沿上驱动SOUT;
-01:在奇数SCK沿之前的一个系统时钟采样SIN,并且在偶数SCK沿之后的一个系统时钟驱动SOUT。
图15示出了硬件配置状态寄存器HW_CONFIG_STATUS的实施例。在所考虑的实施例中,寄存器HW_CONFIG_STATUS包括以下(只读)字段(由接口30a相应地生成):
-NUM_TAC:提供在设计期间固定的传送属性控制(TAC)寄存器的数目;
-NUM_QUEUES:提供在设计时固定的接口320…32n的数目。
图16示出了全局状态寄存器GLOBAL_STATUS的实施例。在所考虑的实施例中,寄存器GLOBAL_STATUS包括以下(只读)字段(其由接口30a相应地生成):
-QUEUE_NUM:为每个接口320…32n指定是报告状态(1)还是不报告状态(0);
-SPIQ_STATUS:提供状态消息,诸如:
-IDLE(000):所有队列均处于空闲状态。
-RUNNING(001):正在进行SPI传输
-WAIT_TRIGGER(010):无正在进行的SPI传输,所有已启用的队列都在等待触发
-SUSPENDED(011):所有队列处于挂起状态;
-ERROR(111):至少一个队列正在报告错误状态(诸如UNDERFLOW、STALLED、FIFO欠载运行、FIFO溢出、奇偶校验错误、CRC错误、触发溢出错误)。
图17示出了全局中断控制寄存器GLOBAL_IRQ_CTRL的实施例。在所考虑的实施例中,寄存器GLOBAL_IRQ_CTRL包括以下字段(其由接口30a相应地处理):
-ERR_IRQ_EN:允许为每个单独接口320…32n启用或禁用错误中断;
-STATUS_IRQ_EN:允许为每个单独接口320…32n启用或禁用状态中断。
图18示出了全局中断状态寄存器GLOBAL_IRQ_STATUS的实施例。在所考虑的实施例中,寄存器GLOBAL_IRQ_STATUS包括以下(只读)字段(其由接口30a相应地生成):
-ERR_IRQ_STATUS:为每个单独接口320…32n提供错误中断值;
-STATUS_IRQ:为每个单独接口320…32n提供状态中断值。
如前所述,在各个实施例中,硬件SPI接口的配置基于给定的传送属性。具体而言,如图19所示,在各个实施例中,代替在命令字段CMD中指定所有传送属性,SPI接口30a包括具有已存储的给定传输属性的多个寄存器TAC[k:0],并且命令字段CMD仅包括已经存储了寄存器TAC[k:0]中的一个的编号i的字段TAC_NUM,即i=0…k。
例如,在各个实施例中,每个寄存器TAC[k:0]由两个可寻址寄存器TAC_L[k:0]和TAC_H[k:0]实现。
图20和21示出了寄存器TAC_L[k:0]和TAC_H[k:0]的实施例。在所考虑的实施例中,每个寄存器TAC_L[k:0]包括以下字段(其由接口30a相应地处理):
-DBR,PBR和BR:允许指定波特率,即时钟信号SCK的频率;
-PLD和LD:允许指定在从选择信号PCS的断言与SCK的第一沿之间的延迟,例如以信号SCK的周期数为单位;
-PTD和TD:允许指定信号SCK的最后沿与从选择PCS取反之间的延迟,例如以信号SCK的周期数为单位;
-PNFD和NFD:允许指定帧结束时从选择信号PCS取反与下一帧开始时从选择信号PCS断言之间的延迟,例如以信号SCK的周期数为单位;
-PIWD和IWD:允许以连续的PCS选择模式来指定在字的末位传输与下一个字的首位传输之间的延迟,例如以信号SCK的周期数为单位。
在所考虑的实施例中,每个寄存器TAC_H[k:0]包括以下字段:
-CPOL:允许选择串行通信时钟(SCK)的非活动状态,即高或低;
-CPHA:允许选择信号SCK的哪个沿导致数据发生改变以及信号SCK的哪个沿导致数据被捕获,即,(一个或多个)寄存器360的时钟信号,例如,低可以指示信号SIN在信号SCK的前/上升沿被捕获而信号SOUT在随后的(下降)沿被改变,而高可以指示信号SOUT在信号SCK的前/上升沿被改变而信号SIN在随后的(下降)沿被捕获;
-LSBFE:允许选择(一个或多个)寄存器360的移位方向,即,数据是先传送MSB的(0)还是先传送LSB的(1);
-SCK_DISABLE_CYCLES:允许指定在信号SCK的极性设置与从选择信号PCS断言之间的延迟,例如以信号SCK的周期数为单位;
-FMSZ:允许选择每帧传输的位数,例如4位到32位之间;
-DTC:允许指定每个命令条目的数据传输计数,即命令后的数据字的数目,例如在1到65536之间。
图22还示出了当SPI接口30a作为从设备操作时寄存器TAC_H(例如寄存器TAC_H[0])的实施例,在下文中将其标识为TAC_H_SLAVE。具体而言,与图21相比,在这种情况下,不使用字段LSBFE、SCH_DISABLE_CYCLES和DTC,但是寄存器可以包括以下字段:
-PE:允许选择启用还是禁用每帧奇偶校验位传送和接收;
-PP:允许指定奇偶校验的极性,例如,被设置为“1”的位数是偶数还是奇数,其中,当根据接收到的帧计算的奇偶校验不对应于字段PP时,控制电路362可以将字段Q_IRQ_STATUS中的相应标志设置为状态PAR_ERR。
图23示出了监测器从选择寄存器MONITOR_SLAVE_SELECT的实施例。具体而言,该寄存器可用于指定是否将监测器SPI(诸如错误记录模块)与相应的从选择号一起连接至其中一个从选择线。例如,在所考虑的实施例中,每个寄存器MONITOR_SLAVE_SELECT包括以下字段:
-MONITOR_SPI_CONNECTED:允许指定是否连接了监测器SPI模块;
-MONITOR_SPI_SLAVE_SELECT:允许为每个从选择线PCS[k:0]指定是否将监测器SPI模块连接到相应的从选择线。
例如,寄存器MONITOR_SLAVE_SELECT的内容可以被处理电路102或处理系统10的错误检测/收集模块用来自动发送状态和/或错误消息给外部监测器SPI模块。
因此,先前的寄存器实质上允许指定硬件SPI通信电路36的全局配置以及一系列预定的传送配置TAC[k:0]。可选地,寄存器还可以提供附加的状态和配置信息。除了这些寄存器之外,每个接口320…32n还可以具有相关联的单独寄存器REG0…REGn。
例如,图24示出了队列设置寄存器Q_SETUP的实施例。例如,在所考虑的实施例中,每个寄存器Q_SETUP包括以下字段(其由接口30a相应地处理):
-PRIORITY:允许指定接口320…32n的优先级,例如在0(最低)与n(最高)之间;
-TIMESTAMP_NOT_TRANSFER_CNT:允许指定SPI接口30a是否响应于数据的接收而对时间戳TIME进行采样(另请参见时间戳管理电路328的描述)、并且将时间戳存储到状态字段RxSTATUS,或者将传输计数存储到状态字段RxSTATUS;
-Rx_STATUS_EN:允许指定是否在每次接收数据后将字段RxSTATUS添加到接收FIFO 322;
-HW_TRIG_OUT_WIDTH:允许指定经由相应队列的电路326生成的触发信号TOUT的属性,诸如触发信号被设置为高期间的时钟周期数;
-RxDMA_EN:允许指定当接收FIFO 322中的条目的数目超过给定阈值RxFIFO_THRESHOLD时,接收FIFO 322是否应经由DMA控制器300生成DMA请求;
-RxFULL_STALL_EN:允许指定当接收FIFO 322已满时是否应该暂停硬件SPI接口36的传送操作;
-RxFIFO_THRESHOLD:允许标志RxDMA_EN的操作的阈值;
-TxDMA_EN:允许指定当传送FIFO 320中的条目的数目降至给定阈值TxFIFO_THRESHOLD以下时,传送FIFO 320是否应当经由DMA控制器300生成DMA请求;
-HW_TRIG_EDGE:允许指定是在信号TIN的上升沿还是下降沿触发数据的传送(请参见触发电路326的说明);
-HW_TRIG_EN:允许指定是经由软件触发还是经由硬件触发(即经由信号TIN)开始队列的传送。
-TxFIFO_THRESHOLD:允许指定标志TxDMA_EN操作的阈值。
因此,在各个实施例中,每个接口320…32n可以自动请求要传送的新数据和/或经由接口300生成的DMA请求来传送接收到的数据,即,每个接口320…32n可以直接从存储器104/104b读取要传送的数据,并且将接收到的数据写到存储器104/104b,而无需处理电路102的干预。
图25示出了队列硬件配置寄存器Q_HW_CFG的实施例。例如,在所考虑的实施例中,每个寄存器Q_HW_CFG包括以下(只读)字段(其由接口30a相应地生成):
-RxFIFO_DEPTH:指示接收FIFO 322中的条目的数目,诸如2至32个字;
-TxFIFO_DEPTH:指示传送FIFO 320中的条目的数目,诸如2至32个字。
图26示出了队列状态寄存器Q_STATUS的实施例。例如,在所考虑的实施例中,每个寄存器Q_STATUS包括以下(只读)字段:
-TRANSFER_COUNT:指示SPI传输计数器的值,每次传送SPI帧的最后一位时,该值都会由硬件SPI接口36递增,并且,当在相应的命令字段CMD中设置字段CLR_COUNTER时,在帧开始时重置为零;
-Q_STATUS:指示队列的状态,诸如IDLE、RUNNING、WAIT_TRIGGER、SUSPENDED、UNDERFLOW或STALLED;
图27示出了队列控制寄存器Q_CTRL的实施例。例如,在所考虑的实施例中,每个寄存器Q_CTRL包括以下字段(其由接口30a相应地处理):
-Q_FLUSH:允许重置队列320和322以及状态寄存器Q_STATUS;
-Q_SW_TRIG:允许经由处理电路102执行的软件命令来发起传送,即,该标志表示软件触发。
图28示出了队列中断控制寄存器Q_IRQ_CTRL的实施例。例如,在所考虑的实施例中,每个寄存器Q_IRQ_CTRL包括以下字段(即,接口30a可以被配置为检测一个或多个相应事件):
-PARITY_ERR_IRQ_EN:根据检测到奇偶校验错误,允许启用或禁用中断的生成;
-CRC_ERR_IRQ_EN:响应于检测到CRC错误,允许启用或禁用中断的生成;
-TRIG_OVERRUN_ERR_IRQ_EN:响应于检测到触发溢出,允许启用或禁用中断的生成;
-COMM和_ERR_IRQ_EN:响应于检测到命令错误(即包括无效数据的命令CMD),允许启用或禁用中断的生成;
-EOS_IRQ_EN:响应于检测到包括多个帧的序列结束,允许启用或禁用中断的生成;
-FRAME_END_IRQ_EN:响应于检测到帧结束,允许启用或禁用中断的生成;
-RXFIFO_OVERRUN_IRQ_EN:响应于检测到接收FIFO溢出,允许启用或禁用中断的生成;
-RXFIFO_UNDERRUN_IRQ_EN:响应于检测到接收FIFO欠载运行,允许启用或禁用中断的生成;
-RXFIFO_FULL_IRQ_EN:响应于检测到完整接收FIFO,允许启用或禁用中断的生成;
-RXFIFO_EMPTY_IRQ_EN:响应于检测到空接收FIFO,允许启用或禁用中断的生成;
-RXFIFO_THRESH_IRQ_EN:响应于检测到接收FIFO中的条目的数目超过了先前描述的阈值,允许启用或禁用中断的生成;
-TXFIFO_OVERRUN_IRQ_EN:响应于检测到传送FIFO溢出,允许启用或禁用中断的生成;
-TXFIFO_UNDERRUN_IRQ_EN:响应于检测到传送FIFO欠载运行,允许启用或禁用中断的生成;
-TXFIFO_FULL_IRQ_EN:响应于检测到完整传送FIFI,允许启用或禁用中断的生成;
-TXFIFO_EMPTY_IRQ_EN:响应于检测到空传送FIFO,允许启用或禁用中断的生成;以及
-TXFIFO_THRESH_IRQ_EN:响应于检测到传送FIFO中的条目的数目低于先前描述的阈值,允许启用或禁用中断的生成。
图29示出了队列中断状态寄存器Q_IRQ_STATUS的实施例。例如,在所考虑的实施例中,每个寄存器Q_IRQ_STATUS包括以下字段(即,接口30a可以被配置为基于寄存器Q_IRQ_CTRL的启用标志来生成一个或多个以下中断):
-PARITY_ERR:SPI奇偶校验错误标志,其在已经接收到具有奇偶校验错误的SPI帧(由SPI接口36检测到)时被设置;
-CRC_ERR::SPI CRC错误标志,其在已经接收到具有CRC不匹配的SPI帧(由SPI接口36检测到)时被设置;
-TRIG_OVERRUN_ERR:硬件触发溢出错误标志,当先前的硬件触发已经挂起而发生硬件触发时被设置;
-COMM和_ERR:命令错误,例如,其在命令条目字段CMD的值TAC_NUM大于相应硬件参数配置时被设置。
-EOS:序列结束标志,例如,其在帧的最后一位在字段EOS中具有命令字段CMD(其包括序列结束指示)时被设置;
-FRAME_END:帧结束中断,其在每个帧结束时被设置;
-RXFIFO_OVERRUN_ERR:当接收FIFO 322已满并且准备好将新数据写入FIFO 322时,设置此标志;
-RXFIFO_UNDERRUN_ERR:当读取接口试图从空接收FIFO320读取数据时,设置此标志;
-RXFIFO_FULL:当接收FIFO 322已满时,设置此标志。
-RXFIFO_EMPTY:当接收FIFO 322为空时,设置此标志。
-RXFIFO_THRESH:当接收FIFO 322中的条目的数目大于或等于接收FIFO阈值时,设置此标志。
-TXFIFO_OVERRUN_ERR:当传送FIFO 320已满并且另一个字被写入寄存器TxFIFO_PUSH时,设置此标志;
-TXFIFO_UNDERRUN_ERR:当传送FIFO 320为空并且为下一个字传输选择了队列时,设置此标志;
-TXFIFO_FULL:当传送FIFO 320已满时,设置此标志。
-TXFIFO_EMPTY:当传送FIFO 320为空时,设置此标志。
-TXFIFO_THRESH:当传送FIFO 320中的空闲条目的数目大于或等于传送FIFO阈值时,设置此标志。
如前所述,在各个实施例中,与传送FIFO 320和接收FIFO 322的通信是通过分别例如经由接口302或DMA接口302,将数据存储到FIFO推入寄存器Q_TxFIFO_PUSH和队列FIFO弹出寄存器Q_RxFIFO_POP、以及从FIFO推入寄存器Q_TxFIFO_PUSH和队列FIFO弹出寄存器Q_RxFIFO_POP读取数据来进行的。
在各个实施例中,每个传送FIFO 320因此可以管理当将数据从寄存器Q_TxFIFO_PUSH传输到传送FIFO 320时增加的写指针TxFIFO_WR_PTR、以及当将数据传输到仲裁器34时增加的读指针TxFIFO_RD_PTR。基于这些指针,传送FIFO 320还可以生成信号TxFIFO_ACTIVE_ENTRIES,该信号指示传送FIFO 320中尚未传送的条目的数目。
类似地,在各个实施例中,每个接收FIFO可以管理当将数据从仲裁器34传输到接收FIFO 322时增加的写指针RxFIFO_WR_PTR、以及当将数据从接收FIFO 320传输到寄存器Q_RxFIFO_POP时增加的读指针RxFIFO_RD_PTR。基于这些指针,接收FIFO 322还可以生成信号RxFIFO_ACTIVE_ENTRIES,该信号指示接收FIFO 320中尚未读取的条目的数目。
如前所述,在各个实施例中,出于调试目的,这些寄存器和参数中的一项或多项可以是可读取的。例如,图30和图31示出了与每个接口32相关联的Q_TxFIFO_PTR和Qn_RxFIFO_PTR的实施例,这允许读取以下数据:
-TxFIFO_ACTIVE_ENTRIES;
-TxFIFO_WR_PTR;
-TxFIFO_RD_PTR;
-RxFIFO_ACTIVE_ENTRIES;
-RxFIFO_WR_PTR;以及
-RxFIFO_RD_PTR。
通常,如前所述,这些寄存器与由传送和接收FIFO使用的实际参数有关。在各个实施例中,接口30a还可以支持调试接口,该调试接口允许向FIFO(320、322)提供相应的读取指针,以便读取FIFO的相应内容。例如,为此,可以使用前面提到的队列调试寄存器。
最后,如前所述,在各个实施例中,接口30a,特别是硬件SPI接口36,也可以是可配置的,以便执行错误校验操作,诸如奇偶校验或CRC校验。然而,当执行CRC校验时,通常使用参考多项式来计算CRC码。为了正确地管理CRC计算,接口30a因此可以包括前面提到的寄存器Q_CRC_CFG、Q_CRC_INT、Q_CRC_POLY、Q_CRC_TX和Q_CRC_RX(它们由接口30a相应地处理)。
图32示出了队列CRC配置寄存器Q_CRC_CFG的实施例。例如,在所考虑的实施例中,每个寄存器Q_CRC_CFG包括以下字段:
-INV_OUT:允许指定所计算的最终CRC值是否应反转;
-CRC_SIZE:允许指定CRC字段的维度,诸如3位到32位。
图32示出了队列CRC配置寄存器CRC初始化寄存器的实施例,其允许指定初始值CRC_INI(基于经由字段CRC_SIZE选择的维度)用于CRC的计算。
图34示出了队列CRC多项式寄存器Q_CRC_POLY的实施例,其通过将相应位设置为高或低来允许多项式CRC_POLY(基于经由字段CRC_SIZE选择的维度)。例如,多项式x3+x+1可以对应于序列“1011”。
因此,如图35和36所示,接口30a还可以为每个接口32提供已经存储了当前CRC计算的值的相应寄存器Q_CRC_TX和Q_CRC_RX。因此,控制电路362可以包括CRC处理电路,该CRC处理电路被配置为分别根据初始值Q_CRC_INT、多项式CRC_POLY以及传送或接收的数据来计算值Q_CRC_TX和Q_CRC_RX。
因此,在各个实施例中,先前描述的寄存器允许执行接口36和接口32的配置,特别是关于传送属性TAC[k:0]。此外,寄存器可以可选地用于执行接口36和/或接口32(例如队列320和322)的调试。在这方面,在各个实施例中,数据的传送通过将包括命令CMD和数据DATA的帧存储到接口32的传送FIFO 320而发生。
具体而言,在各个实施例中,每个队列包括:
-例如具有32位的传送命令和数据FIFO 320,其中存储到FIFO320的数据DATA的要传送的位数可以是可配置的,例如在1到32之间;
-例如具有32位的接收数据FIFO,其中存储在FIFO 322中的接收到的数据RXDATA的位数可以是可配置的,例如在1到32之间;
-由电路326管理的可选硬件触发输入TIN;
-由电路326管理的可选硬件触发输出TOUT;
-由DMA接口300管理的传送DMA接口,可以将其配置为在传送FIFO具有给定数目的空闲条目时生成DMA请求信号;
-由DMA接口300管理的接收DMA接口,可以将其配置为在接收FIFO具有给定数目的填充条目时生成DMA请求信号;
-由电路328管理的可选时间戳输入,可以将其配置为将时间戳存储到状态RxStatus。
具体而言,每个传送FIFO 320具有给定数目的(固定)条目,这些条目也可以存储到Q_HW_CONFIG寄存器中或在手册中指定。写入传送FIFO的(诸如32位)条目形成帧的一部分,该帧包括一系列数据分组,该数据分组包括命令CMD和一个或多个数据值DATA。如前所述,在各个实施例中,每个命令条目CMD指向具有数据传输计数(DTC)字段的传送属性控制(TAC)寄存器中的一个传送属性控制(TAC)寄存器。该字段确定用于相应帧的数据条目的数目,例如,DTC=0可以指定命令CMD具有与其相关联的一个数据字,并且DTC=i可以暗示针对每个命令条目的i+1个数据条目。通常,代替在TAC寄存器中指定字段DTC,字段DTC也可以构成命令字段CMD的一部分。
例如,图37示出了命令CMD的实施例。例如,在所考虑的实施例中,每个命令CMD包括以下字段(其由接口30a相应地处理):
-CONT_PCS和DEASSERT_PCS_AFTER_DTC:允许指定在帧和/或每个帧的每个数据字结束后是否将从选择信号PCS置为无效,这对于传送帧序列可能很有用,其中从选择信号仅在传送结束时才置为无效;
-TAC_NUM:允许指定其中一个传送属性控制寄存器TAC[k:0]将被用于在主模式下进行数据传输(在从模式下,可以使用给定的TAC,诸如TAC[0]));
-EOS:允许激活寄存器Q_IRQ_STATUS中的中断EOS的生成,即该标志指示当前SPI帧是序列中的最后一个;
-CLR_COUNTER:允许重置寄存器Q_STATUS中的传输计数器字段TRANSFER_COUNT;
-PARITY_EN:允许启用或禁用生成用于传送的奇偶校验位,并基于接收到的数据进行验证;
-PARITY_POLARITY:允许指定传送和检查的奇偶校验位的极性(另请参见寄存器Q_IRQ_STATUS中标志PARITY_ERR的描述);
-TRIG_OUT_CONDITION和TRIG_OUT_EN:允许指定是否以及何时生成触发信号TOUT,例如在帧的数据传输开始或结束时;
-SW_TRIGGER和WAIT_TRIGGER:允许指定是立即开始传送,还是基于寄存器Q_SETUP中字段HW_TRIG_EN的配置、响应于经由信号TIN发出信号通知的硬件触发或通过对寄存器Q_CTRL中的字段Q_SW_TRIG进行编程导致的分开的软件触发而开始传送;
-DATA_IN_RXFIFO:允许指定是否应将接收到的数据存储到接收FIFO存储器322中;
-BURST_MODE_EN:允许启用突发模式,该模式向仲裁器34发信号通知多个帧的序列不应被仲裁器34中断;
-CUMMULATIVE_CRC_DTC,CRC_TRANSMIT和CRC_EN:允许指定是否应计算CRC、是否以及何时传送计算得到的CRC,例如针对每个字、帧和/或帧序列;
-CRC_RST:允许指定CRC计算是否应从存储到字段CRC_INIT的值开始;以及
-PCS_EN:例如,通过为每个从选择信号PCS[m:0]指定相应位的值,允许选择应该断言哪个从选择信号。
如前所述,出于安全目的,给定接口32也可以被配置为仅与给定从设备交换数据。因此,在这种情况下,可以将相应字段PCS_EN与每个接口32相关联,并且可以将这些字段存储在全局寄存器中。
例如,在各个实施例中,相应的字段PCS_EN被存储在每个传送属性TAC[k:0]中。在这种情况下,接口30a还可被配置为:例如,通过将指示哪个接口32可以使用相应传送属性TAC的字段存储在每个传送属性TAC[k:0]中,来限制对一个或多个接口的传送属性TAC[k:0]的使用。
图38在这方面示出了存储到传送FIFO 320的条目的示例。具体而言,在所考虑的示例中,FIFO 320包括第一帧,该第一帧包括第一命令CMD0,该第一命令经由TAC_NUM指定传送属性TAC[0]。传送属性TAC[0]指示1个的数据字,例如DTC=0。因此,接口32期望帧包括一个数据字D0,该数据字被存储到FIFO 320中的一个条目中,在命令CMD0之后,即接口32从FIFO 320读取条目,该条目被提供给仲裁器34以进行传送。数据字D0之后是第二帧,该第二帧包括第二命令CMD1,该第二命令经由TAC_NUM指定传送属性TAC[2]。传送属性TAC[2]指示两个数据字,例如DTC=1。因此,接口32期望该帧包括两个数据字D1和D2,该数据字被存储到FIFO 320中的条目中,在命令CMD1之后,即,接口32从FIFO 320顺序读取两个条目,这些条目被提供给仲裁器34进行传送。类似地,随后的帧可以包括命令CMD2,该命令CMD2包括参考传送属性TAC[1]的数目TAC_NUM,例如指定三个数据字的传送。
如前所述,在各个实施例中,接口30a可以被配置为仅将接收到的数据或者在每个数据字之后将相应的状态条目RxFIFO存储到接收FIFO 322。例如,图39示出了数据分组RxFIFO的实施例。例如,在所考虑的实施例中,每个状态分组RxFIFO包括以下字段(其由接口30a相应地生成):
-PAR_ERR:指示接收到的数据字是否具有奇偶校验错误;
-CRC_ERR:指示接收到的数据字是否具有CRC错误;
-EOS:当响应于设置了标志EOS的命令CMD而已经接收到数据分组时,设置EOS;
-PCS_NUM:指示为接收的数据字设置的从选择信号;
-TIMESTAMP_OR_TRANSFER_COUNT:指示接收数据字的时间戳或传输计数(例如,经由寄存器Q_SETUP中的标志TIMESTAMP_NOT_TRANSFER_COUNT指定)。
因此,本文描述的实施例具有以下优点:各种接口32可以独立地使用,也可以具有不同的配置。例如,在各个实施例中,处理电路102可以例如经由软件指令被配置为经由以下步骤来配置SPI接口30a:
1.配置全局寄存器以设置操作模式(主或从)以及寄存器TAC[k:0]的一个或多个传送属性;
2.可选地为相应队列设置寄存器中的一个或多个传送和接收FIFO配置DMA阈值;
3.例如通过在寄存器MCR中设置字段MODULE_EN来启用接口30a;
4.一旦启用模块,处理电路102就可以与寄存器Q_TxFIFO_PUSH和Q_RxFIFO_POP交换数据,或者接口32自动生成DMA请求以从缓冲区BTX读取数据,并且基于读取的命令和数据进行SPI传输;
5.为了标记特定队列的结束,应当设置最后一帧的命令字段CMD的标志EOS。
例如,图40示出了一个示例,其中接口30a包括至少两个接口320和321,并且其中:
-接口320被配置为使用状态消息RxSTATUS,并且传送两个独立的帧,每个帧包括相应的命令CMD0、CMD1,其中命令CMD0使用指示一个数据字TxData0的传送的传送属性,并且命令CMD1使用指示一个数据字TxData1的传送的传送属性;以及
-接口321被配置为不使用状态消息RxSTATUS,并且传送两个独立的帧,每个帧包括相应的命令CMD0、CMD1,其中命令CMD0使用指示一个数据字TxData0的传送的传送属性并且命令CMD1使用指示一个数据字TxData1的传送的传送属性。
相反,图41示出了一个示例,其中接口30a再次包括至少两个接口320和321,并且其中:
-接口320被配置为使用状态消息RxSTATUS,并且传送链接帧的序列,每个链接帧包括相应的命令CMD0、CMD1,其中命令CMD0使用指示两个数据字TxData0、TxData1的传送的传送属性并且命令CMD1使用指示两个随后的数据字TxData2、TxData3的传送的传送属性;以及
-接口321被配置为不使用状态消息RxSTATUS,并且传送链接帧的序列,每个链接帧包括相应的命令CMD0、CMD1,其中命令CMD0使用指示三个数据字TxData0、TxData1、TxData2的传送的传送属性并且命令CMD1使用指示随后的数据字TxData3的传送的传送属性等。
图42总结了每个接口32的接口控制电路324的各个实施例的操作。
在开始步骤1000之后,接口控制电路324在步骤1002中接收一个或多个第一数据分组。如前所述,电路经由寄存器TxFIFO_PUSH接收数据。可选地,接口控制电路324可以在步骤1002中经由DMA接口300向DMA控制器108传送数据读取请求,该DMA控制器108又将接收到的数据存储到寄存器TxFIFO_PUSH。通常,为了生成DMA读取请求,接口控制电路324可以监测相应传送FIFO 320的填充状态。
接下来,在步骤1004中,接口控制电路324将接收到的一个或多个第一数据分组存储到相应传送FIFO存储器320,即,将数据分组从寄存器TxFIFO_PUSH传输到FIFO 320的写入接口。
一旦数据被存储到传送FIFO 320,则接口控制电路324在步骤1006中顺序地(经由传送FIFO 320的读取接口)从传送FIFO存储器320读取一个或多个第一数据分组,并且从该一个或多个第一数据分组提取至少一个传送数据字DATA以及可选地还有字命令CMD。
因此,在可选的验证步骤1008中,接口控制电路324可以例如根据硬件或软件触发来验证是否启用了传送。例如,在传送被禁用的情况下(验证步骤1008的输出“N”),接口控制电路324返回步骤1008。相反,在传送被启用的情况下(验证步骤1008的输出“Y”),接口控制电路324进入步骤1010。通常,该步骤是完全可选的,因为可以始终启用数据的传送。
在步骤1010中,接口控制电路326将至少一个提取的传送数据字DATA提供给仲裁器34。如前所述,仲裁器34例如基于与数据相关联的优先级选择由接口32提供的哪一个数据字必须要被传送,并且将所选择的数据字(或数据字序列)提供给硬件SPI接口36。
因此,在给定时间,硬件SPI接口36传送至少一个传送数据字DATA。为此,硬件SPI接口36可以包括一个或多个移位寄存器360,该移位寄存器被配置为根据传送数据字DATA生成第一串行数据信号SOUT,并且通过对第二串行数据信号SIN进行采样来生成接收数据字RXDATA。此外,硬件SPI接口36还可以包括控制电路362,该控制电路362被配置为生成用于一个或多个移位寄存器360的时钟信号SCK。如前所述,可以经由全局寄存器REGG、相应的单独寄存器REG0…REGn和/或命令CMD来指定用于传送的参数。因此,通常,尽管优选,但命令字段是完全可选的,因为还可以为每个接口32(全局)定义固定的传送属性TAC。
因此,一旦硬件SPI接口36已经传送了至少一个传送数据字DATA并且接收到接收数据字RXDATA,则硬件SPI接口36将接收数据字RXDATA提供给仲裁器34,即仲裁器34从硬件SPI通信接口36接收该接收数据字RXDATA,并且将接收数据字RXDATA转发到与所传送的至少一个传送数据字DATA相关联的接口32。
因此,在步骤1012中,接口控制电路326从仲裁器34接收该接收数据字(RXDATA)。
接下来,接口控制电路326在步骤1014中经由接收FIFO 322的写入接口将一个或多个第二数据分组存储到接收FIFO存储器322,其中该一个或多个第二数据分组包括接收到的接收数据字RXDATA。
因此,一旦数据可用,接口控制电路326就可以在步骤1016中将该一个或多个第二数据分组顺序传送到接收FIFO存储器322。如前所述,电路326可以经由接收FIFO 322的读取接口从接收FIFO322读取至少一个第二数据分组,并且将该至少一个第二数据分组传输到寄存器RxFIFO_PULL。接下来,接口控制电路326可以传送存储到寄存器RxFIFO_PULL的该至少一个第二数据分组,例如:
-响应于对寄存器RxFIFO_PULL的读取请求;或者
-通过经由DMA接口300向DMA控制器108传送数据写入请求。
一旦完成数据的传送/接收,接口控制电路326就可以返回到步骤1002以传送新的请求。
通常,虽然在图42中被示出为顺序操作,但实际上可以并行执行各个步骤,例如经由相应的硬件子电路,诸如:
-与FIFO 320的写入接口的操作有关的步骤1002和1004;
-与FIFO 320的读取接口和FIFO 322的写入接口的操作有关的步骤1006-1014;以及
-与FIFO 322的读取接口的操作有关的步骤1016。
如前所述,当多个队列请求传送相应的帧或帧序列(在突发模式下)时,仲裁器34必须决定首先传送哪个帧。
例如,如前所述,在各个实施例中,可以直接基于命令字段CMD、软件触发或硬件触发来(例如选择性地)请求帧的传送。
因此,在各个实施例中,仲裁器34被配置为确定已经请求数据的传送的队列。在各个实施例中,传送请求的优先级是基于为给定接口32设置的优先级,该优先级是在相应寄存器Q_SETUP的字段PRIORITY中指定的。但是,如前所述,也可以直接在命令字段CMD中指定优先级。
例如,在各个实施例中,一旦确定了与给定传送请求相关联的优先级,仲裁器34就被配置为选择具有最高优先级(例如具有最高(或者,可备选地,最低)值)的传送请求。
因此,仲裁器34将相应接口32的传送队列320和接收队列322连接到硬件SPI通信接口,从而基于全局配置、相应的单独配置、以及(可选地)存储到命令字段CMD的配置来发起数据的传送。
在这方面,如前所述,在将多个帧存储到给定的传送FIFO 320的情况下,突发模式标志BURST_MODE_EN可以指定是否可以通过传送具有更高优先级的另一帧来中断帧序列的传送。例如,在各个实施例中,仲裁器34被配置为:当满足以下条件中的一个条件时,中断帧序列中的帧的传送并且传送具有更高优先级的一个或多个帧:
-BURST_MODE_EN=0并且CONT_PCS=0
-BURST_MODE_EN=0并且(CONT_PCS=1并且DTC>0并且DEASSERT_PCS_AFTER_DTC=1)。
如图13中示意性所示,在各个实施例中,接口320…32n中的一个或多个接口还可以包括辅助接收队列330(除了接收队列322之外)。例如,在各个实施例中,仅为接口320提供辅助接收队列330,该接口320也是当SPI接口30a在从模式下被操作时使用的接口。例如,在各个实施例中,队列配置寄存器可以包括标志,该标志指定是否应将接收到的数据存储到接收FIFO 320和/或辅助接收队列330。该辅助接收队列330,诸如另外的FIFO存储器,对于经由信号AuxData将相应的数据直接提供给处理系统10的另一硬件电路可能是有用的,例如经由FIFO读取接口,从而绕过DMA接口300。在这种情况下,辅助接收队列330可以具有将对应的配置数据关联为接收FIFO 322,诸如以下至少一项:阈值(AuxFIFO_THRESHOLD)、指示FIFO位置的字段(AuxFIFO_DEPTH)、相应的中断启用标志(AUXFIFO_OVERRUN_IRQ_EN、AUXFIFO_UNDERRUN_IRQ_EN、AUXFIFO_FULL_IRQ_EN、AUXFIFO_FULL_IRQ_EN、AUXFIFO_FULL_IRQ_EN、AUXFIFO_THRESH_IRQ_EN)、中断标志(AUXFIFO_OVERRUN_ERR、AUXFIFO_UNDERRUN_ERR、AUXFIFO_UNDERRUN_ERR、AUXFIFO_EMPTY、AUXFIFO_THRESH)和调试寄存器。
因此,本公开涉及各个方面,这些方面提供了对已知的SPI接口的改善,这些方面可以分开使用或组合使用。
通常,本公开的SPI电路30a可以与任何数字处理电路102一起使用,优选地,可根据存储到非易失性存储器104的固件来编程的数字处理电路102,诸如微处理器。
在各个实施例中,SPI电路30a包括硬件SPI通信接口36、仲裁器34和多个接口电路320…32n
在各个实施例中,硬件SPI通信接口36包括一个或多个移位寄存器360,其被配置为通过对第二串行数据信号SIN进行采样来根据传送数据字DATA和接收数据字RXDATA生成第一串行数据信号SOUT。硬件SPI通信接口36还包括控制电路362,其被配置为生成用于一个或多个移位寄存器360的时钟信号SCK。
在各个实施例中,仲裁器34被配置为将传送数据字DATA提供给硬件SPI通信接口36,并且从硬件SPI通信接口36接收接收数据字RXDATA。
在各个实施例中,每个接口电路320…32n包括传送FIFO存储器320、接收FIFO存储器322和接口控制电路324。具体而言,在各个实施例中,接口控制电路324被配置为从数字处理电路102接收一个或多个第一数据分组,并且将接收到的该一个或多个第一数据分组存储到传送FIFO存储器320。接下来,接口控制电路324从传送FIFO存储器320顺序读取该一个或多个第一数据分组,从该一个或多个第一数据分组中提取至少一个传送数据字DATA,并且将提取的该至少一个传送数据字DATA提供给仲裁器34。接口控制电路324又从仲裁器34接收接收数据字RXDATA,并且将一个或多个第二数据分组存储到接收FIFO存储器322,其中该一个或多个第二数据分组包括接收到的接收数据字RXDATA。最后,接口控制电路324从接收FIFO存储器322顺序读取该一个或多个第二数据分组,并且将该一个或多个(读取的)第二数据分组传送到数字处理电路102。
根据本公开的第一方面,接口控制电路324不仅从一个或多个第一数据分组中提取至少一个传送数据字DATA,而且还提取命令CMD。具体而言,在各个实施例中,该命令指示将用于传送至少一个传送数据字DATA的SPI通信的属性。更具体而言,在各个实施例中,命令包括对多个可配置的传送属性TAC中的一个的参考。
根据本公开的第二方面,SPI电路30a包括多个配置寄存器,其中全局寄存器REGG用于配置硬件SPI通信接口36和/或仲裁器34,并且单独寄存器REG0…REGn用于配置每个接口电路320…32n。在各个实施例中,处理系统被配置为经由硬件和/或软件存储器访问控制器来限制对这些寄存器的访问。
根据本公开的第三方面,处理系统10包括:存储器104(或104b),连接到数字处理单元102;以及DMA控制器108,该DMA控制器108被配置为根据经由第一DMA通道DMA_Tx接收到的数据读取请求从存储器104读取数据并且根据经由第二DMA通道DMA_Rx接收到的数据写入请求将数据存储到存储器104。在这种情况下,SPI电路30a可以包括被配置为与DMA控制器108通信的DMA接口300。此外,接口控制电路324可以被配置为通过经由DMA接口300向DMA控制器108传送数据读取请求来接收一个或多个第一数据分组,并通过经由DMA接口300向DMA控制器108传送数据写入请求来传送一个或多个第二数据分组。因此,在这种情况下,数字处理单元102可以经由存储器104(或104b)间接地与SPI电路30a交换数据。在各个实施例中,处理系统10被配置为经由硬件和/或软件存储器访问控制器来限制对被布置为存储第一数据分组和第二数据分组的存储器区域的访问。
当然,在不损害本发明的原理的情况下,构造的细节和实施例可以相对于仅通过举例的方式在本文中描述和图示的内容大范围地变化,而不由此背离本发明的范围,本发明的范围由所附权利要求定义。

Claims (20)

1.一种处理系统,包括:
数字处理电路,根据存储在非易失性存储器中的固件而可编程;以及
串行外围接口SPI电路,包括:
硬件SPI通信接口,包括:
一个或多个移位寄存器,被配置为通过对第二串行数据信号进行采样,根据传送数据字和接收数据字来生成第一串行数据信号;以及
第一控制电路,被配置为针对所述一个或多个移位寄存器生成时钟信号;
仲裁器,被配置为将所述传送数据字提供给所述硬件SPI通信接口,以及从所述硬件SPI通信接口接收所述接收数据字;以及
多个接口电路,其中每个接口电路包括传送先进先出FIFO存储器、接收FIFO存储器以及接口控制电路,所述接口控制电路被配置为:
从所述数字处理电路接收一个或多个第一数据分组;
将接收到的所述一个或多个第一数据分组存储在所述传送FIFO存储器中;
从所述传送FIFO存储器顺序读取所述一个或多个第一数据分组;
从所述一个或多个第一数据分组提取至少一个传送数据字;
将提取的所述至少一个传送数据字提供给所述仲裁器;
从所述仲裁器接收所述接收数据字;
将一个或多个第二数据分组存储在所述接收FIFO存储器中,其中所述一个或多个第二数据分组包括接收到的所述接收数据字;
从所述接收FIFO存储器顺序读取所述一个或多个第二数据分组;以及
将所述一个或多个第二数据分组传送到所述数字处理电路。
2.根据权利要求1所述的处理系统,其中所述一个或多个第一数据分组包括命令,所述命令后跟随至少一个传送数据字,其中所述命令包括用于存储指示数据传输计数的数据的字段,所述数据传输计数标识所述命令后跟随的传送数据字的数目,并且其中所述接口控制电路被配置为:
从所述一个或多个第一数据分组提取所述命令;
确定所述数据传输计数;
从所述一个或多个第一数据分组提取由所述数据传输计数所指示的所述传送数据字的数目;以及
将提取的所述传送数据字提供给所述仲裁器。
3.根据权利要求2所述的处理系统,其中所述接口控制电路被配置为生成多个从选择信号,并且其中所述命令包括指示在相应的所述传送数据字的传送期间应该设置哪个从选择信号的数据。
4.根据权利要求2所述的处理系统,其中所述SPI电路包括用于指定多个传送属性项的全局配置寄存器集合,其中每个传送属性项包括用于存储所述数据传输计数的相应字段,并且其中所述命令包括指示所述传送属性项中的一个传送属性项的字段。
5.根据权利要求4所述的处理系统,其中每个传送属性项包括用于存储以下至少一项的一个或多个字段:
指示所述时钟信号的定时的数据;
指示所述时钟信号的非活动状态的数据;
指示所述一个或多个移位寄存器是否响应于所述时钟信号的上升沿或下降沿而生成所述第一串行数据信号和/或对所述第二串行数据信号进行采样的数据;或者
指示要经由所述第一串行数据信号传送的所述传送数据字的位数的数据。
6.根据权利要求1所述的处理系统,其中每个接口电路包括相应的单独配置寄存器集合,每个单独配置寄存器集合包括一个或多个字段,所述一个或多个字段用于存储指示被提供给所述仲裁器的相应的提取的所述传送数据字的优先级的数据。
7.根据权利要求1所述的处理系统,其中所述SPI电路包括用于配置所述硬件SPI通信接口和/或所述仲裁器的全局配置寄存器集合,并且其中每个接口电路包括用于配置相应的所述接口电路的相应的单独配置寄存器集合,并且其中在所述数字处理电路的地址范围中的相应存储器地址范围与所述全局配置寄存器集合以及所述单独配置寄存器集合相关联,并且其中所述处理系统被配置为针对由所述数字处理电路执行的给定软件任务,限制对所述存储器地址范围的访问。
8.根据权利要求7所述的处理系统,其中所述数字处理电路被配置为执行提供多个执行环境的管理程序,其中每个执行环境被配置为执行相应操作系统,并且其中所述管理程序被配置为针对所述执行环境,限制对所述存储器地址范围的访问。
9.根据权利要求1所述的处理系统,还包括:第一存储器,连接到所述数字处理电路;以及直接存储器访问DMA控制器,被配置为根据经由第一DMA通道接收的数据读取请求,从所述第一存储器读取数据,以及根据经由第二DMA通道接收的数据写入请求,将数据存储到所述第一存储器,并且其中所述SPI电路还包括被配置为与所述DMA控制器通信的DMA接口,并且其中至少一个接口电路的所述接口控制电路被配置为:
通过经由所述DMA接口向所述DMA控制器发送数据读取请求,来接收所述一个或多个第一数据分组,以及
通过经由所述DMA接口向所述DMA控制器发送数据写入请求,来传送所述一个或多个第二数据分组。
10.根据权利要求9所述的处理系统,其中所述至少一个接口电路包括相应的单独配置寄存器集合,所述单独配置寄存器集合用于配置在所述传送FIFO存储器中的空闲条目的第一阈值、以及在所述接收FIFO存储器中的填充条目的第二阈值,并且其中所述至少一个接口电路的所述接口控制电路被配置为:
确定在所述传送FIFO存储器中的空闲条目的数目是否超过所述第一阈值,并且当所述传送FIFO存储器中的所述空闲条目的数目超过所述第一阈值时,经由所述DMA接口将所述数据读取请求发送给所述DMA控制器;以及
确定在所述接收FIFO存储器中的填充条目的数目是否超过所述第二阈值,并且当所述接收FIFO存储器中的所述填充条目的数目超过所述第二阈值时,经由所述DMA接口将所述数据写入请求发送给所述DMA控制器。
11.根据权利要求1所述的处理系统,其中所述处理系统被布置在集成电路上。
12.一种设备,包括:
串行外围接口SPI从设备;以及
处理系统,被配置为经由SPI电路与所述SPI从设备交换数据,所述处理系统包括:
数字处理电路,根据存储在非易失性存储器中的固件而可编程;以及
所述SPI电路,包括:
硬件SPI通信接口,包括:
一个或多个移位寄存器,被配置为通过对第二串行数据信号进行采样,根据传送数据字和接收数据字来生成第一串行数据信号;以及
第一控制电路,被配置为针对所述一个或多个移位寄存器生成时钟信号;
仲裁器,被配置为将所述传送数据字提供给所述硬件SPI通信接口,以及从所述硬件SPI通信接口接收所述接收数据字;
多个接口电路,其中每个接口电路包括传送先进先出FIFO存储器、接收FIFO存储器以及接口控制电路,所述接口控制电路被配置为:
从所述数字处理电路接收一个或多个第一数据分组;
将接收到的所述一个或多个第一数据分组存储在所述传送FIFO存储器中;
从所述传送FIFO存储器顺序读取所述一个或多个第一数据分组;
从所述一个或多个第一数据分组提取至少一个传送数据字;
将提取的所述至少一个传送数据字提供给所述仲裁器;
从所述仲裁器接收所述接收数据字;
将一个或多个第二数据分组存储在所述接收FIFO存储器中,其中所述一个或多个第二数据分组包括接收到的所述接收数据字;
从所述接收FIFO存储器顺序读取所述一个或多个第二数据分组;以及
将所述一个或多个第二数据分组传送到所述数字处理电路。
13.根据权利要求12所述的设备,其中所述设备是车辆。
14.根据权利要求12所述的设备,其中每个接口电路包括相应的单独配置寄存器集合,每个单独配置寄存器集合包括一个或多个字段,所述一个或多个字段用于存储指示被提供给所述仲裁器的相应的提取的所述传送数据字的优先级的数据。
15.根据权利要求12所述的设备,其中所述SPI电路包括用于配置所述硬件SPI通信接口和/或所述仲裁器的全局配置寄存器集合,并且其中每个接口电路包括用于配置相应的所述接口电路的相应的单独配置寄存器集合,并且其中在所述数字处理电路的地址范围中的相应存储器地址范围与所述全局配置寄存器集合以及所述单独配置寄存器集合相关联,并且其中所述处理系统被配置为针对由所述数字处理电路执行的给定软件任务,限制对所述存储器地址范围的访问。
16.一种操作处理系统的方法,所述处理系统包括:数字处理电路,根据存储在非易失性存储器中的固件而可编程;以及串行外围接口SPI电路,包括:硬件SPI通信接口,包括:一个或多个移位寄存器,被配置为通过对第二串行数据信号进行采样,根据传送数据字和接收数据字来生成第一串行数据信号;以及第一控制电路,被配置为针对所述一个或多个移位寄存器生成时钟信号;仲裁器,被配置为将所述传送数据字提供给所述硬件SPI通信接口,并且从所述硬件SPI通信接口接收所述接收数据字;以及多个接口电路,每个接口电路包括传送先进先出FIFO存储器、接收FIFO存储器以及接口控制电路,所述方法包括:
从所述数字处理电路接收一个或多个第一数据分组;
将接收到的所述一个或多个第一数据分组存储到所述传送FIFO存储器中;
从所述传送FIFO存储器顺序读取所述一个或多个第一数据分组;
从所述一个或多个第一数据分组提取至少一个传送数据字;
将提取的所述至少一个传送数据字提供给所述仲裁器;
从所述仲裁器接收所述接收数据字;
将一个或多个第二数据分组存储到所述接收FIFO存储器中,所述一个或多个第二数据分组包括接收到的所述接收数据字;
从所述接收FIFO存储器顺序读取所述一个或多个第二数据分组;以及
将所述一个或多个第二数据分组传送到所述数字处理电路。
17.根据权利要求16所述的方法,其中所述一个或多个第一数据分组包括命令,所述命令后跟随至少一个传送数据字,其中所述命令包括用于存储指示数据传输计数的数据的字段,所述数据传输计数标识所述命令后跟随的传送数据字的数目,所述方法还包括:
从所述一个或多个第一数据分组提取所述命令;
确定所述数据传输计数;
从所述一个或多个第一数据分组提取由所述数据传输计数所指示的所述传送数据字的数目;以及
将提取的所述传送数据字提供给所述仲裁器。
18.根据权利要求17所述的方法,还包括:生成多个从选择信号,所述命令包括指示在相应的所述传送数据字的传送期间应该设置哪个从选择信号的数据。
19.根据权利要求16所述的方法,其中所述处理系统还包括:第一存储器,连接到所述数字处理电路;以及直接存储器访问DMA控制器,被配置为根据经由第一DMA通道接收的数据读取请求从所述第一存储器读取数据,以及根据经由第二DMA通道接收的数据写入请求将数据存储到所述第一存储器,所述SPI电路还包括被配置为与所述DMA控制器通信的DMA接口,并且针对至少一个接口电路,所述方法还包括:
通过经由所述DMA接口向所述DMA控制器发送数据读取请求,来接收所述一个或多个第一数据分组,以及
通过经由所述DMA接口向所述DMA控制器发送数据写入请求,来传送所述一个或多个第二数据分组。
20.根据权利要求19所述的方法,其中所述至少一个接口电路包括相应的单独配置寄存器集合,所述单独配置寄存器集合用于配置在所述传送FIFO存储器中的空闲条目的第一阈值、以及在所述接收FIFO存储器中的填充条目的第二阈值,并且所述方法还包括:
确定在所述传送FIFO存储器中的空闲条目的数目是否超过所述第一阈值,并且响应于在所述传送FIFO存储器中的所述空闲条目的数目超过所述第一阈值,经由所述DMA接口将所述数据读取请求发送给所述DMA控制器;以及
确定在所述接收FIFO存储器中的填充条目的数目是否超过所述第二阈值,并且响应于在所述接收FIFO存储器中的所述填充条目的数目超过所述第二阈值,经由所述DMA接口将所述数据写入请求发送给所述DMA控制器。
CN202110311738.XA 2020-03-25 2021-03-24 有排队串行外围接口的处理系统、集成电路、设备和方法 Pending CN113448902A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IT102020000006322 2020-03-25
IT102020000006322A IT202000006322A1 (it) 2020-03-25 2020-03-25 Sistema di elaborazione comprendente un’interfaccia periferica seriale con code, relativo circuito integrato, dispositivo e procedimento
US17/199,418 US11734221B2 (en) 2020-03-25 2021-03-11 Processing system comprising a queued serial peripheral interface, related integrated circuit, device and method
US17/199,418 2021-03-11

Publications (1)

Publication Number Publication Date
CN113448902A true CN113448902A (zh) 2021-09-28

Family

ID=77809216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110311738.XA Pending CN113448902A (zh) 2020-03-25 2021-03-24 有排队串行外围接口的处理系统、集成电路、设备和方法

Country Status (1)

Country Link
CN (1) CN113448902A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114006787A (zh) * 2021-12-31 2022-02-01 山东产研鲲云人工智能研究院有限公司 数据传输方法、设备以及计算机可读存储介质
CN115168282A (zh) * 2022-09-08 2022-10-11 江西萤火虫微电子科技有限公司 总线协议上配置数据处理方法、系统、设备及存储介质
CN116980362A (zh) * 2023-09-25 2023-10-31 北京紫光芯能科技有限公司 用于spi架构的多任务处理方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114006787A (zh) * 2021-12-31 2022-02-01 山东产研鲲云人工智能研究院有限公司 数据传输方法、设备以及计算机可读存储介质
CN115168282A (zh) * 2022-09-08 2022-10-11 江西萤火虫微电子科技有限公司 总线协议上配置数据处理方法、系统、设备及存储介质
CN116980362A (zh) * 2023-09-25 2023-10-31 北京紫光芯能科技有限公司 用于spi架构的多任务处理方法及装置
CN116980362B (zh) * 2023-09-25 2024-02-27 北京紫光芯能科技有限公司 用于spi架构的多任务处理方法及装置

Similar Documents

Publication Publication Date Title
US11734221B2 (en) Processing system comprising a queued serial peripheral interface, related integrated circuit, device and method
CN113448902A (zh) 有排队串行外围接口的处理系统、集成电路、设备和方法
US8103803B2 (en) Communication between a processor and a controller
EP3762830B1 (en) Debug controller circuit
EP1759299B1 (en) Bus controller for handling split transactions
JPH06511338A (ja) 並行パケットバスに関する方法及び装置
KR20130129388A (ko) 프로세서 모듈들 사이에서 데이터를 송신하는 방법 및 회로 배열
JP4696199B2 (ja) 転送ディスクリプタ用メモリを備えるusbホストコントローラ
US11704263B2 (en) Configurable multi-function PCIe endpoint controller in an SoC
EP3945406A1 (en) Storage device and method for processing commands
US8468381B2 (en) Integrated circuit package with multiple dies and a synchronizer
CN107291641B (zh) 用于计算单元的存储器直接访问控制装置及其运行方法
EP1759297B1 (en) Interrupt scheme for bus controller
US10127180B2 (en) Bus interface unit and operating method therefor
US20070143519A1 (en) Bus controller for transferring data
US8402178B2 (en) Device to device flow control within a chain of devices
US20240160598A1 (en) Processing system, related integrated circuit, device and method
US8347258B2 (en) Method and apparatus for interfacing multiple dies with mapping for source identifier allocation
US20230350824A1 (en) Peripheral component interconnect express device and operating method thereof
Usselmann Usb function ip core
JP2023056479A (ja) 通信制御装置および通信制御方法
Afşin C3: Configurable CAN FD controller: Design, implementation and evaluation
KR20070022090A (ko) 버스 컨트롤러용 인터럽트 기법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination