深入解析NXP DSPI模块:SPI通信原理、FIFO机制与实战配置指南
1. 项目概述与DSPI模块定位在嵌入式系统开发中与外设进行高效、可靠的数据交换是核心任务之一。串行外设接口SPI因其协议简单、全双工、高速的特点成为了连接Flash、传感器、显示屏、ADC/DAC等器件的首选。然而当通信速率提升、数据量增大或者需要与多个从设备进行复杂交互时一个简单、轮询式的SPI控制器往往会成为系统性能的瓶颈大量消耗CPU资源在等待和状态查询上。这时一个功能强大的、带有深度缓冲和灵活时序控制能力的SPI控制器就显得至关重要。飞思卡尔现为NXP的DSPI模块正是为解决这类问题而设计的增强型串行外设接口。DSPI全称Deserial Serial Peripheral Interface其“Deserial”一词点明了它的核心增强能力它不仅仅是一个简单的移位寄存器更是一个集成了命令队列、深度FIFO缓冲、可编程精密延时单元以及复杂状态机的通信协处理器。它允许开发者预先将一系列带有不同配置如时钟特性、片选、帧长度的传输命令和数据填入发送FIFO然后由硬件自动、高效地执行极大解放了CPU。理解DSPI的工作机制尤其是其内部状态机与FIFO的协同、各种延时参数的精确计算是将其性能发挥到极致、避免通信错误的关键。本文将以实际工程应用的视角深入解析DSPI的SPI模式从原理到寄存器配置再到实战中的避坑指南为你呈现一个立体、可操作的DSPI应用全景图。2. DSPI核心架构与运行状态解析要驾驭DSPI首先必须理解它的两大基础状态和驱动其运转的内部状态机。这就像开车前你得知道引擎是熄火状态还是运行状态以及换挡、踩油门的时机。2.1 模块的两种宏观状态STOPPED与RUNNINGDSPI模块在任何时刻都处于两种状态之一STOPPED停止或RUNNING运行。这个状态独立于具体的SPI配置如主/从模式、时钟极性等是模块最顶层的运行开关。STOPPED状态是模块的默认安全状态。在此状态下如果DSPI配置为主机它不会发起任何传输如果配置为从机它也不会响应任何来自外部主机的传输。更重要的是STOPPED状态是安全配置寄存器的唯一时机。你可以随意修改DSPI_MCR、DSPI_CTAR等配置寄存器而不会导致不可预知的结果比如在传输中途修改波特率导致数据错乱。模块的当前状态由状态寄存器DSPI_SR中的TXRXS位指示0表示STOPPED1表示RUNNING。那么模块如何在这两种状态间切换呢这由几个关键的寄存器位控制其逻辑非常清晰从STOPPED进入RUNNING的条件必须同时满足DSPI_SR[EOQF]传输队列结束标志为0。这意味着没有挂起的“传输结束”命令。系统未处于调试模式或者即使处于调试模式但DSPI_MCR[FRZ]冻结位被清0。这允许在调试时继续运行SPI。DSPI_MCR[HALT]暂停位被清0。这是让模块运行的主开关。从RUNNING进入STOPPED的条件满足任一即可DSPI_SR[EOQF]位被置1。这通常由软件写入一个带有EOQEnd Of Queue标志的命令触发告知模块“这是队列的最后一个帧发完就停”。系统进入调试模式并且DSPI_MCR[FRZ]位被置1。这便于在调试断点处观察SPI状态。DSPI_MCR[HALT]位被置1。软件主动暂停模块。状态转换的时机也很有讲究如果当前有传输正在进行状态转换会延迟到当前帧的边界即一帧数据传输完成的那一刻才发生如果没有传输在进行则会立即转换。这个设计保证了任何一次数据传输的完整性不会被中途打断。实操心得状态管理是稳定的基石在初始化DSPI时一个良好的习惯是先确保模块处于STOPPED状态可以通过置位HALT或检查TXRXS再进行所有寄存器配置。配置完成后再清除HALT等位使其进入RUNNING。在需要动态修改关键参数如切换CTAR前也应先暂停模块。切忌在RUNNING状态下野蛮地改写配置寄存器那相当于在飞机飞行时更换引擎后果难以预料。2.2 内部状态机与FIFO加载时机DSPI内部有一个精细的有限状态机FSM它才是控制字节流如何从内存移动到TX FIFO再加载到移位寄存器最后一位一位发送出去的“总指挥”。数据从TX FIFO加载到移位寄存器的时机并非由简单的计数器决定而是严格依赖于这个内部FSM的状态。根据手册描述一个关键的加载时刻发生在当FSM的“下一个状态”是PCS-to-SCK延迟阶段tCSC而“当前状态”是IDLE空闲、“After SCK delaytASC后”或“Delay after transfertDT后”时。理解这一点至关重要。我们可以将其类比为装配流水线TX FIFO是零件仓库移位寄存器是装配工位FSM是生产节拍器。IDLE状态流水线停止准备开始一个新产品的装配一次新的SPI帧传输。触发加载当节拍器指示“下一个节拍是准备零件tCSC延迟”且当前正好是流水线空闲或上一个产品刚下线的间隙时立即将下一个零件TX FIFO中的数据从仓库送到装配工位移位寄存器。开始装配进入tCSC延迟阶段此时片选信号PCS已有效但时钟SCK还未产生给从设备一个准备时间。延迟结束后SCK开始跳动装配工位移位寄存器开始将零件数据位依次送出通过SOUT引脚。这种基于状态的加载机制确保了数据在精确的时刻就位为后续稳定的时钟边沿采样创造了条件是实现高可靠性通信的底层保障。3. SPI配置模式详解主从模式与FIFO机制当DSPI_MCR[DCONF]字段配置为0b00时模块工作于标准的SPI配置模式。在此模式下数据通过移位寄存器串行传输并拥有一套丰富的可编程属性。帧长度可以从4位到16位灵活设置。3.1 主从模式的核心差异DSPI的SPI模式支持主Master和从Slave两种模式其FIFO操作逻辑基本相似但角色和控制权有本质区别。在主机模式下DSPI是通信的发起者和控制者。它主动产生串行通信时钟SCK并控制外围芯片选择PCS信号。主机模式下每一个待发送的SPI帧都附带一个命令存储在TX FIFO条目的命令字段中。这个命令字包含了丰富的信息指定使用哪个CTAR寄存器控制传输属性、断言哪个PCS信号、以及用于队列管理和传输协议的控制位如CONT,EOQ。这使得主机可以以帧为单位动态地改变通信参数例如先以10MHz、模式0与传感器A通信一帧紧接着以1MHz、模式1与存储器B通信下一帧而无需软件干预实现了极其灵活的调度。在从机模式下DSPI只能被动响应由外部SPI总线主机发起的传输。它不产生SCK也不控制PCS此时PCS引脚通常作为从机选择SS输入。因此从机模式下TX FIFO条目中的“命令字段”空间被重用为待发送数据的高16位。从机必须事先配置好DSPI_CTAR0中的时钟极性CPOL、时钟相位CPHA和帧大小FMSZ且这些设置必须与主机严格匹配否则通信必然失败。注意事项从机模式的配置陷阱很多开发者在配置从机时误以为从机不需要关心CTAR设置因为时钟是外部提供的。这是大错特错的。CPOL和CPHA决定了从机在哪个时钟边沿采样输入数据SIN和更新输出数据SOUT。即使时钟是外部输入的从机内部的采样逻辑也必须与主机发出的时钟边沿对齐。因此主从设备的CPOL、CPHA、FMSZ必须完全一致。3.2 FIFO的使能与禁用机制DSPI的TX和RX FIFO可以被独立禁用这为简单的应用场景提供了轻量级的选择。通过设置DSPI_MCR[DIS_TXF]和DSPI_MCR[DIS_RXF]位可以分别禁用发送和接收FIFO。当FIFO被禁用时DSPI退化为一个双缓冲的简易SPI接口。这对用户和主机软件是透明的你依然像往常一样向DSPI_PUSHR写入数据从DSPI_POPR读取数据。此时状态寄存器DSPI_SR中的FIFO状态标志如TFFF发送FIFO满、RFDF接收FIFO排空会表现得好像FIFO只有一个条目深度。但需要注意的是此时FIFO寄存器本身DSPI_TXFR/DSPI_RXFR和指针TXNXTPTR/POPNXTPTR的内容是未定义的你不应去访问它们。禁用FIFO通常用于极简的、单次传输的场景或者在对内存访问有极其严格限制的场合。对于绝大多数需要连续、高效传输的应用强烈建议启用FIFO。3.3 TX FIFO缓冲机制深度剖析TX FIFO是DSPI高效工作的核心引擎。它是一个深度为1到5个条目具体数量取决于芯片型号的缓冲区每个条目包含一个16位的命令字段和一个16位的数据字段。3.3.1 FIFO的填充与指针管理软件或DMA控制器通过写入推送TX FIFO寄存器DSPI_PUSHR来向TX FIFO添加条目。状态寄存器中的TX FIFO填充标志TFFF非常有用当TX FIFO未满时该位为1提示你可以安全写入。当TX FIFO满时该位被硬件清0。同时该标志可以配置为产生中断或DMA请求从而实现“空了就填”的自动填充机制。一个重要的安全特性是如果试图向已满的TX FIFO写入数据该写操作会被硬件忽略且不会引发任何错误状态这避免了数据覆盖。DSPI_SR中的TX FIFO计数器TXCTR实时指示FIFO中有效条目的数量。每次写入PUSHR或数据从FIFO转移到移位寄存器时该计数器都会更新。下一个发送指针TXNXTPTR指向下一个将要被传输的TX FIFO条目。它是一个相对于DSPI_TXFR0寄存器的偏移量。例如TXNXTPTR值为2意味着DSPI_TXFR2寄存器中的命令和数据将在下一次传输中被使用。每当一个数据帧从TX FIFO加载到移位寄存器后该指针会自动递增并在达到最大值由DSPI_HCR[TXFR]定义后回滚到0。3.3.2 FIFO的排空与传输完成TX FIFO条目的移除排空是通过将数据移出移位寄存器实现的。只要FIFO中有有效条目数据就会持续加载并发送。每移出一个条目TXCTR就减1。当一帧数据完全从移位寄存器移出后传输完成标志TCF会被置位标志着一个物理帧传输的结束。这里需要区分TFFF和TCFTFFF关心的是FIFO的填充状态软件侧而TCF关心的是移位寄存器的排空状态硬件物理传输侧。它们相互独立共同描述了数据传输流水线的不同阶段。在从机模式下如果外部主机发起传输时从机的TX FIFO为空则会置位发送FIFO下溢标志TFUF这通常意味着从机没有准备好数据可能导致主机读到无效数据。3.4 RX FIFO缓冲机制详解RX FIFO是接收数据的缓冲区深度为1到16个条目SoC特定。当一次传输完成移位寄存器中的数据会被自动转移到RX FIFO中。3.4.1 FIFO的填充与溢出处理RX FIFO的填充是自动的。只要RX FIFO未满来自移位寄存器的数据帧就会被转入。每次转入RX FIFO计数器RXCTR加1。一个关键问题是溢出如果RX FIFO和移位寄存器都已满此时又完成了一次新的传输数据无处可去就会发生溢出。RX FIFO溢出标志RFOF会被置位。此时的行为由DSPI_MCR[ROOE]位控制如果ROOE1溢出时覆盖新数据会挤掉移位寄存器中的旧数据可能导致数据丢失但传输继续。如果ROOE0溢出时忽略新数据被直接丢弃移位寄存器内容保持不变。 在要求数据完整性的场合通常应设置ROOE0并通过监控RFOF和及时读取数据来避免溢出。3.4.2 FIFO的读取与指针管理CPU或DMA通过读取弹出RX FIFO寄存器DSPI_POPR来取出数据。每次读取RXCTR减1。如果试图从空的RX FIFO读取操作会被忽略RXCTR不变且读回的数据是未定义的。弹出下一个指针POPNXTPTR指向下一次读取POPR时将返回的RX FIFO条目。其行为与TXNXTPTR类似随读取操作递增并回滚。当RX FIFO非空时RX FIFO排空标志RFDF被置位同样可用于触发中断或DMA请求实现“有数据就来取”的自动排空机制。4. 波特率与时钟延时生成机制SPI通信的时序精度直接影响稳定性和最高速率。DSPI提供了高度可编程的波特率发生器以及三个关键延时参数允许我们精细地控制波形。4.1 波特率计算SCK的频率由系统时钟f_sys经过两级分频得到预分频器PBR和分频器BR并且有一个双倍波特率DBR选项可以进一步调节。计算公式如下SCK Baud Rate f_sys / [(PBR) * (BR) * (1DBR)]其中PBR和BR的值通过查询DSPI_CTARx寄存器中对应字段的编码表确定。DBR位为0时分母中的(1DBR)为1DBR为1时该项为2相当于在PBR*BR分频后再进行一次2分频从而在某些情况下能获得更精细的速率调节。例如手册中给出f_sys100MHz,PBR2(PBR字段0b00),BR2(BR字段0b0000),DBR0则波特率 100MHz / (2 * 2) 25 Mb/s。若DBR1则波特率 100MHz / (2 * 2 * 2) 12.5 Mb/s。4.2 关键延时参数解析与配置除了波特率三个可编程延时是匹配外设时序要求、消除毛刺的关键。PCS到SCK延时tCSC从片选信号PCS有效到第一个SCK边沿出现的时间。这给了从设备一个准备时间使其在时钟开始前稳定地识别到片选。计算公式为tCSC (PCSSCK 1) / f_sys。PCSSCK是DSPI_CTARx中的一个字段其值对应一个分频系数。SCK后延时tASC从最后一个SCK边沿到片选信号PCS无效的时间。这确保了在时钟结束后数据有足够的保持时间被从设备可靠锁存。计算公式为tASC (ASC 1) / f_sys。传输后延时tDT前一帧PCS无效到下一帧PCS有效之间的最小空闲时间。这防止了连续帧之间片选信号的毛刺对于需要在下一次传输前释放总线或执行内部操作的外设如某些ADC非常重要。计算公式为tDT (DT 1) / f_sys。在非连续时钟模式下tDT按此公式配置在连续时钟模式下tDT固定为1个SCK周期。这些延时参数PCSSCK,CSSCK,PASC,ASC,PDT,DT都在DSPI_CTARx寄存器中设置。手册中的表格如Table 16-19提供了计算示例。例如f_sys100MHzPCSSCK选择预分频器为3对应字段值0b01CSSCK选择分频器为32对应字段值0b0100则tCSC 3 * 32 / 100MHz 0.96 µs。4.3 片选选通信号PCSS对于需要扩展大量片选信号的应用直接使用GPIO可能会在切换时产生毛刺。DSPI提供了外围芯片选通使能PCSSE功能。当使能后DSPI会额外产生一个PCSS信号其上升沿和下降沿分别滞后于PCS信号的跳变沿tPCSSCK和tPASC。这个PCSS信号可以连接到一个外部解码器如3-8译码器将少量的PCS线解码成更多路无毛刺的片选信号。tPCSSCK和tPASC的计算公式与tCSC和tASC类似但使用独立的PCSSCK和PASC字段值。需要注意的是当使能连续SCK时不支持PCSS功能。5. SPI传输格式与连续传输模式SPI协议通过时钟极性CPOL和时钟相位CPHA定义了四种基本传输模式。DSPI不仅完整支持这四种经典模式还提供了增强的修改传输格式和连续传输选项。5.1 经典SPI格式CPHA0 与 CPHA1CPHA0数据在第一个时钟边沿即SCK的第一个跳变沿就绪并被采样。对于CPOL0时钟空闲为低在SCK的上升沿采样数据对于CPOL1在下降沿采样。主机在断言PCS后需要先放置第一位数据到SOUT然后经过tCSC延时才产生第一个SCK边沿。从机在第一个SCK边沿采样主机数据并在第二个边沿更新自己的输出。CPHA1数据在第二个时钟边沿才被采样。对于CPOL0在SCK的下降沿采样对于CPOL1在上升沿采样。主机在断言PCS并经过tCSC后在产生第一个SCK边沿的同时才将第一位数据放到SOUT上。从机则在第一个SCK边沿采样主机数据并在第二个边沿更新输出。选择CPHA0还是CPHA1完全取决于你的外设芯片的数据手册要求。常见的Flash存储器通常支持两种模式而一些传感器可能只支持其中一种。5.2 修改传输格式MTFE1随着通信速率提升PCB走线延迟、器件输入输出延迟在SCK周期中的占比变大可能威胁到建立和保持时间的余量。DSPI的修改传输格式通过设置DSPI_MCR[MTFE]使能就是为了应对高速场景。在这种格式下主从设备的采样点被有意地推迟了相对于经典格式的时钟中点。这相当于给了信号更多的时间在总线上稳定下来从而容忍更大的板级延迟。手册中的时序图Figure 16-25至16-30清晰地展示了这一点。对于主机采样点可以通过DSPI_MCR[SMPL_PT]字段进行微调延迟1或2个系统时钟周期。需要注意的是如果系统时钟与SCK的频率比小于4SMPL_PT应设置为0。实操心得何时使用修改传输格式修改传输格式并非速度的“加速器”而是稳定性的“增强器”。当你在高波特率例如10MHz下通信不稳定出现偶发性数据错误并且怀疑是时序余量不足时可以尝试启用MTFE。同时配合示波器测量SIN信号相对SCK边沿的建立/保持时间根据测量结果调整SMPL_PT往往能解决棘手的时序问题。在低速通信中通常不需要启用此功能。5.3 连续选择与连续SCK模式连续选择格式由TX FIFO命令字中的CONT位控制。当CONT0时每传输完一帧PCS信号会恢复到空闲状态由PCSISn位定义并插入tDT延时。当CONT1时PCS信号在连续的多个帧传输期间保持有效帧与帧之间没有tDT延时。这对于需要一次性传输大量数据而不希望片选反复切换的外设如某些串行Flash的页编程命令非常有用。连续SCK模式通过设置DSPI_MCR[CONT_SCKE]使能。在此模式下SCK时钟在帧与帧之间不会停止始终保持连续运行。这适用于某些需要不间断时钟的从设备例如某些音频编解码器。需要注意的是连续SCK仅支持CPHA1。使能连续SCK后tCSC和tDT延时被禁用。tDT固定为1个SCK周期。强烈建议在使用连续SCK时保持波特率不变。在帧之间切换时钟极性可能导致错误。一个关键警告在连续SCK模式下发起SPI传输前必须使用MCR[CLR_TXF]清空TX FIFO且必须使用CTAR0。这是手册中明确强调的硬件要求。一个重要的陷阱在连续SCK且CONT1的模式下如果TX FIFO为空、模块进入STOPPED状态、或进入低功耗模式SCK可能会继续运行而SOUT输出为高电平。这可能导致从设备采样到错误的数据全1。因此必须确保在TX FIFO变空之前最后一个条目的CONT位为0以正常结束传输并停止SCK。6. DSPI配置实践与常见问题排查理解了原理最终要落到代码和调试上。下面以一个典型的MCU初始化DSPI为主模式进行通信为例梳理配置流程和常见问题。6.1 主模式初始化与传输配置步骤模块使能与基础配置确保模块处于STOPPED状态检查DSPI_SR[TXRXS]或设置DSPI_MCR[HALT]1。配置DSPI_MCR设置主模式MSTR1选择SPI配置DCONF00使能TX/RX FIFODIS_TXF0,DIS_RXF0根据需求配置PCS引脚空闲状态PCSISx、是否冻结调试FRZ等。清除所有状态标志DSPI_SR。配置时钟与传输属性CTAR根据外设要求和系统时钟计算波特率、tCSC、tASC、tDT等参数并转换为PBR、BR、DBR、PCSSCK、CSSCK、PASC、ASC、PDT、DT等字段值。配置DSPI_CTAR0或其他CTARx设置CPOL、CPHA、帧长度FMSZ、LSB优先位LSBFE以及上述计算出的分频和延时字段。如果需要多组属性可配置多个CTARx寄存器。配置中断/DMA可选根据应用需求在DSPI_RSER寄存器中使能相关中断源如TFFFTX FIFO可填充、TCF传输完成、RFDFRX FIFO可读取、TFUF下溢、RFOF溢出等。如果使用DMA配置相应的DMA通道请求。启动模块与数据传输清除DSPI_MCR[HALT]位使模块进入RUNNING状态。构建TX FIFO条目将命令指定CTAS选择哪个CTAR、PCS选择哪个片选、是否连续CONT、是否队列结束EOQ等和数据组合成一个32位字。检查TFFF标志或等待TFFF中断/DMA请求然后向DSPI_PUSHR写入构建好的条目。数据发送后从机数据会进入RX FIFO。检查RFDF标志或等待其中断/DMA请求然后从DSPI_POPR读取数据。传输结束处理如果要停止传输可以在最后一个TX FIFO条目中设置EOQ1。当该帧发送完毕EOQF标志会被置位模块会自动进入STOPPED状态。或者软件主动设置DSPI_MCR[HALT]1模块会在当前帧结束后停止。6.2 常见问题排查速查表在实际开发中你几乎一定会遇到下面这些问题。这里提供一个快速排查指南。现象可能原因排查步骤与解决方案完全无通信无SCK波形1. 模块未启动。2. 主从模式配置错误。3. 引脚复用未配置。1. 检查DSPI_SR[TXRXS]是否为1RUNNING。检查MCR[HALT]是否为0MCR[MDIS]模块禁用是否为0。2. 确认主机MCR[MSTR]1从机MSTR0。3. 检查MCU的引脚控制模块确保SPI相关引脚SCK, PCS, SIN, SOUT已正确配置为DSPI功能而非GPIO。有SCK但数据错误或全0/全11. CPOL/CPHA不匹配。2. 帧长度FMSZ不匹配。3. TX FIFO下溢从机或未及时填充主机。4. 时序参数tCSC, tASC不满足外设要求。1.这是最常见原因。用示波器同时抓取SCK和MOSI/MISO对照外设手册确认第一个数据位出现在第几个时钟边沿以此判断CPHA。确认SCK空闲电平判断CPOL。务必使主从设备设置一致。2. 检查主机和从机CTARx[FMSZ]设置是否相同。3. 从机检查TFUF标志确保在主机发起传输前从机TX FIFO已有数据。主机监控TFFF确保FIFO不会空。4. 测量PCS有效到第一个SCK边沿的时间tCSC以及最后一个SCK边沿到PCS无效的时间tASC与外设数据手册要求的最小值对比。增加PCSSCK/CSSCK或PASC/ASC字段值以增大延时。通信速度远低于预期1. 波特率计算错误。2. 系统时钟源配置错误。1. 根据公式SCK f_sys / [(PBR)*(BR)*(1DBR)]重新计算。使用示波器测量实际SCK频率验证。2. 确认MCU核心系统时钟f_sys是否运行在预期的频率上。检查时钟树配置。连续传输时数据错位或丢失1. 连续模式CONT使用不当。2. FIFO指针管理错误。3. 中断服务程序ISR处理太慢导致FIFO溢出/下溢。1. 确认在需要片选切换的帧其命令字中CONT0。对于连续SCK模式特别注意手册关于清空FIFO和使用CTAR0的警告。2. 在复杂队列传输后考虑在重新开始前使用MCR[CLR_TXF]和MCR[CLR_RXF]清空FIFO复位内部指针。3. 优化ISR或者使用DMA来搬运FIFO数据减轻CPU负担。监控RFOF和TFUF标志。高波特率下通信不稳定1. 建立/保持时间不足。2. PCB布局问题。3. 未使用修改传输格式。1. 使用示波器高分辨率模式测量数据线SIN相对SCK采样边沿的建立时间和保持时间。确保大于外设要求的最小值。2. 检查SCK和数据线是否等长远离噪声源并考虑串联匹配电阻。3. 尝试启用MCR[MTFE]1并可能调整MCR[SMPL_PT]推迟采样点以增加建立时间。6.3 调试技巧与心得善用状态寄存器DSPI_SR这是你洞察模块内部状态的眼睛。在初始化后、传输前、中断服务程序中养成读取并检查关键标志位TFFF,TFUF,RFDF,RFOF,TCF,EOQF的习惯可以快速定位问题是出在数据供给、数据消费还是传输过程本身。从低速率开始在驱动一个新外设时先将波特率设到最低如100kHz使用经典的CPHA0/CPHA1模式确保基础通信成功。然后再逐步提高速率或尝试启用连续传输、修改格式等高级功能。逻辑分析仪是你的好朋友一个支持协议分析SPI的逻辑分析仪或高端示波器能直观地显示PCS、SCK、MOSI、MISO四线波形并解析出十六进制数据。这对于验证CPOL/CPHA、帧长度、数据内容、连续传输时序是否正确具有不可替代的价值。对比抓取到的波形和DSPI手册中的时序图是理解硬件行为的最佳方式。理解“帧”与“队列”DSPI的传输单位是“帧”Frame由FMSZ定义长度。而一系列帧可以组成一个“队列”Queue通过TX FIFO提交。EOQ标志用于标记队列的结束。这种层次概念对于管理复杂传输序列非常重要。功耗与状态管理在低功耗应用中及时将不再使用的DSPI模块通过MCR[MDIS]禁用或置于STOPPED状态可以节省功耗。再次启用时记得重新初始化配置寄存器。