This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS90UB960-Q1: 我使用了UB960连接4个UB953,目前得到的画面有重影情况

Part Number: DS90UB960-Q1
Other Parts Discussed in Thread: ALP

只有/dev/video0可以取到画面,重影画面如下,看起来是4个画面叠加的结果

读取了

CSI_VC_MAP Register (Address 0x72)

结果是0xE4

这可能是哪里的问题?

  • 您好,为了更好的解决您的问题,我将您的这个帖子转给我同事,她会帮您升级到美国工程师那里,由资深工程师给您解答。

  • 您好,

    寄存器0x72是一个虚拟通道映射寄存器。 默认情况下该位为0xE4,因此传入 CSI-2数据包的 VC-ID 映射如下:VD-ID of 3 = 3, VC-ID of 2 = 2, VD-ID of 1 = 1, and VD-ID of 0 = 0。 如果需要,您可以根据 SOC 的配置重新映射它们。

    能否提供下960的寄存器转储?

    此外您能否分享下用于寄存器编程的任何脚本? 

  • 下面的buf是系统在启动时写入90UB960的寄存器地址和对应的写入值

    u8 buf[41][2] = {{0x01,0x07},{0x0c,0x0F},{0x1f,0x02}\

    ,{0x4c,0x01},{0x6d,0x7c},{0x58,0x5e},{0x5c,0x30},{0x5d,0x94},{0x65,0x94},{0x5e,0xda},{0x66,0xda}\

    ,{0x4c,0x12},{0x6d,0x7c},{0x58,0x5e},{0x5c,0x32},{0x5d,0x94},{0x65,0x84},{0x5e,0xda},{0x66,0xca}\

    ,{0x4c,0x24},{0x6d,0x7c},{0x58,0x5e},{0x5c,0x34},{0x5d,0x94},{0x65,0x74},{0x5e,0xda},{0x66,0xba}\

    ,{0x4c,0x38},{0x6d,0x7c},{0x58,0x5e},{0x5c,0x36},{0x5d,0x94},{0x65,0x64},{0x5e,0xda},{0x66,0xaa}\

    ,{0x1f,0x02},{0x32,0x01},{0x33,0x03},{0x21,0x00},{0x20,0x00},{0x21,0x01}

    读取90UB960的寄存器值如下

  • 我们update给工程师看下。

  • 您好,

    根据以上提供的信息:

    1. Register 0x4D bit[4] LOCK_STS_CHG已标记,这意味着自上次读取寄存器以来,端口3的锁定已丢失。

    您能否确认对于每个端口,锁定是稳定的? 要做到这一点,您可以在寄存器0x4C 中选择端口并多次读取寄存器0x4D,并且每次读取之间存在延迟。 PASS 和 LOCK 应保持高电平,而 LOCK_STS_CHG 保持低电平。 

    2. 寄存器0x4E 报告线数变化和缓冲区溢出错误。 

    缓冲器溢出错误意味着要转发的输入带宽之和超过了输出带宽(请参见960数据表中的第7.4.20节)。 这可能会导致视频数据丢失。 您能否提供以下成像仪参数,以便我们帮助您检查您是否能够聚合4个视频输入? 

    • Horizontal active pixels
    • Vertical total lines
    • Frame rate
    • Bits per pixel 
    • Clock type (continuous or non-continuous)
    • CSI-2 lane speed
    • Number of CSI-2 lanes
    • Forwarding mode - looks like you are using best effort round robin, correct? 

    3. 对 CSI-2转发进行编程时,请确保在寄存器0x20中启用转发之前对寄存器0x21进行编程。 

    • Horizontal active pixels    :1600
    • Vertical total lines             :1315
    • Frame rate                        :30fps
    • Bits per pixel                     :YUV422 8bit UYVY
    • Clock type (continuous or non-continuous)   :continuous 
    • CSI-2 lane speed               :800 Mbps
    • Number of CSI-2 lanes     :2-lane
    • Forwarding mode - looks like you are using best effort round robin, correct? :我尝试了其他的

      Synchronized CSI-2 Forwarding都无法从mipi接口处测量到波形,只有

      Best-Effort才可以在mipi接口处测量到数据波形。并且在单路90UB953接入时可以获取到正常的图像。

  • LOCK_STS_CHG被标记可能是因为首次读取,后续的读取操作中未发现LOCK_STS_CHG被标记

  • 这个是从90UB953读取的全部寄存器值

  • 您好,

    和您确认下,当多次读取0x4E 时,该值是否仍为0x55并显示缓冲区错误?

    来自4个串行器的输入带宽似乎超过了发送器的输出带宽。 输入带宽总和约为4.04Gbps (H*V*frame rate*(bits/pixel)*blanking*4 cameras)。

    您试下增加960 CSI-2输出带宽? 由于输出带宽取决于多个因素,因此可以参阅960数据表中的第7.4.20节进行计算。 

    此外,还有一个介绍 CSI-2聚合的training video

  • 我分别将0x4C寄存器设置为0x01,0x12,0x24,0x38只有首次读取0x4E时是0x55,后续都是0x04
    不过当0x4C寄存器被设置为0x38时,读取0x4E偶尔会出现0x14


    综上:只有在首次读取0x4E的时候会出现0x55,后面都不会出现

  • 您好,

    如果0x4E 偶尔读取0x14,则表示 Buffer_error 位已被标记。 在给定传感器和变送器配置的情况下,我们仍怀疑是视频缓冲器错误。

    您是否可以尝试增加 CSI-2输出带宽,以便输出带宽大于进入960的所有四个传感器的输入带宽? 

  • 我将0x1f寄存器设置为0x00,配合25MHz的晶振,CSI_TX速度应为1.6 Gbps
    这样计算的话带宽应为4.36Gbps。

    分别将0x4C寄存器设置为0x01,0x12,0x24,0x38只有首次读取0x4E时是0x45,后续都是0x04,未出现过BUFFER_ERROR被置位的情况。

    截取到的画面仍为四个摄像头画面重叠的结果,目前Forwarding mode配置的是effort round robin。

    是否应将Forwarding mode配置为同步转发模式?

    Basic Synchronized forwarding

    Line-Interleave forwarding

    Line-Concatenated forwarding

    我尝试将Forwarding mode配置为三种可选同步模式之中的任何一个时,CSI-TXD引脚都没有数据。是否应该在同步模式下继续查找问题?

  • 已将您的问题反馈给产品工程师,一旦有回复,会尽快告知您。

  • 如果后续读取的0x45都是0x04,则说明工作正常。

    您能否检查 960 寄存器 0x72 中的 VCID 是否正确编程?应将其编程为所期望的 SoC 。

    为了使用同步转发,到达输入端口的视频应在大约 1 个视频行周期内同步。您是否使用任何帧同步来同步传入的视频数据?所有成像器还需要相同的视频参数以进行同步转发。

    您是否按照数据表示例来配置同步转发?如果您检查 960 寄存器 0x35,您应该看到 TX_PORT_PASS 和 TX_PORT_SYNC 被标记为正常运行。

  • 960寄存器0x72的值是0xE4

    目前使用的摄像头都是一样的参数,当配置0x21寄存器为0x08(Line-Interleave forwarding)时,多次读取0x35寄存器会在0x01和0x00之间变化。

    未采取帧同步操作

  • 寄存器 0x72=0xE4 是默认值,但您可以根据您的系统更改 VD-ID 映射。SoC 将使用 VD-ID 映射来区分不同的数据流并聚合来自多个成像器的数据。您能否确认您系统中的VC-ID 映射是否正确?

    您是否在循环模式下在寄存器 0x35 中获得一致的 TX_PORT_PASS?问题是否只是重叠图像(因此不会出现屏幕闪烁或视频帧丢失)?

    您可以在960上启用patgen看看是否可以成功看到该数据吗?您可以使用 ALP 模式生成器选项卡根据您想要的视频参数生成适当的寄存器值。

    至于同步转发问题,如果没有帧同步,可能无法满足1个视频行周期内所有输入同步的要求。您能看到输入是否在一个视频行周期内对齐吗?如果不是,则可能需要帧同步才能使用同步转发。