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:DS90UB960配置参考示例

Guru**** 1807890 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1427574/ds90ub960-q1-ds90ub960-configuration-reference-example

器件型号:DS90UB960-Q1

工具与软件:

大家好、专家

在 TDA4VEN 上、我们使用串行解串器解决方案从摄像头获取数据、数据流如下:

OVX1F (x4)--> DS90UB933 --> DS90UB960 --> TDA4VEN (CSIRX)。

传感器输出格式: 1280×960@30fps、YUV422、8位

请提供解串器 DS90UB960的配置文件作为参考、谢谢!

此致、

Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bing:

    感谢您回答此问题。 我们很乐意为您提供有关该配置的帮助。 对于如何在此处使用 CSI 端口、您有什么反馈吗? 了解将使用哪些 CSI 端口以及速率非常重要。

    此致!

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    我使用的是 csirx0、它的速率为1.5G。

    此致、

    Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是 csirx0、

    ub960 (port0)--> tda4ven (csirx0)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bing:

    感谢您提供此背景信息。 是否需要任何东西来启动传感器流式传输? 例如、我们使用的一些传感器使用串行器的 GPIO1开始流式传输。

    此致!

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    例如、我们使用串行器的 GPIO1开始流式传输的一些传感器。

    我们也使用 GPIO1。

    我们现在将使用内部同步、稍后将使用外部同步。 外部同步需要 SoC 向 UB960输出 PWM、对吧?

    我们将 UB960的 GPIO0设置为接收外部 PWM 信号、因此请为我提供内部和外部同步的示例、谢谢!

    此致、

    Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bing:

    感谢您的参与。 将在明天提供脚本更新。

    此致!

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    感谢您的支持、我正在等待您提供的脚本!

    此致、

    Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    这是我的配置脚本、我无法获取映像、我不知道有什么问题。

    #!/bin/sh
    
    #UB960: 0x30          UB933: 0xb0        Sensor: 0x6c
    
    # TDA4VEN main_i2c0, regs 0x20000000
    
    TI960=0x30
    
    
    WriteI2C()
    {
        i2ctransfer -y -f 1 w2@$1 $2 $3
        sleep 0.1
    }
    
    WriteI2C $TI960 0x01 0x02 # reset all digital part
    sleep 1
    
    ## Internally generated framesync configuration
    WriteI2C $TI960 0x0C 0x0F   # enable RX0-3
    WriteI2C $TI960 0x4C 0x0F   # write enable for RX0-4 registers
    WriteI2C $TI960 0x1F 0x00   # set CSI-2 Transmitter Speed 1.6G
    WriteI2C $TI960 0x4C 0x01   # page to port RX0
    WriteI2C $TI960 0x6E 0xA9   # set RX0 SER GPIO1 output framesync signal
    WriteI2C $TI960 0x4C 0x12   # page to port RX1
    WriteI2C $TI960 0x6E 0xA9   # set RX1 SER GPIO1 output framesync signal
    WriteI2C $TI960 0x4C 0x24   # page to port RX2
    WriteI2C $TI960 0x6E 0xA9   # set RX2 SER GPIO1 output framesync signal
    WriteI2C $TI960 0x4C 0x38   # page to port RX3
    WriteI2C $TI960 0x6E 0xA9   # set RX3 SER GPIO1 output framesync signal
    # set Internally Generated FrameSync 30Hz, 2778 counts
    WriteI2C $TI960 0x19 0x03   # FS_HIGH_TIME_1
    WriteI2C $TI960 0x1A 0x9D   # FS_HIGH_TIME_0
    WriteI2C $TI960 0x1B 0x07   # FS_LOW_TIME_1
    WriteI2C $TI960 0x1C 0x3A   # FS_LOW_TIME_0
    WriteI2C $TI960 0x18 0x01   # enable framesync
    
    
    ## RX0-3 I2C pass through and slave ID configuration
    WriteI2C $TI960 0x4C 0x01   # page to port RX0
    WriteI2C $TI960 0x58 0x58   # enable passthrough
    WriteI2C $TI960 0x5C 0xB0   # set serializer alias
    WriteI2C $TI960 0x5D 0x6C   # imager slave ID, port0
    WriteI2C $TI960 0x65 0x6C   # imager slave alias, port0
    WriteI2C $TI960 0x6D 0x7F   # set Input Mode,raw10
    WriteI2C $TI960 0x7C 0xC1   # set frame valid polarity to active high
    
    WriteI2C $TI960 0x4C 0x12   # page to port RX1
    WriteI2C $TI960 0x58 0x58   # enable passthrough
    WriteI2C $TI960 0x5C 0xB0   # set serializer alias
    WriteI2C $TI960 0x5D 0x6C   # imager slave ID, port1
    WriteI2C $TI960 0x65 0x6C   # imager slave alias, port1
    WriteI2C $TI960 0x6D 0x7F   # set Input Mode,raw10
    WriteI2C $TI960 0x7C 0xC1   # set frame valid polarity to active high
    
    WriteI2C $TI960 0x4C 0x24   # page to port RX2
    WriteI2C $TI960 0x58 0x58   # enable passthrough
    WriteI2C $TI960 0x5C 0xB0   # set serializer alias
    WriteI2C $TI960 0x5D 0x6C   # imager slave ID, port2
    WriteI2C $TI960 0x65 0x6C   # imager slave alias, port2
    WriteI2C $TI960 0x6D 0x7F   # set Input Mode,raw10
    WriteI2C $TI960 0x7C 0xC1   # set frame valid polarity to active high
    
    WriteI2C $TI960 0x4C 0x38   # page to port RX3
    WriteI2C $TI960 0x58 0x58   # enable passthrough
    WriteI2C $TI960 0x5C 0xB0   # set serializer alias
    WriteI2C $TI960 0x5D 0x6C   # imager slave ID, port3
    WriteI2C $TI960 0x65 0x6C   # imager slave alias, port3
    WriteI2C $TI960 0x6D 0x7F   # set Input Mode,raw10
    WriteI2C $TI960 0x7C 0xC1   # set frame valid polarity to active high
    
    
    ## CSI output configuration for basic synchronized forwarding
    WriteI2C $TI960 0x4C 0x01   # page to port RX0
    WriteI2C $TI960 0x70 0x1F   # RAW10_datatype_yuv422b10_VC0
    WriteI2C $TI960 0x7C 0xC1   # RAW10 use lower 8bit
    WriteI2C $TI960 0x4C 0x12   # page to port RX1
    WriteI2C $TI960 0x70 0x5F   # RAW10_datatype_yuv422b10_VC1
    WriteI2C $TI960 0x7C 0xC1   # RAW10 use lower 8bit
    WriteI2C $TI960 0x4C 0x24   # page to port RX2
    WriteI2C $TI960 0x70 0x9F   # RAW10_datatype_yuv422b10_VC2
    WriteI2C $TI960 0x7C 0xC1   # RAW10 use lower 8bit
    WriteI2C $TI960 0x4C 0x38   # page to port RX3
    WriteI2C $TI960 0x70 0xDF   # RAW10_datatype_yuv422b10_VC3
    WriteI2C $TI960 0x7C 0xC1   # RAW10 use lower 8bit
    WriteI2C $TI960 0x20 0x00   # [3:0]: 0: CSI-2 port 0; 1: CSI-2 port 1
    WriteI2C $TI960 0x21 0x04   # enable basic Synchronized forwarding for CSI port 0&1
    WriteI2C $TI960 0x32 0x01   # read from CSI port0, write to CSI port0
    WriteI2C $TI960 0x33 0x03   # enable CSI port0
    #WriteI2C $TI960 0x32 0x12   # read from CSI port1, write to CSI port1
    #WriteI2C $TI960 0x33 0x03   # enable CSI port1
    

    960寄存器:

    933个寄存器:

    此致、

    Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bing:

    谢谢、我在工作台上遇到了一些问题、因此从工作台上看到脚本也很有帮助。

    您的系统上是否也有其他端口的状态? 下面列出了一些评论:

    • 每个端口的别名应单独设置、这将允许访问每个单独的串行器。
    • 借助 YUV422 8分辨率、我们应该为 CSI 数据类型设置寄存器0x70 = 0x1E。 您能否确认这是否正确? 我在您的脚本中看到了0x1F。

    问题是您这边没有视频吗?

    此致!

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    如果分辨率为 YUV422 8位、我们应将寄存器0x70 = 0x1E 设置为 CSI 数据类型。 您能否确认这是否正确? 我在您的脚本中看到了0x1F。

    在我把它更改为0x1E 后、它运行正常。

    我计划实施一种热插拔、发现拔下任何摄像头模块(UB933+图像传感器)后、所有摄像头显示屏都无法正常工作、即使还有其他三个摄像头 模块、为什么会这样?

    此外、您可以建议一种可行的热插拔方式、只要它检测到 摄像头模块的拔下和插入即可。

    此致、

    Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bing:

    很高兴它在更改数据类型后效果更好。  

    对于同步转发模式、某些方法确实要求在链路丢失时禁用转发。 您能否在热插拔完成之前和之后读取寄存器0x22、0x35和0x37? 我怀疑由于数据流丢失、数据流的同步也已丢失。

    此致!

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    根据您的要求、读数如下:

    在正常情况下:

    0x22 = 0x01

    0x35 = 0x03

    0x37 = 0x0F

    拔下摄像头:

    0x22 = 0x04

    0x35 = 0x00

    0x37 = 0x0B

    此致、

    Bing

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bing:

    感谢您的快速响应。

    UB960 0x22 (FWD_STS)-移除摄像头后、SYNC 状态从 CSI0端口视频同步变为同步故障。

    UB960 0x35 (CSI_STS)-最初 TX 端口同步置为有效且 TX 端口通过置为有效-摄像头拔下后出现这些压降

    当热插拔完成时、是否可以禁用寄存器0x20中不再使用的端口的转发?  

    此致!

    Thomas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Thomas

    [报价 userid="520415" url="~/support/interface-group/interface/f/interface-forum/1427574/ds90ub960-q1-ds90ub960-configuration-reference-example/5490060 #5490060"]完成热插拔后、是否可以禁用寄存器0x20中不再使用的端口转发?  [报价]

    感谢您的支持、热插拔功能现已开始工作。

    此致、

    Bing