TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] SN65DSI86-Q1:DSI 至 DP 监控器输出存在问题

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1433784/sn65dsi86-q1-problem-with-dsi-to-dp-monitor-output

器件型号:SN65DSI86-Q1
主题中讨论的其他器件: 测试2SN65DSI86

工具与软件:

我使用 SN65DSI86-Q1将 FHD 摄像头图像输出到 DP 监视器、设计了一个 DSI 转 DP 电路板。

但是、soc 上的 DSI 输出已确认、但 DP 监视器上仅显示黑屏。

我从 SN65DSI86-Q1输出色条并在 DP 监视器上确认。


1.电路图

e2e.ti.com/.../DSItoDP_5F00_Rev0.1_5F00_20240726.pdf
2.初始化数据

//=== 软复位===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x09、0x01、1、 1);
ERR_CHECK_RET (ret、-1);
//=== REFCLK 27MHz ===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x0A、0x04、1、 1);// 26.
ERR_CHECK_RET (ret、-1);

////=== ASSR RW 控制===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0xFF、0x07、1、 1);
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x16、0x01、1、 1);
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0xFF、0x00、1、 1);

////=== 单个4个 DSI 通道===
REt = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x10、0x26、1、 1);//通道 A、B 4通道设置
ERR_CHECK_RET (ret、-1);

////=== DSIA CLK FREQ 445MHz =====
//设置 EN 后自动设置
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x12、0x56、1、 1);
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x12、0x59、1、 1);// 445Mhz
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x12、0x60、1、 1);// 480MHz
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x12、0x65、1、 1);// 480MHz
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x12、0xC0、1、 1);// 750MHz (最大值0x96,750MHz)
ERR_CHECK_RET (ret、-1);
// ret = i2c_read_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x12、&READ_DATA、1、1); // r:0x84
// printf ("DSI65DSI86Q1_ADDR 0x12 = 0x%x\n"、READ_DATA);
////=== DSIB CLK FREQ 445MHz ====
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x13、0x59、1、 1);
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x13、0x60、1、 1);// 480MHz (最大值0x96,750MHz)
ERR_CHECK_RET (ret、-1);

////=== 增强的组帧和 ASSR===

RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x5A、0x04、1、 1);

////=== 2个 DP 信道(无 ssc====)
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x93、0x20、1、 1);
////=== 1个 DP 信道(无 ssc====)
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x93、0x10、1、 1);
////=== 4个 DP 信道(无 ssc====)
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x93、0x30、1、 1);//默认值
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x93、0x70、1、 1);//预置1
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x93、0xB0、1、 1);//预置2
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x93、0xF0、1、 1);//前3
ERR_CHECK_RET (ret、-1);

////=== HBR (2.7Gbps)===
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x94、0xE0、1、 1);// 5.4.
REt = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x94、0x80、1、 1);// 2.7
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x94、0x20、1、 1);// 1.62Gbps
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x94、0x21、1、 1);// SW 1
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x94、0x22、1、 1);// SW2
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x94、0x23、1、 1);// SW3
ERR_CHECK_RET (ret、-1);

////=== PLL enable====
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x0D、0x01、1、 1);
ERR_CHECK_RET (ret、-1);
////=== 验证 PLL 是否已锁定===
// ret |= tixx_WRITE_ONLY_reg (0x0A);

RET = i2c_read_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x0A、&READ_DATA、1、1); // r:0x84
printf ("DSI65DSI86Q1_ADDR 0x0A = 0x%x\n"、READ_DATA);


////=== Post-Cursor2 0dB ===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x95、0x00、1、 1);
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x95、0x40、1、 1);//后 Cursor2.
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x95、0x80、1、 1);
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x95、0xC0、1、 1);
ERR_CHECK_RET (ret、-1);
REt = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0xf8、0xFF、1、 1);

////=== 半自动训练===
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x01、1、 1);//正常模式(空闲模式或活动视频)
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x02、1、 1);// TPS1
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x03、1、 1);// TPS2
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x04、1、 1);// TPS3
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x05、1、 1);// PRBS7
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x06、1、 1);// HBR2
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x07、1、 1);// 80位自定义模式
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x08、1、 1);//符号误差率测量模式
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x09、1、 1) 1);//快速链路训练
 RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x0A、1、 1);//半自动链路训练。
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、0x0B、1、 1);//转接驱动器半自动链路训练

