STM32
直播中

yqdedli

9年用户 984经验值
擅长:控制/MCU
私信 关注
[问答]

VD55G1没有帧传输是什么原因?

按照数据手册所示,已经进入Stream状态,但是REPEAT_COUNT CURRENT_CONTEXT NEXT_CONTEXT一直是0 0 1,并且接收端中断不触发,这是什么原因
另外,读取STREAMING_FSM,是37,数据手册上没有该数值

回帖(1)

京五环以外

2025-8-11 17:10:47

根据您描述的VD55G1问题(进入Stream状态但无帧传输、寄存器值异常 REPEAT_COUNT CURRENT_CONTEXT NEXT_CONTEXT = 0 0 1、接收端中断不触发、STREAMING_FSM = 37 未定义),这通常表明传感器未能正常启动帧生成和传输。以下是可能的原因和排查步骤:




主要原因分析




  1. 帧同步信号(FSYNC)问题



    • 未提供有效FSYNC信号:VD55G1需要外部FSYNC信号触发帧传输(具体模式取决于配置)。

    • 配置错误CONTEXT_CTRL 寄存器可能未正确配置为外部同步模式(如 FSYNCTRIGGER)。

    • 信号质量问题:FSYNC信号的电平、时序或毛刺不符合要求(需用示波器确认)。




  2. 关键寄存器配置错误



    • LINE_REPEAT_COUNT 未设置:该寄存器定义每帧的行数,若为0则不会触发帧传输。

    • CONTEXT_n 寄存器组异常:上下文配置(如曝光、增益)未正确加载或存在冲突。

    • 时钟配置错误:像素时钟未使能或频率异常(如未开启 PXL_CLK_EN)。




  3. 硬件链路问题



    • MIPI CSI-2 链路不稳定:DPHY未锁定、lane对齐错误、信号完整性差(需检查眼图)。

    • 供电/复位异常:传感器内核电压不稳或复位不彻底(尤其是软件复位后未重新加载配置)。




  4. 状态机卡死 (STREAMING_FSM = 37)



    • 未定义状态37:通常表示状态机因异常条件停滞(如初始化未完成、关键资源冲突)。






详细排查步骤


1. 检查帧同步与触发配置



  • 确认 CONTEXT_CTRLFRM_MODE 字段:

    • 若需外部触发:检查FSYNC信号是否到达(示波器测量),配置为 FSYNC_MODE = 1

    • 若为内部自由运行:检查 AUTO_FRM 是否使能,并设置合理的 FRM_INTERVAL


  • 验证 GPIO 配置:FSYNC引脚是否映射到正确的GPIO(参见 GPIO_CTRL 寄存器)。


2. 验证关键寄存器配置



  • LINE_REPEAT_COUNT:必须 >0(例如1080行对应值1080)。

  • REPEAT_COUNT:若为0,表明帧缓冲区未初始化(检查 FRM_CTRLFRM_BUF_* 配置)。

  • CURRENT_CONTEXT/NEXT_CONTEXT

    • 0 0 1 表示卡在加载Context 0(检查Context 0的配置是否有效)。

    • 确认 CONTEXT_0ENABLE 位已置位,且参数(曝光、增益)合法。


  • 时钟配置

    • 确保 CLK_CTRLPXL_CLK_EN = 1MIPI_CLK_EN = 1

    • 检查输入时钟频率(REF_CLK)是否符合手册要求(通常24-27MHz)。



3. 排查MIPI链路问题



  • 物理层检查

    • 用示波器测量MIPI差分信号:确认电压摆幅、共模电压在规格内。

    • 检查lane连接:是否与接收端(如ISP)的lane数量和极性匹配。


  • 协议层检查

    • 确认接收端已正确配置VD55G1的MIPI参数(data type、VC ID等)。

    • 检查接收端是否检测到DPHY锁定(查看接收端寄存器状态)。



4. 分析状态机异常 (FSM=37)



  • 读取错误寄存器

    • 检查 ERR_STATUS 寄存器,确认是否有硬件错误(如时钟丢失、校准失败)。

    • 查看 INIT_STATUS:确保初始化流程完成(应为全1)。


  • 执行复位

    • 尝试硬件复位(拉低RESET引脚 >1ms)。

    • 发送软件复位命令:写 SOFT_RESET = 1(等待 >10ms 后重新配置寄存器)。



5. 调试中断问题



  • 发送端中断

    • 检查VD55G1的 INT_ENABLE 是否配置了帧结束中断(如 FRM_END_INT_EN)。

    • 读取 INT_STATUS 确认是否有中断产生(如有但接收端未收到,可能是GPIO映射错误)。


  • 接收端中断

    • 确认接收端MIPI CSI-2控制器是否使能了中断(如帧接收完成中断)。

    • 检查接收端是否检测到VSYNC/HSYNC嵌入数据包(VD55G1需配置为发送同步包)。





快速自测建议


// 示例:关键寄存器检查列表(需适配您的具体寄存器地址)
uint32_t check_regs[] = {
  0x0000, // CLK_CTRL (确保时钟使能)
  0x0100, // CONTEXT_CTRL (模式选择)
  0x0208, // LINE_REPEAT_COUNT (行数>0)
  0x0300, // CONTEXT_0_CTRL (Context 0使能)
  0x1000, // INIT_STATUS (所有位=1)
  0x2000  // ERR_STATUS (所有位=0)
};

// 执行软复位后重新初始化
write_reg(VD55G1_BASE, SOFT_RESET, 0x1);
delay_ms(20);
reconfigure_all_registers(); // 重新加载完整配置



结论


问题根源可能为:



  1. 帧触发机制失效(FSYNC未输入或配置错误)。

  2. 关键寄存器未初始化(如 LINE_REPEAT_COUNT=0)。

  3. MIPI链路故障(物理层/协议层不兼容)。

  4. 状态机因硬件异常卡死(需检查供电/时钟/复位信号完整性)。


下一步行动



  • ✅ 优先用示波器检查FSYNC和MIPI时钟/数据信号。

  • ✅ 验证 LINE_REPEAT_COUNTCONTEXT_0 配置。

  • ✅ 执行软复位并重载配置,监控 STREAMING_FSM 状态变化。


若上述步骤无效,建议联系原厂FAE获取内部状态机37的具体定义(可能涉及未公开的校准错误)。

举报

更多回帖

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