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.

[参考译文] DS90UB954-Q1EVM:间接寄存器的400Mbps 与800Mbps 设置

Guru**** 2487425 points
Other Parts Discussed in Thread: DS90UB954-Q1EVM

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1412129/ds90ub954-q1evm-400mbps-vs-800-mbps-setting-of-indirect-registers

器件型号:DS90UB954-Q1EVM

工具与软件:

您好!

我想知道是否必须将 CSI TX 计时寄存器也设置为800Mbps 的 MIPI 速度?

-测试模式适用于400Mbps。

-当我切换到800Mbps 时,测试模式仅在我设置以下寄存器时出现:

#将 CSI_TX_SPEED 设置为选择800Mbps
board.WriteI2C (board.devAddr、0x1F、0x2)

#将 PLL 时钟分频器设置为32
#board。 Ind_Acc_Write (7、0xA、0x80)
board.WriteI2C (board.devAddr、0xB0、(0x7 << 2))
board.WriteI2C (board.devAddr、0xB1、0xA)
board.WriteI2C (board.devAddr、0xB2、0x80)

#设置 PLL CP 电流
#board。 Ind_Acc_Write (0x7、0x7、0xE2)
board.WriteI2C (board.devAddr、0xB0、(0x7 << 2))
board.WriteI2C (board.devAddr、0xB1、0x7)
board.WriteI2C (board.devAddr、0xB2、0xE2)

#设置 CSI 时序参数
#board。 Ind_Acc_Write (0x0、0x40、[0x83、0x8D、0x87、 0x87、0x83、0x86、0x84、0x86、 0x84]])
board.WriteI2C (board.devAddr、0xB0、0x2)#设置自动递增、第0页
board.WriteI2C (board.devAddr、0xB1、0x40)# CSI 端口0
board.WriteI2C (board.devAddr、0xB2、0x83)# TCK Prep
board.WriteI2C (board.devAddr、0xB2、0x8D)# TCK Zero
board.WriteI2C (board.devAddr、0xB2、0x87)# TCK Trail
board.WriteI2C (board.devAddr、0xB2、0x87)# TCK Post
board.WriteI2C (board.devAddr、0xB2、0x83)# ths Prep
board.WriteI2C (board.devAddr、0xB2、0x86)#零
board.WriteI2C (board.devAddr、0xB2、0x84)# ths Trail
board.WriteI2C (board.devAddr、0xB2、0x86)#退出
board.WriteI2C (board.devAddr、0xB2、0x84)# TLPX

-我找不到关于"设置 PLL 时钟分频器到32"和 设置 PLL CP 电流"的寄存器的说明在这些命令中配置:

board.WriteI2C (board.devAddr、0xB0、(0x7 << 2))
board.WriteI2C (board.devAddr、0xB1、0xA)
board.WriteI2C (board.devAddr、0xB2、0x80)

board.WriteI2C (board.devAddr、0xB0、(0x7 << 2))
board.WriteI2C (board.devAddr、0xB1、0x7)
board.WriteI2C (board.devAddr、0xB2、0xE2)

想要800Mbps 的原因是我们希望在4个通道上流式传输2560 (h) x1984 (v) x30 (Hz) x12位。 我们仅使用单端口 RX0。  如果将每像素减少到10位、我们可以采用400Mbps 的速度吗?

此致、