ERR_CHECK_RET (ret、-1);
睡眠(0.02);

//版权所有Copyright2014–2015、德州仪器(TI)公司提交文档反馈69
//产品文件夹链接:SN65DSI86-Q1
//SN65DSI86-Q1
// SLLSEJ5A–2014年7月–2015年12月修订 www.ti.com
////=== 验证培训是否成功====
// ret |= tixx_WRITE_ONLY_reg (0x96);

REt = i2c_read_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x96、&READ_DATA、1、1);
printf ("DSI65DSI86Q1_ADDR 0x96 = 0x%x\n"、READ_DATA);

REt = i2c_read_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x00、&READ_DATA、1、1);
printf ("DSI65DSI86Q1_ADDR 0x96 = 0x%x\n"、READ_DATA);

///=== CHA_ACTIVE_LINE_LENGTH 为1920 ===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x20、0x80、1、 1);
ERR_CHECK_RET (ret、-1);
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x21、0x07、1、 1);
ERR_CHECK_RET (ret、-1);


///=== CHA_VOLTAGE_DISPLAY_SIZE 为1080 ===

RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x24、0x38、1、 1);
ERR_CHECK_RET (ret、-1);
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x25、0x04、1、 1);
ERR_CHECK_RET (ret、-1);

///=== CHA_HSYNC_PULSE_WIDTH 为44正===
REt = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x2C、0x2C、1、 1);
ERR_CHECK_RET (ret、-1);
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x2D、0x00、1、 1);
ERR_CHECK_RET (ret、-1);
///=== CHA_VSYNC_PULSE_WIDTH 为5 POSITIVE 压低于=
REt = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x30、0x05、1、 1);
ERR_CHECK_RET (ret、-1);
// ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x31、0x80、1、 1);//默认值
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x31、0x00、1、 1);
ERR_CHECK_RET (ret、-1);


///=== CHA_Horizontal_BACK_porch 为148="===
REt = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x34、0x94、1、 1);
ERR_CHECK_RET (ret、-1);
///=== CHA_VERRITY_BACK_porch_36===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x36、0x24、1、 1);
ERR_CHECK_RET (ret、-1);
///=== CHA_Horizontal_front_porch 为88===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x38、0x58、1、 1);
ERR_CHECK_RET (ret、-1);
///=== CHA_VOLTAGE_FRONT_porch 为4===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x3A、0x04、1、 1);
ERR_CHECK_RET (ret、-1);
////=== dp- 24bpp====
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x5B、0x00、1、 1);
ERR_CHECK_RET (ret、-1);

////=== dp- 24bpp====
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x5B、0x00、1、 1);
ERR_CHECK_RET (ret、-1);
///=== 禁用色条====
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x3C、0x00、1、 1);
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x3C、0x10、1、 1);//启用
//ret = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x3C、0x12、1、 1);//启用
ERR_CHECK_RET (ret、-1);

////=== 增强的组帧、ASSR 和 Vstream enable===
RET = i2c_write_data_type (i2c_num、DSI65DSI86Q1_ADDR、0x5A、0x0C、1、 1);
ERR_CHECK_RET (ret、-1);


