1. 项目概述与核心价值
在嵌入式视觉系统里,把摄像头传感器采集到的海量图像数据,稳定、高效地“搬”到处理器(SoC)里,是个既基础又充满挑战的活儿。MIPI CSI-2协议,就是这个搬运过程中的“高速公路交通规则”。它定义了从物理层差分信号到数据包格式的一整套标准,让不同厂商的传感器和处理器能说同一种语言。但光知道交规还不够,你得会开车,更得懂这辆“车”——也就是集成了CSI-2控制器IP的SoC——各个部件的脾气和调节旋钮在哪里。
我手头这份TI某款芯片的TRM(技术参考手册)寄存器片段,就是这辆“车”最核心的驾驶舱仪表盘和操控杆。它没有讲抽象的协议理论,而是直接给出了实现层面的关键控制点:虚拟通道(Virtual Channel)的FIFO状态如何监控,以及视频时序(Video Timing)的消隐期(Blanking Period)如何被精细利用。这两个问题,恰恰是我们在调试高分辨率、高帧率摄像头,或者设计多路传感器融合系统时,最容易卡壳、也最影响最终画质和稳定性的地方。理解并配置好这些寄存器,意味着你能从“协议通了”进阶到“图像优了”,真正榨干硬件带宽,避免卡顿、花屏、丢帧这些烦人的问题。无论你是正在调试手机前置摄像头驱动的工程师,还是在设计自动驾驶多目视觉系统的架构师,这些寄存器背后的设计逻辑和配置技巧,都是绕不开的实战经验。
2. 核心概念深度解析:虚拟通道与视频时序
在深入寄存器之前,我们必须把CSI-2协议里两个最核心的“抽象概念”落地,弄清楚它们在硬件里到底对应着什么,以及为什么要如此设计。
2.1 虚拟通道(Virtual Channel):物理链路上的逻辑“车道”
你可以把CSI-2的一对差分数据线(一个Data Lane)想象成一条单向高速公路。如果只有一个摄像头往一个处理器传数据,这条高速路够用了。但如果我想在这条路上同时跑多个摄像头的数据流,或者跑同一个摄像头产生的图像数据和嵌入式数据(比如统计信息、3A数据),怎么办?
CSI-2的答案是:虚拟通道。它在同一条物理链路上,通过数据包头中的一个2-bit字段(VC ID),划分出最多4条逻辑“车道”(VC0-VC3)。不同来源、不同类型的数据包,被赋予不同的VC ID,然后在接收端(Rx)根据这个ID被分拣到不同的“卸货区”——也就是独立的FIFO缓冲区。
为什么需要独立的FIFO?这是关键。假设VC0传输1080P@60fps的主图像,VC1传输相机模块的温度和状态信息。图像数据量大且需要连续、稳定的高带宽,状态信息数据量小但可能要求低延迟响应。如果它们共享一个FIFO,小数据包可能被大数据流淹没,导致读取延迟;或者状态信息阻塞了FIFO,影响图像流的连续性。为每个VC分配独立的FIFO,实现了流量隔离与服务质量(QoS)保障。接收端处理器可以独立地监控每个FIFO的填充状态(CSI2_RX_FIFO_VC_FULLNESS),并据此以不同的优先级或策略去服务不同的数据流。例如,图像流的FIFO快满了就立刻触发DMA搬运,而状态信息流的FIFO则可以等积累到一定量再读取。
在发送端(Tx),同样存在CSI2_TX_FIFO_VC_EMPTINESS寄存器,它指示的是发送FIFO的“空余程度”。这告诉上游数据源:“对应VC的发送缓冲区还有多少空间可以接收新数据”,用于实现流量控制,防止上游写入过快导致数据溢出(Overflow)。
2.2 视频时序与消隐期:被“浪费”的黄金时间
一张数字图像,并非所有时间都在传输有效的像素数据。以一行图像为例,它由三部分组成:
- 有效像素区(Active Video):传输实际的图像像素。
- 水平消隐期(Horizontal Blanking):包括水平后沿(HBP, Horizontal Back Porch)、水平同步(HSA, Horizontal Sync)、水平前沿(HFP, Horizontal Front Porch)。这段时间电子束从上一行的末尾回到下一行的开头,不包含图像信息。
一帧图像由多行组成,在帧与帧之间,同样存在垂直消隐期(Vertical Blanking),包括垂直后沿(VBP)、垂直同步(VSA)、垂直前沿(VFP)。
在传统的并行接口中,消隐期就是“空等”,总线处于空闲状态。但在高速串行接口如CSI-2中,这是一个巨大的带宽浪费。因此,协议允许在消隐期内交织(Interleaving)传输其他数据包,通常是命令模式(Command Mode)的短包(如用于控制传感器的I2C指令或寄存器读写)。
这里就引出了CSI2_VM_TIMING4/5/6等寄存器的核心作用:精细化管理消隐期资源。
HSA_HS_INTERLEAVING,HFP_HS_INTERLEAVING,HBP_HS_INTERLEAVING:这三个寄存器字段(在CSI2_VM_TIMING4中)分别定义了在HSA, HFP, HBP这三个水平消隐期子阶段内,最多可以插入多少个高速(HS)模式的命令包(以HS字节时钟周期为单位)。HS模式是高速数据传输状态,在此状态下插入命令包,效率最高,但必须确保不干扰下一行有效像素的准时开始。HSA_LP_INTERLEAVING等(在CSI2_VM_TIMING5中):同样定义了在水平消隐期内,可以发送多少个低功耗(LP)模式的命令包字节。LP模式速度慢,但功耗低,适合发送不紧急的配置命令。BL_HS_INTERLEAVING和BL_LP_INTERLEAVING(在CSI2_VM_TIMING6中):这两个字段的管控范围更大,覆盖了整个垂直消隐期(VSA, VBP, VFP)。因为垂直消隐期时间远长于水平消隐期,所以它们的计数值范围也更大(0-65535),允许在帧间插入更多的控制命令或辅助数据。
配置这些值的艺术在于权衡:值设小了,消隐期带宽被浪费,可能影响相机控制命令的响应速度;值设大了,可能侵占为下一行/下一帧像素数据预留的稳定时间,导致时序紧张,甚至引发图像撕裂或同步错误。这需要根据具体的传感器特性、像素时钟、以及系统控制命令的流量来综合计算。
3. 关键寄存器详解与配置策略
理解了上述原理,我们再来看这些寄存器,就不再是一堆冰冷的位域,而是一个个可以调节系统性能的旋钮。
3.1 FIFO状态监控寄存器:系统健康的“听诊器”
1. CSI2_RX_FIFO_VC_FULLNESS (Offset: 7Ch)这个只读寄存器是接收端(处理器侧)的“流量仪表盘”。它被划分为4个8-bit字段,分别对应VC0到VC3。
- 位域:
VCx_FIFO_FULLNESS(x=0~3) - 功能:反映分配给对应虚拟通道的接收FIFO的当前填充程度。
- 取值与计算:它的值范围是0到
CSI2_GNQ.RX_FIFODEPTH - 1。这里的CSI2_GNQ.RX_FIFODEPTH是一个全局配置寄存器,定义了每个VC FIFO的深度(以33-bit为单位,包含32位数据+1位包尾标识)。例如,如果RX_FIFODEPTH配置为64,那么FULLNESS值63代表FIFO几乎全满(有63个33-bit单元有数据),值0代表FIFO空。 - 实战用法:
- DMA触发策略:通常,我们会配置DMA控制器,当某个VC的FIFO填充度达到某个阈值(Threshold)时,自动发起DMA传输,将数据搬移到系统内存。这个阈值就需要参考
FULLNESS值来设置。设置得太高(如接近深度),虽然DMA效率高(单次搬运数据多),但增加了FIFO溢出的风险;设置得太低,则DMA触发过于频繁,增加系统开销。 - 调试与监控:在调试图像断流、卡顿问题时,持续读取此寄存器,可以判断问题是出在传感器发送端(FIFO一直很空),还是处理器接收/处理端(FIFO一直很满,说明消费太慢)。
- DMA触发策略:通常,我们会配置DMA控制器,当某个VC的FIFO填充度达到某个阈值(Threshold)时,自动发起DMA传输,将数据搬移到系统内存。这个阈值就需要参考
2. CSI2_TX_FIFO_VC_EMPTINESS (Offset: 84h)这是发送端(通常指处理器向显示模块发送数据,或在回环测试中)的“缓冲区空余指示器”。
- 功能:反映分配给对应虚拟通道的发送FIFO的当前空余程度。
- 取值:同样是0到
CSI2_GNQ.TX_FIFODEPTH - 1。但注意,这里是EMPTINESS(空余度)。值为0表示FIFO全空,值为DEPTH-1表示FIFO几乎全满(只剩一个单元空余)。 - 实战用法:
- 流控(Flow Control):软件或DMA在向TX FIFO写入数据前,应先查询此寄存器。如果
EMPTINESS值很小(例如小于一个突发写入的数据量),就应该暂停写入,等待发送器将数据发出、FIFO空出更多空间,防止写溢出。这是实现稳定发送的基础。 TX_FIFO_NOT_EMPTY状态位:在CSI2_VC_CTRL寄存器中,还有一个TX_FIFO_NOT_EMPTY位(只读),它是一个更粗略的布尔状态,快速告诉你FIFO里还有没有数据,适合用于判断一次传输是否完全结束。
- 流控(Flow Control):软件或DMA在向TX FIFO写入数据前,应先查询此寄存器。如果
3.2 视频时序与交织控制寄存器:带宽优化的“调度器”
这一组寄存器(CSI2_VM_TIMING4/5/6/7/8)共同协作,管理视频模式下的数据传输时序和命令包插入策略。
1. CSI2_VM_TIMING4/5/6:消隐期交织控制器如前所述,TIMING4和TIMING5分别控制水平消隐期内HS和LP命令包的插入额度,TIMING6控制垂直消隐期内的额度。
- 配置计算示例:假设你的系统像素时钟为148.5MHz(对应1080p60),HS字节时钟为594MHz(假设4个data lane)。水平消隐期总时间(HTotal - HActive)为280个像素时钟周期。你想在HBP期间插入一些HS命令包。
- 首先,需要知道一个HS字节时钟周期是多少时间:
1 / 594MHz ≈ 1.68ns。 - 然后,计算HBP的时间长度:假设HBP=88个像素时钟,则
88 / 148.5MHz ≈ 592ns。 - 接着,确定你要插入的命令包大小。一个典型的短包(如帧开始)约6个字节。在HS模式下,传输6个字节需要的时间约为
6 * 1.68ns ≈ 10ns。 - 最后,考虑协议开销(如LP到HS切换时间),预留一定余量。你可以设置
HBP_HS_INTERLEAVING为一个值,比如10(代表10个HS字节时钟周期)。这大约允许10 * 1.68ns ≈ 16.8ns的HS传输时间,足够容纳一个短包,且远小于HBP的592ns,非常安全。
- 首先,需要知道一个HS字节时钟周期是多少时间:
- 注意事项:
- LP与HS的选择:LP模式兼容性最好,但速度慢(~10Mbps)。HS模式快,但需要链路处于HS状态。在视频流传输中,链路本就处于HS状态,因此在消隐期插入HS包效率最高。
TIMING4和TIMING5的配置通常是互补的,你需要根据命令的紧急程度和功耗考虑来分配额度。 BL_字段的全局性:垂直消隐期很长(通常是几百到上千行的时间),这里是进行大批量寄存器配置或读取传感器大量状态信息的黄金窗口。BL_HS_INTERLEAVING可以设置得比较大,以允许传输长包。
- LP与HS的选择:LP模式兼容性最好,但速度慢(~10Mbps)。HS模式快,但需要链路处于HS状态。在视频流传输中,链路本就处于HS状态,因此在消隐期插入HS包效率最高。
2. CSI2_VM_TIMING7:HS模式切换延迟补偿这个寄存器至关重要,它定义了进入和退出高速模式所需的“准备时间”。
ENTER_HS_MODE_LATENCY:从发起进入HS模式的请求(TxRequestHS拉高),到真正准备好可以开始传输HS数据(TxReadyHS拉高)之间的延迟,以HS字节时钟周期计。EXIT_HS_MODE_LATENCY:从请求退出HS模式(TxRequestHS拉低),到链路完全回到LP-11状态,可以接受下一次HS模式请求的最大延迟。- 为什么需要配置这个?这个延迟是由物理层(PHY)的电路特性决定的,比如PLL锁定时间、驱动电路开启/关闭时间。如果协议控制器(Protocol Engine)在PHY还没准备好时就发送数据,会导致数据错误。因此,必须根据所用PHY的数据手册,正确配置这两个值。通常PHY厂商会给出一个推荐值或范围。
3. CSI2_VM_TIMING8:水平前沿扩展HFPX是HFP寄存器的扩展位(仅2位)。有些超高分辨率或特殊定时的视频格式,其HFP值可能超过8位寄存器(0-255)所能表示的范围。HFPX作为高2位,与原始的HFP寄存器(假设在CSI2_VM_TIMING1中)共同组成一个10位的HFP值。这在配置4K或更高分辨率时序时需要留意。
3.3 虚拟通道控制寄存器:通道的“大脑”
CSI2_VC_CTRL_0到CSI2_VC_CTRL_3这四个寄存器(每个VC一个)是配置一个虚拟通道所有行为的核心。
关键位域解析与配置逻辑:
VC_EN(Bit 0):通道总开关。黄金法则:在修改本VC的任何其他配置寄存器之前,必须确保VC_EN = 0(通道禁用)。配置完成后,再置1启用。试图在通道使能时修改配置,行为是未定义的,很可能导致总线挂死或数据错误。SOURCE(Bit 1) 与VP_SOURCE(Bit 13):这两个位共同决定数据来源。- 当
MODE=0(命令模式)时,SOURCE位选择数据来自OCP总线(0)还是视频端口(1)。如果选择视频端口,且芯片有多个视频端口,则由VP_SOURCE选择具体是VP1还是VP2。 - 当
MODE=1(视频模式)时,SOURCE被忽略,数据强制来自视频端口,并由VP_SOURCE选择具体端口。视频模式下,一个视频端口只能绑定到一个虚拟通道。这是硬件限制,软件必须保证。
- 当
MODE(Bit 4):选择通道工作模式。命令模式用于传输控制命令和静态图像数据(如拍照);视频模式用于传输连续的视频流。模式选择直接影响数据打包、同步信号生成和时序处理。BTA_SHORT_EN/BTA_LONG_EN(Bit 2, 3):是否在发送完一个短包或长包后,自动发起总线 turnaround(BTA)。BTA用于从发送模式切换到接收模式,以读取从设备的响应(如I2C读操作)。如果该VC只需要写操作,可以关闭以节省时间。MODE_SPEED(Bit 9):仅在命令模式下有效。选择用LP模式还是HS模式发送命令包。对于需要快速响应的命令,选择HS模式。- DMA相关配置 (
DMA_TX/RX_REQ_NB,DMA_TX/RX_THRESHOLD): 这些位域将本VC的TX/RX FIFO与具体的DMA请求线绑定,并设置触发DMA的FIFO阈值。这是实现“数据来了自动搬走”无人化操作的关键。阈值设置需要与FIFO深度、数据包大小、系统中断响应时间匹配。 - 状态位 (
VC_BUSY,PP_BUSY,TX_FIFO_FULL,RX_FIFO_NOT_EMPTY等):这些只读位是软件查询通道状态、进行同步和错误处理的依据。例如,在发送一系列命令包前,可以先检查TX_FIFO_FULL和VC_BUSY,确保通道就绪。
3.4 撕裂效应(TE)相关寄存器:与显示同步的“节拍器”
CSI2_TE_HSYNC_WIDTH_x,CSI2_TE_VSYNC_WIDTH_x,CSI2_TE_HSYNC_NUMBER_x以及CSI2_VC_TE_x寄存器组,用于支持撕裂效应(Tearing Effect)同步信号。这在命令模式(如驱动LCD屏)下非常有用,目的是让CSI-2的数据发送与显示屏的刷新节奏同步,避免发送数据时屏幕正在扫描,导致图像撕裂。
- TE信号识别:
TE_HSYNC/VSYNC_WIDTH寄存器用于配置识别TE输入引脚上HSYNC/VSYNC信号的最小脉冲宽度(以CSI2_CLK周期×256为单位)。因为TE信号是异步输入,需要这个参数来进行可靠的同步和去抖。 - 传输触发:
TE_HSYNC_NUMBER定义了在VSYNC信号之后,再经过多少个HSYNC脉冲,才开始通过CSI-2发送一帧数据。这用于精确对齐数据发送与屏幕扫描行。 - VC级别的TE控制:
CSI2_VC_TE寄存器则是在每个虚拟通道上启用(TE_EN)和配置TE功能。TE_SIZE定义了当TE事件触发时,要发送多少字节的数据。这实现了“按需发送”,屏幕需要刷新多少,就发送多少数据,非常节能。
4. 完整配置流程与实操要点
假设我们要配置一个VC0,用于从视频端口1(VP1)接收1080p60的YUV422视频流,并启用DMA自动搬运至内存。
4.1 第一步:全局与视频端口初始化
在配置具体VC之前,需要先搭建好舞台。
- 配置PHY:根据传感器手册,配置CSI-2 PHY模块的lane数量、数据速率等。这部分通常有专门的PHY配置寄存器。
- 配置视频端口时序:根据1080p60的时序标准(如148.5MHz像素时钟,2200x1125总分辨率,同步极性等),配置
CSI2_CTRL1(对应VP1)或CSI2_CTRL2(对应VP2)寄存器中的VP_*_POL(同步极性)、VP_DATA_BUS_WIDTH(数据位宽,对于YUV422可能是16-bit)、VP_CLK_POL(时钟沿选择)等。确保视频端口能正确接收来自图像信号处理器(ISP)或传感器直接送来的并行视频流。 - 配置全局中断:如果需要,使能必要的全局错误中断(如ECC错误、同步头错误等)。
4.2 第二步:虚拟通道(VC0)详细配置
核心原则:先关闭通道,再配置。
- 禁用通道:向
CSI2_VC_CTRL_0写入数据,确保VC_EN位为0。 - 配置工作模式与数据源:
- 设置
MODE = 1(视频模式)。 - 设置
SOURCE位为任意值(视频模式下被忽略)。 - 设置
VP_SOURCE = 0(选择视频端口1)。 - 设置
MODE_SPEED为任意值(视频模式下被忽略)。
- 设置
- 配置DMA:
- 根据系统DMA控制器分配,设置
DMA_RX_REQ_NB,例如0,表示使用DMA请求线0。 - 设置
DMA_RX_THRESHOLD。对于1080p60的连续视频流,为了避免频繁中断,可以设置一个中等偏大的值,例如4(代表8 x 32 bits = 32字节)。这意味着当RX FIFO中积累的数据达到32字节时,才触发一次DMA请求。这个值需要结合FIFO深度(CSI2_GNQ.RX_FIFODEPTH)来定,通常设为FIFO深度的1/4到1/2较为合适。
- 根据系统DMA控制器分配,设置
- (可选)配置数据格式与校验:
- 如果是RGB565格式,可能需要配置
RGB565_ORDER。 - 为了数据可靠性,可以启用
ECC_TX_EN(发送端生成ECC)和CS_TX_EN(发送端生成校验和)。注意,接收端也需要相应能力来校验。
- 如果是RGB565格式,可能需要配置
- 配置时序与交织参数:
- 根据传感器特性和系统需求,配置
CSI2_VM_TIMING4/5/6中的交织参数。对于1080p60,如果系统没有大量实时控制命令,可以将这些值设为0或一个较小的安全值。 - 关键步骤:根据PHY手册,正确配置
CSI2_VM_TIMING7中的ENTER_HS_MODE_LATENCY和EXIT_HS_MODE_LATENCY。假设PHY手册要求至少10个HS时钟周期,我们可以配置为12(留有余量)。
- 根据传感器特性和系统需求,配置
- 启用通道:将配置好的
CSI2_VC_CTRL_0值中的VC_EN位置1,然后写入寄存器。此时,通道开始等待视频数据。
4.3 第三步:启动传输与监控
- 启动视频源:配置传感器或ISP开始输出视频流到VP1。
- 监控FIFO状态:在软件中,可以定期轮询或通过中断方式检查
CSI2_RX_FIFO_VC_FULLNESS寄存器。在系统稳定运行时,这个值应该在一个范围内波动(例如在阈值附近),不会持续为0(表示数据没进来)或持续为最大值(表示DMA来不及搬,可能丢帧)。 - 验证DMA:检查DMA控制器是否正确配置了目标内存地址,并确认内存中正在持续写入正确的图像数据。
5. 常见问题排查与调试心得
在实际调试中,寄存器配置不当会导致各种奇怪现象。以下是一些典型问题及排查思路:
问题1:图像花屏、错位或颜色异常。
- 排查点1:视频端口时序与极性。这是最常见的原因。检查
CSI2_CTRL1/2中的VP_HSYNC_POL,VP_VSYNC_POL,VP_DE_POL,VP_CLK_POL是否与传感器输出完全一致。用示波器测量传感器输出的实际波形,与寄存器配置逐项核对。一个技巧:先将极性都设为0(低有效),这是最常见的配置。 - 排查点2:数据位宽和格式。检查
VP_DATA_BUS_WIDTH。YUV422 8-bit每像素通常用16位总线传输;RAW10/12/14数据可能需要24位总线。同时确认处理器端图像处理管线(ISP或后处理单元)期望的数据格式与传感器输出、CSI-2接收配置是否对齐。 - 排查点3:PHY的Lane映射。确认物理连接的数据通道(Lane0, Lane1...)与PHY及协议层的Lane分配寄存器是否匹配。接反了会导致数据严重错乱。
问题2:图像不稳定,偶尔出现撕裂或横条纹。
- 排查点1:FIFO溢出或下溢。持续监控
CSI2_RX_FIFO_VC_FULLNESS。如果经常达到最大值或最小值,说明生产者(传感器)和消费者(DMA)速度不匹配。调整DMA触发阈值(DMA_RX_THRESHOLD),或检查系统总线是否过于繁忙导致DMA搬运延迟。 - 排查点2:消隐期交织冲突。如果使能了消隐期交织传输命令包,尝试将
CSI2_VM_TIMING4/5/6中的相关值调小或设为0。可能是插入的命令包占用了过多时间,挤占了下一行有效像素开始的准备时间。 - 排查点3:HS模式切换时序。检查
CSI2_VM_TIMING7的延迟配置是否符合PHY要求。如果设置过小,PHY未准备好就切换状态,会导致链路不稳定。可以尝试适当增大该值。
问题3:命令模式(如I2C over CSI-2)控制无响应或响应错误。
- 排查点1:虚拟通道使能状态。确保发送命令的VC已正确使能(
VC_EN=1),且MODE=0(命令模式)。 - 排查点2:BTA(总线转向)配置。如果是读操作,必须确保
BTA_SHORT_EN或BTA_LONG_EN已使能(取决于包类型),或者能够手动控制BTA_EN位。没有BTA,主机无法切换到接收模式去读取从设备的回复。 - 排查点3:TX FIFO状态。在写入命令数据到
CSI2_VC_LONG_PACKET_PAYLOAD等寄存器前,先检查CSI2_VC_CTRL中的TX_FIFO_FULL位和TX_FIFO_NOT_EMPTY位。如果FIFO已满,写入会失败。需要等待TX_FIFO_EMPTINESS显示有空闲空间。 - 排查点4:命令包格式与ECC/CS。确认写入
CSI2_VC_LONG_PACKET_HEADER的包头(Data ID, Word Count, ECC)格式正确。如果启用了ECC_TX_EN,硬件会自动计算ECC并覆盖包头中的ECC字段,软件写入的ECC值会被忽略,这一点要特别注意。
调试心得:
- 寄存器配置的“原子性”:对于
CSI2_VC_CTRL这类包含多个控制字段的寄存器,尽量在内存中构造好完整的值,然后一次写入。避免多次读-修改-写回操作,因为在多任务或中断环境下,这可能导致配置不一致的短暂窗口期。 - 善用只读状态位:
VC_BUSY,PP_BUSY, 各种FIFO状态位是判断硬件忙闲、进行流程同步的最直接依据。在发起任何可能受硬件状态影响的操作前(如修改配置、写入大量数据),先查询这些状态位。 - 从简到繁:初始调试时,先使用最简配置。例如,视频模式先关闭所有消隐期交织(设为0),命令模式先使用LP模式、关闭BTA自动使能,只进行简单的写寄存器操作。等基础通路调通后,再逐步增加高级功能(HS命令、交织、BTA、ECC等)。
- 逻辑分析仪/协议分析仪是关键:仅靠读取寄存器很难定位复杂的时序问题。一台支持MIPI CSI-2解码的逻辑分析仪或专用的协议分析仪是必备工具。它能直观地显示链路上的数据包、VC ID、错误信息、HS/LP状态切换,是验证寄存器配置是否真正生效的“照妖镜”。通过分析仪,你可以直接看到消隐期里是否按你配置的数量插入了命令包,HS切换延迟是否足够,从而精准调整
VM_TIMING系列寄存器的值。