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.

[参考译文] SN65DSI83:PLL 生态系统

Guru**** 2582695 points
Other Parts Discussed in Thread: SN65DSI83

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1571197/sn65dsi83-pll-isuce

器件型号:SN65DSI83


工具/软件:

你(们)好

我们客户想问为什么 PLL 不会锁定、如果您需要任何特定的寄存器转储、我们可以与您分享。

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

    您好 Gareth、

    您能告诉我们您如何对器件进行编程以及您使用的设置/配置。

    您可以使用 DSI 调谐器工具在初始化期间对器件进行编程。 您可以在以下位置下载该 工具:SN65DSI83:所需的 DSI 调谐器工具 — 接口论坛-接口 — TI E2E 支持论坛

    以下
    是使用此工具的指南: https://www.ti.com/lit/an/slla332b/slla332b.pdf?ts = 1746586623218

    第一步、请使用测试图形模式从器件发送生成的测试图形。 请按照数据表初始化序列中的步骤操作。

    此致、
    Ikram

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

    你好、Ikram

    我们已经编写了 dsi2lvds bridge sn65dsi83_display() 命令并回读。 它们显示的内容正确无误。

    您能否确认?

     

    [203.925106][T1740] Justin line:443 func:sn65dsi83_display reread back i2c data address : value;

    [203.934663][T1740] 0x9:0x0;  

    [203.935344][T1740] 0xd:0x1;  

    [203.939747][T1740] 0xA:0x3;  

    [203.943894][T1740] 0xb:0x10;  

    [203.947836][T1740] 0x10:0x20;  

    [203.952082][T1740] 0x11:0x0;  

    [203.956188][T1740] 0x12:0x1c;  

    [203.960483][T1740] 0x18 : 0x78;  

    [203.964968][T1740] 0x19 : 0x4;  

    [203.969709][T1740] 0x1a:0x1;  

    [203.973943][T1740] 0x1b:0x0;  

    [203.977957][T1740] 0x28:0x20;  

    [203.981975][T1740] 0x29 : 0x0;  

    [203.986082][T1740] 0x20 : 0x0;  

    [203.990554][T1740] 0x21:0x4;  

    [203.994580][T1740] 0x24 : 0x58;  

    [203.998600][T1740] 0x25:0x2;  

    [204.002732][T1740] 0x2C:0x78;  

    [204.006749][T1740] 0x2D:0x0;  

    [204.011049][T1740] 0x30:0xF;  

    [204.015373][T1740] 0x31:0x0;  

    [204.019381][T1740] 0x34:0x64;  

    [204.023629][T1740] 0x36 : 0xA;  

    [204.027971][T1740] 0x38:0x64;  

    [204.031985][T1740] 0x3a : 0xA;  

    [204.036299][T1740] 0x3c : 0x0;  

    [204.040312][T1740] 0xd:0x1;  

    [204.047524][T1740] 0x9:0x0;  

    [204.050770][T1740]   

    [204.050770][T1740] Justin sn65dsi83 行:450 func:sn65dsi83_display

    [204.062756][T1740] Harish sn65dsi83 链路重置完成

    [204.097866][T1740] Justin line:621 func:sn65dsi83_atomic_pre_enable  

    [204.206313][T1740] sn65dsi83 3-002d:无法锁定 PLL、ret =–110

     

    我们仍然可以看到 PLL 锁定失败。

    您能告诉我们这个问题是什么吗?

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

    您好 Gareth、

    使用色条测试图案时、显示屏是否按预期输出视频?  

    请清除 0xE5 寄存器、然后将其读回以检查运行时期间是否存在错误。  

    已编程的分辨率和显示时序是否与 DSI 源设置匹配? PLL 未锁定可能由时序不匹配引起。 您能分享编程的显示时序是什么以及像素时钟速率吗? 此外、请分享使用的 DSI 时钟速率。

    此致、
    Ikram

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

    你好、Ikram

    我们正在尝试清除 0xE5 寄存器、根据数据表、我们需要写入 1 来将其清除。

     

    时序根据分辨率进行匹配并从寄存器转储中读回。

    mode = DRM_MODE_CUPLATE (connector->dev、&(struct DRM_DISPLAY_MODE){

    .clock = 50400、//像素时钟以 kHz 为单位

    .hdisplay = 1024、

    .hSYNC_START = 1024 + 100、

    .hSYNC_END = 1024 + 100 + 120、

    .htotal = 1024 + 100 + 120 + 100、

    .vdisplay = 600、

    .vsync_start = 600 + 10、

    .vsync_end = 600 + 10 + 15、

    .vtotal = 600 + 10 + 15 + 10、

    .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC、

    });

    hdisplay = 1024、

    [41.712667][T1682] 0x20:0x0;  

    [41.716685][T1682] 0x21 : 0x4;  

    vdisplay = 600、

    [41.720693][T1682] 0x24 : 0x58;  

    [41.724980][T1682] 0x25:0x2;  

    第 100 章,我是你的女人

    [41.753775][T1682] 0x38:0x64;  

    水平后沿:100

    [41.745674][T1682] 0x34:0x64;  

    水平脉冲宽度:120

    [41.729092][T1682] 0x2C:0x78;  

    [41.733529][T1682] 0x2D:0x0;  

     

    垂直前沿: 10

    [41.757780][T1682] 0x3a : 0xA;  

    垂直后沿: 10.

    [41.749679][T1682] 0x36:0xA;  

    垂直脉冲宽度:15

    [41.737638][T1682] 0x30:0xF;  

    [41.741664][T1682] 0x31:0x0;  

     

    DSI 时钟匹配时钟摘要中的任何时钟  

    dsi0_phy_pll_out_dsiclk    50,400,000   PHY DSI 时钟  

     

    这是否与连接中使用的端口相关?

    请检查桥接器的 dtsi 节点条目:

    sn65dsi83:TI、sn65dsi83@2D{

              兼容=“ti、sn65dsi83“;

              reg =<0x2D>;

              // interrupt-parent =<&tlmm>;

              //中断=<18 0>;

              //中断名称=“lt_irq";“;

              //sn65dsi83、IRQ =<&tlmm 18 0>;

              Reset-GPIOs =<&tlmm 17 0>;

              POWER-GPIO =<&tlmm 119 0>;

              // LCD、RESET =<&tlmm 147 0>;

              lcdpwr-gpips =<&tlmm 117 0>;

              LCD、背光=<&tlmm 60 0>;

              探测选项=<1>;

     状态=“正常“;

     端口{

    #address-cells =<1>;

    #size-cells =<0>;

    端口@0{

    reg =<0>;

                SN65_IN:端点{

    数据通路=<0 1 2 3>;

                    远程端点=<&mdss_dsi0_out>;

    };

    };

     

    端口@2{

    reg =<2>;

    SN65_OUT:端点{

    远程端点=<&panel_in>;

    };

    };

     };

          };

     

    &mdss_dsi0_out{

    远程端点=<&sn65_in>;

    数据通路=<0 1 2 3>;

    };

     

    面板:Panel-LVDS{

    兼容=“sn65、fx07“;

    状态=“正常“;

    端口{

    panel_in:端点{

    远程端点=<&sn65_out>;

    };

    };

    };



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

    您好 Gareth、

    感谢您分享脚本。 我会检查并在 1-2 天内回复您。

    此致、
    Ikram

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

    尊敬的 Ikram:

    我正在与 Gareth 合作重现该问题。

    我们尝试通过向 E5 寄存器写入 1 来将其清除。

    但是、即使也会延迟多次尝试、它始终读数为 1(不需要 PLL 锁定)。

    此致

    Justin

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

    你好贾斯汀,我正在检查这个问题,我会很快回来给你。

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

    尊敬的 Gareth、Justin、

    当前寄存器转储显示、DSI 时钟用作源时钟、分频器设置为 11。 如果像素时钟速率为 50.4、则 DSI 时钟速率应为 554.4MHz。 这是它当前设置的吗?

    在初始化序列中、它提到 DSI 时钟应处于 HS 状态、而数据通道在开始时处于 LP11 状态。 在编程和软复位后、数据通道设置为 HS 模式。 系统是否遵循完整的初始化序列?

    此致、
    Ikram

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

    尊敬的 Ikram:

    将像素时钟更新为 51206KHz、如所示

    应为 htotal*vtotal*60fps = 51206400

    mode = DRM_MODE_CUPLATE (connector->dev、&(struct DRM_DISPLAY_MODE){
    .clock = 51206、//像素时钟以 kHz 为单位
    .hdisplay = 1024、
    .hSYNC_START = 1024 + 100、
    .hSYNC_END = 1024 + 100 + 120、
    .htotal = 1024 + 100 + 120 + 100、
    .vdisplay = 600、
    .vsync_start = 600 + 10、
    .vsync_end = 600 + 10 + 15、
    .vtotal = 600 + 10 + 15 + 10、
    .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC、
    });

    如何检查 DSI 时钟是否为所需速率?

    这是 DSI 时钟摘要:
    SH-5.2# cat /sys/kernel/debug/clk/clk_summary | grep DSI
    gcc_disp_hf_axi_clk 2 0 0 0 0 50000 Y ae94000.DSI 总线
    dsi0vco_clk 1 0 614471923 0 50000 Y 无设备 no_connection_id
    dsi0_pll_out_div_clk 1 1 0 307235962 0 50000 Y 无器件 no_connection_id
    dsi0_PLL_post_out_div_clk 0 0 76808990 0 0 50000 Y 无设备 no_connection_id
    dsi0_pll_bit_clk 2 0 307235962 0 50000 Y 无器件 no_connection_id
    dsi0_pclk_mux 1 1 0 307235962 0 50000 Y 无设备 no_connection_id
    dsi0_phy_pll_out_dsiclk 1 1 0 51205994 0 50000 Y 无设备 no_connection_id
    disp_cc_mdss_pclk0_clk 1 1 0 51205994 0 50000 Y ae94000.DSI 像素
    dsi0_pll_by_2_bit_clk 0 0 0 153617981 0 50000 Y 无设备 no_connection_id
    dsi0_phy_pll_out_byteclk 1 0 38404495 0 50000 Y 无器件 no_connection_id
    disp_cc_mdss_byte0_intf_clk 1 0 19202248 0 0 50000 Y ae94000.DSI byte_intf
    disp_cc_mdss_byte0_clk 1 0 38404495 0 0 50000 Y ae94000.DSI 字节
    ae94000.DSI 字节
    disp_cc_mdss_esc0_clk 1 1 0 19200000 0 50000 Y ae94000.DSI 内核
    disp_cc_mdss_ah_clk 4 0 19200000 0 50000 Y ae94000.DSI iface
    ae94000.DSI iface

    在 QCLinux 中、我们发现禁用 LP11 模式的唯一方法是删除 LPM 模式

    DSI->MODE_FLAGS = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
    MIPI_DSI_MODE_VIDEO_NO_HFP | MIPI_DSI_MODE_VIDEO_NO_HBP |
    MIPI_DSI_MODE_VIDEO_NO_HSA | MIPI_DSI_MODE_NO_EOT_packet;

    DSI->MODE_FLAGS &&~MIPI_DSI_MODE_LPM;

    根据以上时钟摘要为  

    • dsi0_pll_bit_clk→μ s 307MHz

    • dsi0_phy_pll_out_byteclk→μ s 38MHz  

    • disp_cc_mdss_pclk0_clk→μ s 51MHz  

    • disp_cc_mdss_esc0_clk→μ s 19MHz  

    这意味着您的 DSI 接口当前处于 HS(高速)视频模式 、不是 LP11 空闲。

    您能否证实。

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

    尊敬的 Justin:

    DSI 时钟速率 307MHz、那么时钟分频器应设置为 6。 请将 0xB 寄存器设置为 0x28。 这是因为 0xA 寄存器设置为从 DSI 时钟提供时钟源、并且 LVDS 时钟速率设置为正确的速率。

    此致、
    Ikram