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-Q1:与 Raspberry Pi 或 Rockchip RK3566 搭配使用

Guru**** 2540720 points
Other Parts Discussed in Thread: DS90UB960-Q1, DS90UB953-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1565799/ds90ub960-q1-ds90ub960-q1-using-with-raspberry-pi-or-rockchip-rk3566

部件号:DS90UB960-Q1
主题中讨论的其他器件: DS90UB953-Q1

工具/软件:

您好:

您能帮我了解如何通过 DS90UB960 (FPD-Link III) 流式传输 4 个摄像头、并在 Raspberry Pi 5(或 4)或 Rockchip RK3566 上使用 v3link 进行显示吗?

  • 硬件:DS90UB960-Q1 解串器、DS90UB953-Q1 串行器、Sony IMX219 图像传感器。

  • 目标:通过 FPD-Link III 连接 4 个摄像头、聚合在 DS90UB960 上、并通过 MIPI CSI-2 输出到 SoC (Raspberry Pi 5/4 或 Rockchip RK3566)。

  • 软件:使用 Linux 内核 (v6.x) 时、需要正确配置 DS90UB960 和摄像头端点的器件树。

  • 挑战:我可以访问 μ I²C 寄存器(读/写工作正常)、但不确定如何配置 4 个摄像头的 CSI-2 输出和虚拟通道映射。

问题:

  1. DS90UB960 + DS90UB953 用来流式传输 IMX219 的正确初始化序列是什么?

  2. 如何配置 CSI-2 通道映射和虚拟通道以同时输出 4 个摄像头?

  3. DS90UB960 与 Raspberry Pi 或 Rockchip 平台是否有现有的 Linux 驱动程序或示例设备树绑定?

