MIPI DSI协议实战:视频/命令模式、交织技术与电源管理详解
1. 项目概述与核心价值在嵌入式显示系统尤其是手机、平板和各类便携设备的研发中如何高效、稳定且低功耗地将处理器的图像数据“搬运”到显示屏上是一个贯穿始终的核心挑战。MIPI DSIDisplay Serial Interface协议正是为解决这一系列问题而生的行业标准。它不仅仅是一个物理层的高速串行接口更是一套完整的、包含数据链路层和应用层的通信框架。对于嵌入式工程师而言深入理解DSI协议特别是其灵活的数据传输模式和精细的电源与时序控制机制是设计出高性能、长续航显示系统的关键。DSI协议的核心价值在于其“化繁为简”的能力。它将传统的并行RGB接口、行场同步信号、以及控制命令如初始化、亮度调节全部整合到一对或几对差分数据线和一对差分时钟线上。这极大地减少了PCB布线的复杂度、节省了连接器引脚并显著降低了电磁干扰EMI。更重要的是DSI协议并非“一刀切”它提供了视频模式Video Mode和命令模式Command Mode两种根本性的数据传输范式以适应不同显示面板如手机LCD和智能手表OLED的驱动需求。而交织Interleaving技术和精细的电源管理Power Management则是协议层实现高效能与低功耗的“灵魂”所在允许工程师在视频流的“空闲时间”消隐期穿插发送控制命令并动态关闭暂时不用的电路模块。本文将从一线工程师的视角深入拆解DSI协议中视频模式与命令模式的运作机理、交织技术的实现细节与寄存器配置逻辑以及电源状态机的控制策略。我会结合手册中的寄存器描述和时序图用实际项目中的配置案例和踩过的“坑”来阐释这些抽象概念目标是让你不仅能看懂协议手册更能掌握在真实项目中配置和调试DSI驱动的实战能力。2. DSI传输模式视频模式与命令模式深度解析DSI协议定义了两种数据传输模式它们决定了数据从主机如应用处理器到从机显示面板的流动方式和时序约束。选择哪种模式是硬件选型和驱动框架设计的首要决策。2.1 视频模式为实时像素流而生视频模式的核心思想是模拟传统的DPIDisplay Pixel Interface或RGB接口。在此模式下显示控制器Display Controller会按照固定的像素时钟Pixel Clock频率从帧缓冲区Frame Buffer中读取像素数据并通过视频端口Video Port实时地、源源不断地喂给DSI协议引擎。2.1.1 工作机制与实时性约束在视频模式下DSI协议引擎的角色更像一个“串行化转换器”。它接收来自显示控制器的像素流以及行同步HSYNC、场同步VSYNC、数据使能DE等定时信号。协议引擎根据这些定时信号在有效像素区域Active Video Period将像素数据打包成长数据包Long Packet进行高速HS传输在消隐区域Blanking Period则生成对应的同步短包Short Packet如垂直同步VS、垂直后沿VBP等事件包。这里的关键词是“实时”。一旦显示控制器开始输出一帧数据DSI链路就必须以匹配的速率将数据发送出去不能有任何延迟或卡顿否则屏幕上就会出现撕裂Tearing或闪烁。因此视频模式对系统内存带宽、显示控制器的取指效率以及DSI链路本身的稳定性要求极高。2.1.2 寄存器配置要点手册中提到视频模式下的同步短包如VS、VBP等使用的是预计算的32位值由硬件自动生成。这意味着工程师通常无需手动填充这些短包的内容但必须正确配置显示时序参数如DSI_VM_TIMING系列寄存器以确保硬件生成的同步事件与面板期望的时序完全匹配。对于像素数据的长包其包头Header信息需要通过DSS.DSI_VCn_LONG_PACKET_HEADER寄存器来设置其中最关键的是数据标识Data Type, DT和字计数Word Count, WC。例如对于RGB888数据DT通常设置为0x3E。WC则根据一行中有效的像素数据字节数来计算。一个常见的“坑”是WC指的是Payload的字节数而不是像素个数。对于RGB88824位/像素一行有H_Active个像素则WC H_Active * 3。注意在视频模式下DSS.DSI_VCn_LONG_PACKET_PAYLOAD寄存器并不直接用于写入像素数据。像素数据来自视频端口。你配置好包头寄存器后硬件会自动从视频端口抓取数据并组包发送。这意味着你不能通过CPU去直接填充像素Payload。2.2 命令模式灵活控制的艺术与视频模式的“流式”传输不同命令模式更像一种“按需发送”的通信机制。它主要遵循MIPI DCSDisplay Command Set标准用于发送初始化命令、读写寄存器、更新局部显存如GRAM或进行低速的图形绘制。2.2.1 工作机制与灵活性在命令模式下数据可以来自两个源头一是显示控制器的视频端口与视频模式相同二是处理器的系统总线如L4 Interconnect。这意味着你可以用DMA将一块内存区域的数据通过DSI发送出去也可以由CPU直接写入命令。最大的优势在于没有严格的实时性约束。你可以在任何合适的时间发起一次传输只要保证在面板需要刷新之前完成即可。这为系统节省了大量功耗因为链路在大部分时间可以保持在低功耗LP状态仅在需要通信时才切换到高速HS状态。手册中特别强调了一点在DSI命令模式下显示控制器必须配置为Stall模式设置DSS.DISPC_CONTROL[11] STALLMODE 1。这是什么意思在非Stall模式下显示控制器会不顾后端是否就绪持续输出像素时钟和数据。而在Stall模式下当DSI协议引擎的缓冲区满或未就绪时它可以“拉住”显示控制器让其暂停输出从而避免数据丢失。这对于命令模式下可能的不连续、突发式数据传输至关重要。2.2.2 数据包构建与发送流程命令模式下无论是短包如DCS写命令0x05后面跟一个参数还是长包如写入一帧图像数据都需要软件主动参与构建设置包头对于长包写入DSS.DSI_VCn_LONG_PACKET_HEADER寄存器设置VCVirtual Channel、DT和WC。对于短包写入DSS.DSI_VCn_SHORT_PACKET_HEADER寄存器。填充载荷对于长包将Payload数据依次写入DSS.DSI_VCn_LONG_PACKET_PAYLOAD寄存器。硬件内部有一个FIFO缓冲区可以缓解系统总线写入速度与DSI链路发送速度之间的差异。触发发送写入包头寄存器这个动作本身通常就会触发硬件开始处理这个数据包前提是该VC已使能。硬件会依据包头中的WC值从Payload寄存器或视频端口读取相应数量的字节发出。这里有一个非常重要的细节ECCError Correction Code的处理。手册指出你可以通过设置DSS.DSI_VCn_CTRL[8] ECC_TX_EN位来选择ECC的生成方式。如果该位为1硬件会自动计算并插入ECC如果为0则使用你在包头寄存器中手动写入的ECC值。这个功能主要用于调试例如故意发送一个错误的ECC来测试接收端的错误检测和恢复能力是否正常。在正常应用中我们总是设置ECC_TX_EN1让硬件自动处理。2.2.3 视频端口与DCS命令的混合使用手册还描述了一个高级特性当像素数据来自显示控器的视频端口时DSI协议可以在包头和像素数据之间自动插入一个DCS命令字节。这是通过DSS.DSI_CTRL[24] DCS_CMD_ENABLE和[25] DCS_CMD_CODE位控制的。当DCS_CMD_ENABLE1且DCS_CMD_CODE1时插入0x2CDCS命令Write_Memory_Start。当DCS_CMD_ENABLE1且DCS_CMD_CODE0时插入0x3CDCS命令Write_Memory_Continue。这有什么用想象一个场景你需要用命令模式向面板的GRAM中写入一幅图像。通常你需要先发一个Write_Memory_Start (0x2C)命令然后跟上所有的像素数据。利用这个特性你可以将像素数据通过显示控制器的视频端口输出就像视频模式一样而DSI硬件会自动在每包数据前加上0x2C或0x3C命令从而简化了软件流程。这对于需要频繁更新部分屏幕内容的应用非常高效。3. 乒乓缓冲与交织技术提升总线利用率的关键无论是视频模式还是命令模式数据在进入DSI协议引擎后都可能需要经过缓冲来处理速度不匹配的问题。而交织技术则是为了在视频流的“空闲时间”里“见缝插针”发送其他数据从而最大化DSI链路的利用率。3.1 乒乓缓冲机制手册中提到了一个2行乒乓缓冲2-line ping-pong buffer。这个机制主要应用于命令模式下当像素数据来自视频端口时。3.1.1 工作原理想象你有两个行缓冲区Line Buffer A和B每个大小是768 * 32位。当DSI协议引擎正在从缓冲区A读取数据并发送到PHY层时显示控制器可以同时向缓冲区B写入下一行的数据。一旦A发送完毕且B写入完成两者的角色立刻交换引擎从B读取控制器向A写入。如此往复像打乒乓球一样。这个机制的核心目的是避免数据流的中断确保DSI链路可以持续、流畅地发送数据即使后端数据供给是突发或略有波动的。3.1.2 使用限制与状态查询乒乓缓冲的使用有一个关键前提单个数据包的大小不能超过一个行缓冲区的容量。手册明确指出如果数据包大小超过了768*32位乒乓机制将失效两个缓冲区会被合并当作一个大的单缓冲区使用。因此在规划命令模式下的长包传输时需要计算好Payload大小。软件如何知道缓冲区的状态通过DSI_VCn_CTRL[14] PP_BUSY位。PP_BUSY 1乒乓缓冲忙两个缓冲区都在被使用或即将被使用此时你不能更新包头即发起新的传输。PP_BUSY 0至少有一个行缓冲区是空的软件可以写入一个新的包头来发起一次传输。为了高效利用DSI还提供了一个中断PP_BUSY_CHANGE_IRQ。你可以使能这个中断当PP_BUSY位从1变为0时即缓冲区有空闲触发中断在中断服务程序里准备并发送下一个数据包从而实现高效的流式数据传输。3.2 交织技术详解交织是DSI协议中一个非常精妙的设计。它的核心思想是在视频模式传输的消隐期Blanking PeriodDSI链路原本处于空闲或低功耗状态此时可以插入命令模式的数据包从而在不影响主视频流的前提下完成对面板的实时控制或向副屏发送数据。3.2.1 四种消隐间隙手册将视频流序列中的空白间隙分为四类理解它们是配置交织的基础BLLP Gap出现在垂直消隐期VSA, VBP, VFP对应的行期间的空白间隙。这是时间最长的间隙。HSA Gap出现在有效行VACT期间始终位于行同步HS短包和行结束HE短包之间。HBP Gap出现在有效行期间始终位于HS/HE短包和像素数据长包之间即行同步后像素数据前。HFP Gap出现在有效行期间始终位于像素数据长包和当前行结束之间即像素数据后行结束前。要在某个间隙中进行交织必须先将视频模式配置为在该间隙进入低功耗LP状态。然后通过相应的寄存器位来决定在这个LP状态下是发送一个空白长包还是进行交织插入命令包。3.2.2 高速与低功耗交织交织分为两种类型对应两种寄存器组高速交织在消隐期内插入高速HS命令包。配置寄存器如BL_HS_INTERLEAVING,HBP_HS_INTERLEAVING等。这些寄存器的值单位是TxByteClkHS的周期数表示可用于发送HS命令包的最大时间窗口。低功耗交织在消隐期内插入低功耗LP命令包。配置寄存器如BL_LP_INTERLEAVING,HBP_LP_INTERLEAVING等。这些寄存器的值单位是字节数表示可以发送的LP命令包的最大字节数。3.2.3 高速交织场景与计算实战手册中的图15-93和四个场景的计算公式是理解高速交织的难点也是关键。我们以场景1为例拆解其计算逻辑场景描述交织间隙的开始和结束都是常规的视频流HS包。即视频HS包 - LP状态交织窗口- 视频HS包。计算公式取决于ddr_clk_always_on的配置ddr_clk_always_on 1时钟通道始终处于活动状态HS模式。这意味着从视频HS包结束到进入LP状态以及从LP状态退出到下一个视频HS包开始只需要考虑数据通道的HS模式进入/退出延迟。HS_INTERLEAVING BLANKING_PERIOD – (EXIT_HS_MODE_LATENCY max{ENTER_HS_MODE_LATENCY, 2} 1)BLANKING_PERIOD当前间隙的总时长TxByteClkHS周期数。EXIT_HS_MODE_LATENCY数据通道从HS模式退出到LP状态所需的时间周期数。ENTER_HS_MODE_LATENCY数据通道从LP状态进入HS模式所需的时间周期数。max{ENTER_HS_MODE_LATENCY, 2}取进入延迟和2之间的较大值。这个2通常是一个最小的安全裕量或协议要求。1可能是一个额外的缓冲周期或确保时序安全的偏移。这个公式的物理意义是从总空白时间中扣除掉“退出上一个HS包”和“准备进入下一个HS包”所必须的过渡时间剩下的就是可以用于交织发送HS命令包的净时间。ddr_clk_always_on 0时钟通道仅在需要发送HS包时才激活。情况更复杂因为时钟通道本身也有唤醒和关闭的延迟DDR_CLK_PRE,DDR_CLK_POST。 手册给出了两个计算值HS_INTER1和HS_INTER2最终取最小值。HS_INTER1的算法与ddr_clk_always_on1时类似但HS_INTER2则额外考虑了时钟通道的延迟DDR_CLK_POST EXIT_CLK_HS_MODE DDR_CLK_PRE。这是因为在交织窗口时钟通道可能需要先关闭再重新开启这个过程的耗时可能比数据通道的切换更久成为新的瓶颈。实操心得在实际项目中我们很少手动计算这些复杂的公式。芯片原厂提供的驱动库或配置工具通常会根据你设定的显示时序如htotal, hblank和PHY的时序参数Ths-prepare, Ths-zero, Ths-trail, Ths-exit等自动计算出各个*_INTERLEAVING寄存器的推荐值。工程师的职责是1) 理解这些参数的含义以便在调试时能分析问题2) 确保提供给工具的输入参数准确3) 在极端时序要求下如果工具计算的值导致交织失败如命令包发不完才需要手动微调这些值通常的做法是略微减小INTERLEAVING值为状态切换留出更多余量。3.2.4 低功耗交织计算低功耗交织的计算分两步计算可用时钟周期类似于HS交织先计算出在消隐期内有多少个TxByteClkHS周期可以用于LP交织ALLOWED_HSBYTE_CLOCKS_FOR_LP。计算公式同样有四个场景但只考虑数据通道的HS模式延迟因为时钟通道可以独立控制。转换为字节数得到可用时间Tlp_available ALLOWED_HSBYTE_CLOCKS_FOR_LP * T_TxByteClkHS。然后根据LP模式下传输一个字节所需的时间这涉及到LP传输时钟TxClkEsc和DSI功能时钟DSI_FCLK通过手册中给出的不等式计算出最终可传输的字节数LP_INTERLEAVING。注意LP交织的配置单位是字节数而不是时间周期。这意味着你需要根据你想要发送的LP命令包的实际大小来反推所需的间隙时间是否足够。如果计算出的LP_INTERLEAVING值小于你命令包的大小那么这个间隙就无法完成此次LP交织发送。4. 电源管理精细化的功耗控制策略对于移动设备显示系统往往是耗电大户。DSI协议引擎提供了一套从模块级到通道级的精细功耗控制机制是实现低功耗设计的核心。4.1 时钟门控与接口控制最基础的省电方式是关闭不用的时钟。手册中提到DSI协议引擎可以通过CIO_CLK_ICG信号来门控Gate由电源与时钟管理模块PRCM提供给DSI复合I/OComplex I/O的L3_ICLK时钟。当DSI链路完全不使用时可以通过设置DSS.DSI_CLK_CTRL[14] CIO_CLK_ICG 1来关闭这部分时钟树消除动态功耗。4.2 复合I/O与PLL的电源状态机这是电源管理的重头戏。DSI的物理层PHY和锁相环PLL都有多个功耗状态。4.2.1 复合I/O电源状态机DSI复合I/OPHY可以处于三种状态OFF完全掉电。内部LDO关闭功耗最低但唤醒需要较长时间和完整的初始化序列。ON全功能状态。所有电路上电可以正常进行HS和LP通信。ULPS超低功耗状态。仅维持ULPS退出检测电路或弱下拉电路工作功耗极低唤醒速度快于OFF状态。状态转换通过DSS.DSI_COMPLEXIO_CFG1[28:27] PWR_CMD位域来请求并通过[26:25] PWR_STATUS来查询当前状态。转换路径是固定的OFF - ON - ULPS - OFF。不能直接从OFF跳到ULPS也不能从ULPS直接回ON必须先到OFF再ON或通过特定退出序列。关键警告在发送任何命令到复合I/O之前必须确保其已处于ON状态。进入ULPS状态前必须确认所有通道包括时钟和数据通道的ULPSActiveNot信号都已为低即都已进入ULPS。可以借助ULPSActiveNot_ALL0_IRQ中断来判断。从ULPS状态恢复到通信需要先执行ULPS退出序列改变TxULPSExit信号等待确认启动唤醒定时器等手册15.4.3.7.1节描述了此序列软件必须使用一个通用定时器来实现Twakeup定时硬件没有集成。4.2.2 DSI PLL电源状态机PLL是产生高速时钟的模块其功耗状态更精细OFFPLL和HSDIVIDER都关闭。ON_ALLPLL和HSDIVIDER都开启同时向复合I/O和HSDIVIDER输出时钟。ON_HSCLKPLL开启但HSDIVIDER关闭。仅向复合I/O输出HS时钟。ON_DIVPLL和HSDIVIDER都开启但不向复合I/O输出HS时钟只向HSDIVIDER输出时钟。这种设计允许在只需要低速时钟可能供给系统其他部分而不需要HS通信时关闭通往PHY的时钟路径以省电。状态转换通过DSS.DSI_CLK_CTRL[31:30] PLL_PWR_CMD控制。4.2.3 HS时钟的自动停止机制一个重要的自动化节能特性是HS时钟的自动停止。当满足一系列条件表明短期内不需要HS传输时协议引擎可以自动发出DSIStopClk信号请求PLL停止输出HS时钟给复合I/O。断言DSIStopClk的条件同时满足DDR_CLK_ALWAYS_ON 0且没有正在进行或已调度的HS数据传输。没有使能了视频模式的VC。没有需要HS传输的命令模式VC。或者DSI接口被禁用IF_EN0。取消断言DSIStopClk的条件任一满足时钟通道需要HS时钟TxRequestHS被断言。有视频模式VC被激活。有需要HS传输的命令模式VC被激活。软件强制设置了DDR_CLK_ALWAYS_ON 1。自动模式由HS_AUTO_STOP_ENABLE位使能。也可以使用手动模式通过HS_MANUAL_STOP_CTRL位控制。一个必须注意的延迟问题手册在CAUTION中强调从DSIStopClk发出到TxByteClkHS实际停止会经过PLL控制器和PHY存在延迟。因此硬件使用了一个基于DSI_FCLK的定时器DSI_STOPCLK_LATENCY来防止DSIStopClk刚断言又被立刻取消断言。你必须按照手册给出的公式确保编程的延迟值大于(3 * L3_ICLK周期 5 * CLKIN4DDR周期) / DSI_FCLK周期。通常原厂BSP代码会设置一个足够大的保守值。5. 关键寄存器配置与调试经验理解了原理最终都要落实到寄存器的配置上。这里结合手册和实战经验梳理几个关键配置点和调试技巧。5.1 传输模式与VC配置一个VC虚拟通道只能处于一种模式。配置流程通常如下禁用VC在修改VC配置前先设置DSI_VCn_CTRL[0] VC_EN 0。设置模式DSI_VCn_CTRL[4] MODE位。0为命令模式1为视频模式。命令模式额外配置如果使用命令模式且数据来自视频端口确保显示控制器处于Stall模式DISPC_CONTROL[11] STALLMODE1。如果需要乒乓缓冲注意数据包大小限制。视频模式时序配置正确配置DSI_VM_TIMING系列寄存器与显示控制器的输出时序和面板的输入时序匹配。启用VC最后设置VC_EN 1。5.2 交织功能配置步骤配置交织功能是一个系统性的工作确定需求明确需要在哪个消隐间隙BLLP/HSA/HBP/HFP插入何种包HS/LP。计算间隙时间根据显示时序htotal, hsync_start, hsync_end, hdisp等计算出各个消隐间隙的TxByteClkHS周期数BLANKING_PERIOD。获取PHY时序参数从PHY配置或数据手册获取ENTER_HS_MODE_LATENCY,EXIT_HS_MODE_LATENCY,TCLK-PREPARE,TCLK-TRAIL,THS-EXIT等参数。计算/获取交织窗口使用原厂工具或根据手册公式计算HS_INTERLEAVING周期数或LP_INTERLEAVING字节数。配置寄存器将计算值写入对应的DSI_VM_TIMING4/5/6寄存器。使能低功耗状态在DSI_VM_TIMING相关寄存器中配置对应的间隙进入LP状态而不是发送空白包。测试与验证编写测试代码在指定的间隙发送一个已知的命令包如读面板ID并通过逻辑分析仪抓取DSI波形确认命令包是否在预期的间隙中被正确插入和发送。5.3 电源管理配置与状态查询上电序列系统启动或从深度睡眠唤醒时必须遵循正确的上电序列使能相关电源域和时钟。配置PLL到ON_ALL或ON_HSCLK状态等待锁定。配置复合I/O到ON状态。执行PHY初始化校准序列。最后才启用DSI接口IF_EN1和各个VC。睡眠序列禁用所有VC和DSI接口。如果有需要将活跃通道进入ULPS状态等待ULPSActiveNot_ALL0_IRQ。请求复合I/O进入ULPS状态。请求PLL进入OFF或ON_DIV状态如果其他模块还需要其输出。使能时钟门控CIO_CLK_ICG1。状态查询在状态转换过程中务必通过PWR_STATUSPLL_PWR_STATUS位域轮询或中断等待确认而不是发出命令后就立即进行下一步操作。5.4 常见问题排查实录问题1屏幕点亮后花屏、撕裂或闪烁。排查思路检查时序首先确认DSI_VM_TIMING寄存器配置是否与面板规格书严格一致。重点检查HSA/HBP/HFP等消隐时间是否足够。消隐时间不足是导致花屏的常见原因。检查VC模式确认是视频模式还是命令模式。如果是命令模式但屏幕需要持续刷新却错误配置为视频模式会导致数据供给不上。检查数据格式确认DSI_VCn_LONG_PACKET_HEADER中的Data Type是否正确如RGB565是0x2ERGB888是0x3E。检查DSI_CTRL[26] RGB565_ORDER位是否正确设置了字节顺序。检查交织配置如果使能了交织检查计算出的交织窗口是否过小导致命令包未能完整发送扰乱了后续视频包的时序。可以尝试暂时关闭交织功能进行对比测试。用仪器抓波使用MIPI协议分析仪或高速示波器抓取DSI波形直接观察数据包结构、时序和内容是否正确。问题2系统进入低功耗模式后无法唤醒显示。排查思路检查ULPS退出序列这是最常见的原因。确认软件严格按照手册15.4.3.7.1的步骤执行先改变TxULPSExit等待ULPSActiveNot确认中断启动GP定时器等待Twakeup超时最后才将TxUlpsClk等信号置为无效。顺序错误或等待时间不足都会导致失败。检查电源状态通过PWR_STATUS和PLL_PWR_STATUS寄存器确认复合I/O和PLL是否已成功恢复到ON状态。检查时钟和接口使能唤醒后确认CIO_CLK_ICG已关闭时钟开启DSI_CTRL[0] IF_EN已置1相关VC也已使能。检查PHY重新初始化有些PHY在从ULPS或OFF状态唤醒后需要重新进行部分校准或初始化。参考PHY的具体数据手册。问题3使用命令模式DMA传输大量数据如图片时出现数据丢失或错位。排查思路检查乒乓缓冲状态在DMA传输中通过查询PP_BUSY位或使用PP_BUSY_CHANGE_IRQ中断来确保前一个数据包已发送完毕缓冲区空闲后再配置下一个包的头和启动DMA。盲目连续写入会导致数据覆盖。检查DMA与CPU的竞态确保在CPU配置包头寄存器和DMA填充Payload寄存器之间没有其他任务或中断篡改这些寄存器。必要时使用锁或原子操作。检查Payload大小确认LONG_PACKET_HEADER中的Word Count值与实际DMA传输的字节数完全匹配。多一个或少一个字节都会导致后续数据包解析错乱。检查内存对齐与缓存确保DMA源地址的内存是缓存一致的必要时进行cache clean操作并且数据格式符合预期。问题4使能自动HS时钟停止后偶尔出现显示异常。排查思路检查DSI_STOPCLK_LATENCY这是首要怀疑对象。按照手册CAUTION中的公式重新计算并增大该寄存器的值给时钟停止/启动留出足够的安全余量。检查触发条件确认DSIStopClk的断言条件是否被意外满足。例如检查是否所有VC都已正确禁用或处于非HS模式。暂时禁用自动停止将HS_AUTO_STOP_ENABLE设为0使用手动模式或保持时钟常开看问题是否消失。如果消失则问题肯定与时钟管理相关。调试DSI这类高速接口逻辑分析仪或协议分析仪是必不可少的工具。它能让你直观地看到数据包流、时序关系、LP/HS状态切换是定位复杂问题的终极手段。在软件调试时充分利用好芯片提供的调试中断如传输错误中断、各种状态变化中断也能极大提升排查效率。