3.寄存器状态

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

    你(们)好

    为了更改为"无 ASSR"、请参阅以下内容进行其他电路修改。

    这是使用 Test2引脚上的上拉电阻器修改的电路图、以启用标准 DP。

    e2e.ti.com/.../DSItoDP_5F00_Rev0.2.pdf

    "DSI86在设计中默认启用了 ASSR、以支持 eDP 面板。 大多数 DP 监视器或面板不支持 ASSR。 为支持 DP 监控器、 需要通过使 ASSR_CONTROL 进行读取/写入(而不是只读)来禁用 DSI86的 ASSR。 使 ASSR_CONTROL 进行读取/写入的第一步是确保在 EN 引脚的上升沿对 TEST2引脚进行高电平采样。 建议通过1k 至10k 电阻将 TEST2引脚拉至1.8V。 一旦 TEST2为高电平、必须执行以下步骤:

    1.将0x07写入寄存器0xFF。 选择"Page 7"(第7页)。
    2.将0x01写入寄存器0x16。 这会使 ASSR_CONTROL 成为读取/写入状态。
    3.将0x00写入寄存器0xFF。 这将选择"Page 0"。
    4.将0写入寄存器0x5A 的1:0位。 这将从 ASSR 更改为标准 DP。"

    谢谢

    Parkks

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

    您好!

    看起来错误寄存器已设置。

    0xF5 = 02

    0xF6 = 40

    0xF8 = 02

    地址0xf5报告 HPD 的状态。 该寄存器提供 HPD 的状态。 该寄存器仅在启用了 HPD (清除寄存器0x5C 位0 (HPD_DISABLE)时有用。

    地址0xF6到0xF7报告与 DSI 至 DP 视频时序相关的错误。 通常、当编程到 DSI86的视频时序与 DSI 接口上接收到的时序不匹配时、会在这些寄存器中设置错误。 位于0x20到0x3A 之间的 DSI86视频寄存器匹配 DSI 源使用的视频时序非常重要。 DSI86将通过编程到这些寄存器中的值推导 DP 时序。

    它也看起来链路训练失败。 您是否使用过 DSI86寄存器计算器工具生成 CSR 值?

    e2e.ti.com/.../2451.SN65DSI86_5F00_PANEL_5F00_VIDEOREGISTER_5F00_CALC.xlsm

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

    尊敬的 Vishesh 

    感谢您的答复。

    首先、您所连接的计时计算器已被应用、并且正在引起问题。

    将0x20设置为0x3a、以匹配下面计算器的 DSI 时序和 SOC。

    "地址0xf5报告 HPD 的状态。 该寄存器提供 HPD 的状态。 该寄存器仅在启用了 HPD (清除寄存器0x5C 位0 (HPD_DISABLE)时有用。 " <=   是否意味着我需要清除0x5C? 或者这是否意味着我应该通过禁用 HPD 来使用它?

    以下是 HPD_DISABLE 之后的结果。

    特殊的部分是、如果您使用0x96的"0xA"、则不输出色条、但如果您将0x96设置为0x1、则输出色条。

    1. 时序是根据2451.SN65DSI86_Panel_VIDEOREGISTER_CALC.xlsm 计算得出的

    但是、如果您使用脚本 NoASSR、则会发生以下错误。

    2. SOC 的 MIPI DSI 时序。

    3.下面的波形显示​​从测量的 SOC 输出的 DSI HACT 和 HTOTAL 值与​​1080p 60时的计算值类似。

      

     A.现金统转

    B. HTOTAL

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

    您好!

    对于对电子表格所做的编辑、您需要在此切换值。

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

    寄存器计算不正确。 色条工作的原因是较低的分辨率正在缩放到显示器上。 实际的误定时数据将无法执行此操作。

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

    "对于对电子表格所做的编辑、您需要切换此值。 "

     =>您是指下面的器件吗?

    我应该参考本节中的表格是什么?

    我对 DP 输出部分了解不多、请帮我一下。

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

    SN65DSI86_Panel_VIDEOREGISTER_CALC.xlsm 的 EDID 表大小大于(16 X 8)从监视器中提取的 EDID 值为(32x8)。 我是否应该只输入部分数据?

    1.  1.从监控器中提取的 EDID (32 X 8)

    可放置在 SN65DSI86_Panel_VIDEOREGISTER_CALC.xlsm 中的 EDID

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

    尊敬的 KISUNG:

    该计算器工具通过两种方式使用提供的数据。

    1) 1)填充图表(橙色输入)并使用此信息计算寄存器值

    2) 2)填写 EDID 并使用该值计算寄存器值。

    我建议您使用图表、因为您能够完全理解输入的内容。  

    切换"EDID Inputs in Datasheet Table"会告知电子表格显示数据已输入图表中、而不是从 EDID 矩阵中提取。 确认显示信息输入有效的一种简单方法是查看最小 DSI 时钟速率、DP 通道数和理想数据速率。  

    在您发送的最后一张图片中、电子表格似乎已正确配置。