感谢您的支持。

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

    尊敬的 Tuan:  

    DS90UB960 能够将四个视频流聚合到一个 CSI-2 端口中。 为了确保输入带宽不超过总输出带宽、我们有以下资源可用于覆盖聚合方案。 以下来自 FPD-Link 培训中心的视频将介绍此行为: https://www.ti.com/video/6247583604001

    链接的 E2E 主题还将提供计算器并对如何使用该工具进行一般说明: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1132331/ds90ub960-q1-csi2-aggregation-bandwidth-calculator?tisearch=e2e-sitesearch&keymatch=aggregation%2520AND%2520ds90ub960#

    建议在启用转发之前重新映射 VC ID。 VC ID 重映射是通过配置寄存器 0x72 来基于每个 RX 端口完成的。  

    下面是一个示例配置:  

    # "*** RX0 VC=0 ***"
    WriteI2C(0x4C,0x01) # RX0
    WriteI2C(0x72,0xE4) # RX0 VC
    # "*** RX1 VC=1 ***"
    WriteI2C(0x4C,0x12) # RX1
    WriteI2C(0x72,0xE4) # RX1 VC
    # "*** RX2 VC=2 ***"
    WriteI2C(0x4C,0x24) # RX2
    WriteI2C(0x72,0x9F) # RX2 VC
    # "*** RX3 VC=3 ***"
    WriteI2C(0x4C,0x38) # RX3
    WriteI2C(0x72,0xDF) # RX3 VC
    # "CSI_TX_SPEED"
    WriteI2C(0x1F,0x00) # CSI rate select
    # "CSI_PORT_SEL"
    WriteI2C(0x32,0x01) # CSI0 select
    # "CSI_EN"
    WriteI2C(0x33,0x01) # CSI_EN & CSI0 4L
    # "***Basic_FWD"
    WriteI2C(0x21,0x14) # Synchronized Basic_FWD
    # "***FWD_PORT all RX to CSI0"
    WriteI2C(0x20,0x00) # forwarding of all RX to CSI0
    

    应根据所需的系统级行为调整寄存器 0x72、0x1F-0x21 和 0x33。 默认情况下设置 0x72、以维护通过链路的原始 VC ID。  

    我们不会为这些器件构建 Linux 驱动程序、但这些驱动程序可通过外部方获得。 为了配置 UB960 和 UB953、完全可以通过寄存器的读取和写入操作来完成。  

    此致、

    Zoe

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

    对于初学者、您能否提供从初始化到流式传输的分步指南? 具体来说:

    1. 初始化 DS90UB960 并配置 μ I²C 别名地址。

    2. 初始化 DS90UB953 串行器。

    3. 通过串行器/解串器将 CSI 数据从摄像头转发到 SoC。

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

    尊敬的 Tuan:  

    下载 Analog LaunchPAD GUI 后、PreDefScripts DS90UB954 文件夹中提供了此初始化过程的各种示例脚本。 如果尚未下载此资源、我们建议您下载此资源、因为它将涵盖各种不同的应用示例。  

    DS90UB954 与 DS90UB960 之间的主要区别在于 RX 端口和 CSI 端口的数量。 预定义的脚本都设置为单个 RX 端口应用程序。 若要初始化 DS90UB960 的所有四个端口、您需要对所有端口重复相同的过程、并在寄存器 0x4C 中选择适用的端口。 要初始化 CSI 端口、请确保在寄存器 0x32 中选择 CSI 端口。 DS90UB960 数据表的下表支持以下配置:  

     初始化过程会因硬件级实现而异、主要是器件配置 (strap)。 此响应随附了一个启动脚本示例、用于将 OVT10640 传感器与 DS90UB953EVM、DS90UB960 或 DS90UB954 EVM 配合使用。  

    e2e.ti.com/.../ovt_5F00_1280_5F00_1080_5F00_30fps_5F00_REMOTE_5F00_RevE2_5F00_ID7a.py

    初始化 DS90UB960 并配置 I²C 别名地址。

    请参阅所附脚本的第 46-59 行以供参考。  

    初始化 DS90UB953 串行器。

    请参阅第 78-92 行。 在此脚本中、假设 UB953 绑定到 CSI 同步模式、并且成像仪通过 4 个通道和非连续时钟输出。 要更改此设置、请写入串行器上的寄存器 0x02。  

    UB953 上的这些配置主要与图像传感器启动过程有关、这并非特定于串行器操作。  

    [quote userid=“670744" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1565799/ds90ub960-q1-ds90ub960-q1-using-with-raspberry-pi-or-rockchip-rk3566/6031089 通过串行器/解串器将来自摄像头的 CSI 数据转发到 SoC。

    为方便起见、请参阅先前回复中的以下内容:  

    # "*** RX0 VC=0 ***"
    WriteI2C(0x4C,0x01) # RX0
    WriteI2C(0x72,0xE4) # RX0 VC
    # "*** RX1 VC=1 ***"
    WriteI2C(0x4C,0x12) # RX1
    WriteI2C(0x72,0xE4) # RX1 VC
    # "*** RX2 VC=2 ***"
    WriteI2C(0x4C,0x24) # RX2
    WriteI2C(0x72,0x9F) # RX2 VC
    # "*** RX3 VC=3 ***"
    WriteI2C(0x4C,0x38) # RX3
    WriteI2C(0x72,0xDF) # RX3 VC
    # "CSI_TX_SPEED"
    WriteI2C(0x1F,0x00) # CSI rate select
    # "CSI_PORT_SEL"
    WriteI2C(0x32,0x01) # CSI0 select
    # "CSI_EN"
    WriteI2C(0x33,0x01) # CSI_EN & CSI0 4L
    # "***Basic_FWD"
    WriteI2C(0x21,0x14) # Synchronized Basic_FWD
    # "***FWD_PORT all RX to CSI0"
    WriteI2C(0x20,0x00) # forwarding of all RX to CSI0

    出于启动目的、可以首先启用 CSI 发送器、也可以将其作为序列的最后一步。  

    此致、

    Zoe

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

    我当前正在尝试流式传输摄像机数据、但在中遇到以下错误dmesg
    [40.687236] rkisp-vir0:MIPI 错误:数据包:0x00100000
    [40.687255] rkisp-vir0:MIPI 错误:数据包:0x00100000
    [40.687274] rkisp-vir0:MIPI 错误:数据包:0x04044000

    我的设置:

    电路板: OrangePi 3B + V3link 导管  (使用 CSI 端口 2 通道) 内核: 6.1.

    对于如何调试这些 MIPI 数据包错误、您有什么建议吗?

     

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

    尊敬的 Tuan:  

    我不熟悉此处分享的 Linux 错误。 对于调试串行器/解串器、我建议读回以下寄存器:  

    1. UB960
      1. 选择 0x4C 中使用的端口
      2. 读回 0x4D、0x4E、0x55、0x56、0x7A、 0x7B 以清除
      3. 等待运行时  
      4. 再次读回步骤 B 中列出的寄存器
    2. UB953 上
      1. 读回 0x5C-0x60 以清除
      2. 等待运行时
      3. 再次读回寄存器 0x5C-0x60

    应读回错误寄存器以从初始化序列中清除。 如果已经完成、则可以直接拉取错误状态寄存器。  

    其次、请确保 CSI 发送器设置为 DS90UB960 寄存器 0x33 中 SoC 预期的正确设置。 还应为 0x02 中的 CSI 输入通道设置正确数量的串行器。  

    此致、

    Zoe