Michael

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

    您好、Michael:

    感谢您的提问。 要以800Mbps 的速度运行 CSI TX 端口、不需要这些寄存器设置。 只需设置寄存器0x1F[1:0]= 10即可、这实际上是器件的默认速度。 只需启用 CSI 转发/输出、954就会自动以800Mbps CSI TX 速度输出。 要以400Mbps 的速度运行 CSI TX 端口、请设置寄存器0x1F[1:0]= 11和上面列出的"CSI 时序参数"寄存器。

    您是否知道摄像头 需要多少消隐?  根据消隐情况、摄像机的每像素为12位时、带宽范围为 ~2Gbps 至~2.3Gbps。 400Mbps CSI TX 速度可能不支持此功能。 如果单独使用每像素10位、则范围将接近~1.6Gbps 到~ 1.9Gbps。 对于400Mbps CSI TX 速度可以支持的范围仍然有点高。 在以400Mbps CSI TX 速度运行时是否看到任何错误? 在954上、您可以检查寄存器0x4E 以查看是否在 RX0上报告了任何缓冲区错误。 寄存器0x90-0x97还可以快速了解 CSI TX 端口上输出的数据状态。 如果您使用的是显示/SoC、可能有更多视觉或诊断工具可用于评估是否有任何数据丢失/损坏。

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

    尊敬的 Darrah:

    感谢您提供全面的答案和观察错误的提示。

    在我们的设置中、我们将 DS90UB954-Q1EVM 连接到了 SoC、然后尝试显示测试图形。 对于400Mbps 速率、可使用相应脚本执行此操作。

    对于800Mbps (即设置寄存器0x1F[1:0]= 10)、我需要执行此初始化、以便使测试图形显示在 SoC 上:

    #将 PLL 时钟分频器设置为32
    位置。 WriteReg (0xB0、(0x07 << 2))
    位置。 WriteReg (0xB1、0x0A)
    位置。 WriteReg (0xB2、0x80)

    我在数据表中没有找到任何关于 PLL 时钟分频器的信息。 您能告诉我这些设置实际执行的操作吗?

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

    您好、Michael:

    如果您在设置中未看到任何错误、则消隐可能足够低、使较低的 CSI TX 速度适用于您的系统。 建议仍检查954和 SoC 上的一些寄存器/诊断、以确认运行期间没有任何意外行为、因为摄像头会发送约2Gbps 的带宽。 如果954已上电但未配置 CSI TX 速度寄存器、您是否看不到任何输出? 该器件设计为以800Mbps 速率自动输出、您只需对寄存器0x33[0]= 1进行编程、即可启用 CSI 输出、0x20[4]= 0则可从 RX0转发数据。 这些寄存器设置是否不会在 CSI TX 端口上产生任何输出?  您的特定用例可能需要一些额外的设置、但这些寄存器写入将启用输出。  您在哪里找到了这些"PLL 时钟分频器"设置? 此脚本正在设置间接保留寄存器、不应覆盖该寄存器。  

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

    尊敬的 Darrah:  

    我可以检查954上的哪些寄存器来查看 MIPI 输出的已配置消隐或其他参数?

    安装 Analog Launch Pad 时、会有一个包含954脚本的目录:

    C:\Program Files (x86)\Texas Instruments\Analog LaunchPAD v1.57.0010\PreDefScripts\DS90UB954

    脚本 954_400Mbps_CSI.py 包含 PLL 时钟分频器的配置、当我选择800Mbps 时、该配置会使测试图形出现:

    #将 PLL 时钟分频器设置为32
    位置。 WriteReg (0xB0、(0x07 << 2))
    位置。 WriteReg (0xB1、0x0A)
    位置。 WriteReg (0xB2、0x80)

    当954上电时、我执行以下脚本以配置测试图形发生器。 我只能通过 PLL 时钟分频器的3个寄存器获得任何输出。 当我注释掉这3行时、没有输出。

    位置。 WriteReg (0xB0、0x02)# IA_AUTO_INC=1
    位置。 WriteReg (0xB1、0x01)# PGEN_CTL
    位置。 WriteReg (0xB2、0x00)# PGEN_DISABLE=0

    #在 UB954中启用800Mbps CSI
    #
    #版本0.91.

    #将 CSI_TX_SPEED 设置为选择800Mbps
    位置。 WriteReg (0x1F、0x02)

    #将 PLL 时钟分频器设置为32
    位置。 WriteReg (0xB0、(0x07 << 2))
    位置。 WriteReg (0xB1、0x0A)
    位置。 WriteReg (0xB2、0x80)

    # CSI patgen
    # Python 脚本 CSI_PATGEN_RAW8_1920x1080p30
    #版本0.91.

    # CSI cont clk 和 CSI 启用
    #板。 WriteReg (0x32、0x01)
    位置。 WriteReg (0x33、0x01)

    位置。 WriteReg (0xB0、0x02)# IA_AUTO_INC=1
    位置。 WriteReg (0xB1、0x01)# PGEN_CTL
    位置。 WriteReg (0xB2、0x01)# PGEN_ENABLE=1
    位置。 WriteReg (0xB2、0x35)# PGEN_CFG
    位置。 WriteReg (0xB2、0x2B)# PGEN_CSI_DI
    位置。 WriteReg (0xB2、0x09)# PGEN_LINE_SIZE1
    位置。 WriteReg (0xB2、0x60)# PGEN_LINE_SIZE0
    位置。 WriteReg (0xB2、0x01)# PGEN_BAR_SIZE1
    位置。 WriteReg (0xB2、0x2C)# PGEN_BAR_SIZE0
    位置。 WriteReg (0xB2、0x04)# PGEN_ACT_LPF1
    位置。 WriteReg (0xB2、0x38)# PGEN_ACT_LPF0
    位置。 WriteReg (0xB2、0x04)# PGEN_TOT_LPF1
    位置。 WriteReg (0xB2、0x65)# PGEN_TOT_LPF0
    位置。 WriteReg (0xB2、0x17)# PGEN_LINE_PD1
    位置。 WriteReg (0xB2、0x26)# PGEN_LINE_PD0
    位置。 WriteReg (0xB2、0x21)# PGEN_VBP
    位置。 WriteReg (0xB2、0x0A)# PGEN_VFP
    位置。 WriteReg (0xB2、0xFF)# PGEN_COLOR0
    位置。 WriteReg (0xB2、0x00)# PGEN_COLOR1
    位置。 WriteReg (0xB2、0xFF)# PGEN_COLOR2
    位置。 WriteReg (0xB2、0x00)# PGEN_COLOR3
    位置。 WriteReg (0xB2、0xFF)# PGEN_COLOR4
    位置。 WriteReg (0xB2、0x00)# PGEN_COLOR5
    位置。 WriteReg (0xB2、0xFF)# PGEN_COLOR6
    位置。 WriteReg (0xB2、0x00)# PGEN_COLOR7
    位置。 WriteReg (0xB2、0x00)# PGEN_COLOR8
    位置。 WriteReg (0xB2、0x00)#保留

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

    您好、Michael:

    对于图形发生器、消隐可通过设置水平线和垂直前沿/后沿总数(在间接图形发生器寄存器0x0A、0x0B、0x0E、0x0F 中控制)来控制。 但是、对于摄像头数据流、消隐将特定于摄像头、无法通过解串器输出端口进行更改。 您能否仔细检查您的 SoC 连接/编程? 我使用您的图形发生器设置在 EVM 上进行了测试、并且能够看到图形、并使用 CSI 分析仪确认800Mbps 的速度。 我附上了脚本以供参考、上电后立即仅写入0x33寄存器以启用 CSI 输出、然后启用图形发生器配置。 无需写入额外的寄存器。 寄存器0x1F = 0x02是默认值、不需要写入、但即使在脚本中包含此寄存器、我也看到了相同的800Mbps 输出。

    import time
    
    desAddr = 0x60
    
    #board.WriteI2C(desAddr, 0x1F, 0x02) #default setting
    board.WriteI2C(desAddr, 0x33, 0x01) #enable CSI output 
    
    #program pattern generator
    board.WriteI2C(desAddr, 0xB0, 0x02) # IA_AUTO_INC=1
    board.WriteI2C(desAddr, 0xB1, 0x01) # PGEN_CTL
    board.WriteI2C(desAddr, 0xB2, 0x01) # PGEN_ENABLE=1
    board.WriteI2C(desAddr, 0xB2, 0x35) # PGEN_CFG
    board.WriteI2C(desAddr, 0xB2, 0x2B) # PGEN_CSI_DI
    board.WriteI2C(desAddr, 0xB2, 0x09) # PGEN_LINE_SIZE1
    board.WriteI2C(desAddr, 0xB2, 0x60) # PGEN_LINE_SIZE0
    board.WriteI2C(desAddr, 0xB2, 0x01) # PGEN_BAR_SIZE1
    board.WriteI2C(desAddr, 0xB2, 0x2C) # PGEN_BAR_SIZE0
    board.WriteI2C(desAddr, 0xB2, 0x04) # PGEN_ACT_LPF1
    board.WriteI2C(desAddr, 0xB2, 0x38) # PGEN_ACT_LPF0
    board.WriteI2C(desAddr, 0xB2, 0x04) # PGEN_TOT_LPF1
    board.WriteI2C(desAddr, 0xB2, 0x65) # PGEN_TOT_LPF0
    board.WriteI2C(desAddr, 0xB2, 0x17) # PGEN_LINE_PD1
    board.WriteI2C(desAddr, 0xB2, 0x26) # PGEN_LINE_PD0
    board.WriteI2C(desAddr, 0xB2, 0x21) # PGEN_VBP
    board.WriteI2C(desAddr, 0xB2, 0x0A) # PGEN_VFP
    board.WriteI2C(desAddr, 0xB2, 0xFF) # PGEN_COLOR0
    board.WriteI2C(desAddr, 0xB2, 0x00) # PGEN_COLOR1
    board.WriteI2C(desAddr, 0xB2, 0xFF) # PGEN_COLOR2
    board.WriteI2C(desAddr, 0xB2, 0x00) # PGEN_COLOR3
    board.WriteI2C(desAddr, 0xB2, 0xFF) # PGEN_COLOR4
    board.WriteI2C(desAddr, 0xB2, 0x00) # PGEN_COLOR5
    board.WriteI2C(desAddr, 0xB2, 0xFF) # PGEN_COLOR6
    board.WriteI2C(desAddr, 0xB2, 0x00) # PGEN_COLOR7
    board.WriteI2C(desAddr, 0xB2, 0x00) # PGEN_COLOR8
    board.WriteI2C(desAddr, 0xB2, 0x00) # Reserved