USB论坛
直播中

龙献益

8年用户 1070经验值
私信 关注
[问答]

求助,关于捕获正确的HSYNC和VSYNC信号及CyCx3UvcAppImageSensorSetVideoResolution配置的问题求解


  • HSYNC 和 VSYNC 信号问题:我使用示波器测量了 VSYNC 和 HSYNC 信号,但捕获的信号似乎不正确。 感觉好像信号没有被正确检测到。 在附图中,Ch1 代表 VSYNC,Ch3 代表 HSYNC。 由于我的 FPGA 设置为连续传输,我想知道这是否可能是问题的一部分。 有谁在连续传输或捕获这些信号时遇到过类似的问题吗?
  • CyCx3UvcAppImageSensorSetVideoResolution 连续 MIPI 传输的配置:由于来自 FPGA(Efinix T100)的连续传输,我不得不修改CyCx3UvcAppImageSensorSetVideoResolution函数。 不过,我不确定当前的设置是否正确。 这是代码片段和我的配置。 是否有人使用过 Efinix T100 FPGA 并在连续 MIPI 传输中遇到过类似的挑战?

回帖(1)

dplion5

2025-5-15 17:33:03

针对您遇到的HSYNC/VSYNC信号捕获问题和CyCx3Uvc配置问题,以下是分步分析和解决方案:




一、HSYNC/VSYRC信号问题诊断




  1. 信号极性验证



    • 检查示波器波形中同步信号的有效极性(上升沿或下降沿触发)

    • 对比传感器数据手册,确认FPGA生成的同步信号极性是否符合预期

    • 在CX3配置中检查CyCx3UvcAppImageSensorSetVideoResolutionsync参数设置:
      CyU3PMipicsiCfg_t csiConfig = {
      .sync = CY_U3P_CSI_SYNC_HIGH_ACTIVE  // 根据实际极性调整
      };




  2. 连续传输时序分析



    • 确认FPGA在连续传输模式下是否保留了垂直消隐(VBlank)水平消隐(HBlank)区间

    • 检查VSYNC脉冲间隔是否符合帧率要求:

      • 示例:1080p30的帧周期应≈33.3ms
























    • 使用示波器测量信号参数: 信号 预期特征 测量值
      VSYNC 每帧1个脉冲,宽度1-3行时间 持续高/低电平?
      HSYNC 每行1个脉冲,宽度数十CLK 是否有连续触发?





  3. 硬件链路排查



    • 检查MIPI CSI-2通道的物理连接(差分对阻抗、长度匹配)

    • 验证FPGA的MIPI时钟频率与CX3接收端配置是否一致

    • 使用Cypress Suite3工具抓取MIPI数据包验证链路完整性






二、CyCx3UvcAppImageSensorSetVideoResolution配置




  1. 关键参数配置模板


    CyU3PReturnStatus_t CyCx3UvcAppImageSensorSetVideoResolution(
    uint16_t width,
    uint16_t height,
    uint8_t fps)
    {
    CyU3PMipicsiCfg_t csiConfig = {
        .dataRate = 800,                // 单位MHz,需与FPGA输出匹配
        .laneCount = 2,                 // MIPI通道数
        .txTermination = CyTrue,        // 保持默认
        .hsSettle = 0x0D,               // HSYNC建立时间(参考传感器手册)
        .sync = CY_U3P_CSI_SYNC_HIGH_ACTIVE // 同步极性!!
    };

    CyU3PUvcVideoFormatDesc_t fmtDesc = {
        .width = width,
        .height = height,
        .frameRate = fps,
        .bpp = 12,                      // 根据实际数据位宽调整
        .colorspace = CY_U3P_UVC_COLOR_FORMAT_YUV,
        .hblank = 100,                  // 水平消隐周期(需≥传感器最小值)
        .vblank = 500                   // 垂直消隐周期(需≥传感器最小值)
    };

    return CyCx3UvcAppConfigureVideo(&csiConfig, &fmtDesc);
    }



  2. 连续传输模式特殊配置



    // 在初始化代码中添加:
    CyU3PMipicsiSetCtrl(CY_U3P_CSI_CTRL_VIDEO_MODE,
    CY_U3P_CSI_MODE_VIDEO_CONTINUOUS);  // 强制连续模式



// 禁用帧同步超时(防止误触发)
CyU3PMipicsiSetTimeout(0);



---

### **三、调试建议**
1. **信号采集验证**
   - 在CX3初始化阶段插入测试图案生成:
     ```c
     CyCx3UvcAppSetTestMode(CY_U3P_UVC_TESTMODE_COLOR_BAR);


  • 通过USB接口抓取视频数据,确认是否出现错帧/撕裂现象




  1. 信号捕获技巧



    • 使用示波器的触发模式捕捉单帧信号:

      • 设置VSYNC边沿触发

      • 捕获至少2个完整VSYNC周期


    • 测量关键时序参数:
      HSYNC周期 = 1/(width * fps)
      VSYNC周期 = 1/fps



































  2. 常见故障模式对照表 现象 可能原因 解决方案
    持续高/低电平 FPGA时序逻辑错误 检查FPGA的状态机设计
    信号抖动 MIPI时钟不稳定 降低数据速率,检查时钟树
    帧错位 HBlank/VBlank配置不足 增大消隐区间参数
    USB端花屏 同步极性错误 翻转CSI配置中的sync极性





四、Efinix FPGA侧检查清单




  1. 确认MIPI TX核心的时序约束满足:


    create_clock -name mipi_clk -period 5.0 [get_ports mipi_clk]
    set_input_delay -clock mipi_clk -max 2.0 [get_ports mipi_data*]



  2. 验证数据打包逻辑:



    • YUV422数据应打包为32-bit字(Y0UY1V格式)

    • 确保在消隐区间发送0x00填充数据




  3. 使用SignalTap抓取FPGA输出信号,确认HSYNC/VSYNC与数据对齐






建议首先使用Cypress官方提供的CyCx3UvcApp示例工程作为基线,逐步修改配置参数。如果问题仍然存在,可以提供以下信息进一步诊断:



  1. 传感器型号和输出格式

  2. FPGA生成的MIPI数据包结构示意图

  3. 完整的CyCx3UvcAppImageSensorSetVideoResolution实现代码

  4. 示波器捕获的HSYNC/VSYNC波形图(包含时间刻度)

举报

更多回帖

发帖
×
20
完善资料,
赚取积分