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.

[参考译文] SN65DSI84:使用 DSI 调谐器进行配置

Guru**** 2576215 points
Other Parts Discussed in Thread: SN65DSI84, SN65DSI83

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/819910/sn65dsi84-configuration-using-dsi-tuner

器件型号:SN65DSI84
主题中讨论的其他器件: SN65DSI83DSI 调谐器

您好!

我们使用的是自定义电路板、它具有 MIPI DSI 转 LVDS 桥接器(SN65DSI84)以提供 LVDS 显示。

我们需要启动双通道 LVDS 显示(G133HAN01.0 AUO)。  LVDS 面板 像素时钟范围为134 MHz 至149 MHz。

我们已根据数据表配置面板输入和 DSI 输入、以生成 CSR 值。 但是、即使 DSI 时钟速率为423MHz、我们也会收到一条警告消息"DSICLK 速率应小于500m"。

已附上 DSI 调谐器配置图片供您参考。

  1. 我们的配置是否正确?
  2. 我们是否可以跳过此警告消息?
  3. 我们如何克服这一警告信息?

请提供您的反馈。

谢谢、

安东尼

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

    尊敬的安东尼:

    这是因为您的配置需要707MHz DSI CLK 速率、以获得您指定的 LVDS CLK 频率、并 确保 DSI 端和 LVDS 端的线路时间相同。 您的配置不正确。 LVDS 面板可能有两个时钟输入、这意味着 LVDS 时钟频率应该是您指定频率的一半。

    请参考此视频、了解如何正确配置器件: https://training.ti.com/configuring-sn65dsi8x-single-channel-dsi-dual-link-lvds-operation

    此致、

    I.K.  

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

    尊敬的 I.K:

    根据您的建议、假设 LVDS 时钟频率为71MHz (142/2)。 现在、警告消息不会出现。

    但 LVDS 面板中没有显示、像素时钟(LVDS 实际时钟速率)设置为74MHz 而不是71MHz。

    下面是我们在 DTS 文件中提供的 LVDS 面板参数。

    DSI_LVDS_BRIDGE:sn65dsi84@2c{
    兼容="ti、sn65dsi83";
    reg =<0x2C>;
    TI、DSI 通道=<4>;
    TI、LVDS-FORMAT =<1>;
    TI、LVDS-bpp =<24>;
    ti、width-mm =<293>;
    ti、身高-mm =<165>;
    ENABLE-GPIO =<&GPIO5 GPIO_ACTIVE_HIGH_>;
    Power-GPIO =<&GPIO5 3 GPIO_ACTIVE_HIGH_>;
    bklite-GPIO =<&GPIO1 0 GPIO_ACTIVE_HIGH_>;
    bkliteen-GPIO =<&GPIO1 GPIO_ACTIVE_HIGH_>;
    pinctrl-names ="default";
    pinctrl-0 =<&pinctrl_LVDS>;
    STATUS ="禁用";

    显示时序{
    LVDS{
    时钟频率=<71000000>;
    hactive =<1920>;
    Vactive =<1080/>;
    前沿=<58>;
    HSYNC-LEN =<42>;
    后沿=<88>;
    垂直前沿=<8>;
    vsync-len =<14>;
    后沿=<14>;
    HSYNC-ACTIVE =<0>;
    vsync-active =<0>;
    停用=<1>;
    像素时钟激活=<0>;
    };
    };

    端口{
    sn65dsi84_in:端点{
    远程端点=<&mipi_DSI_BRIDGE_OUT>;
    };
    };
    };

    };

    1. 上述 LVDS 面板参数值的预期 DSI 时钟频率是多少?
    2. 预期的 LVDS 时钟频率是多少?

    当像素时钟值为142MHz 时、我们得到以下时钟频率。 我们还需要测量71MHz 像素时钟。

    DSI 时钟- 416MHz

    LVDS 通道 A - 139MHz

    LVDS 通道 B - 136.99 MHz

    对于提供的142 MHz 像素时钟,这是正确的吗?  

    请提供您的反馈。

    谢谢、

    安东尼

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

    尊敬的安东尼:

    对于2x 71MHz LVDS 时钟、DSI CLK 需要为426MHz。  

    我正在查看您的显示数据表(https://www.distec.de/fileadmin/pdf/produkte/TFT-Displays/AUO/G133HAN01.0_Datasheet.pdf)、看起来它们对计时特性的描述不是很好。 由于它是双 LVDS 面板、所有水平参数(活动像素、消隐像素、时钟频率)都需要除以2。 通常情况下、数据表会为您执行该操作、但此数据表不会这样做。  

    也就是、  

    LVDS_HPW = 21

    LVDS_HBP = 44

    LVDS_HFP = 29

    这在 LVDS 侧。 在 DSI 侧、它们应该是 LVDS 侧的两倍(因为它正在进行单 DSI 至双 LVDS 转换):

    DSI_HPW = 42

    DSI_HBP = 88

    DSI_HFP = 58

    对于垂直参数、两侧的时序应相同。 我不知道为什么您在上面的 DSI 调谐器屏幕截图中使用了不同的值。  

    LVDS_VPW = 14

    LVDS_VBP = 14

    LVDS_VFP = 8

    DSI_VPW = 14

    DSI_VBP = 14

    DSI_VFP = 8

    我已将新设置作为一个.dSI 文件附加、您可以尝试使用该文件。 只需将其导入 DSI 调谐器并生成设置:

    e2e.ti.com/.../antony.dsi

    您还应确保 DSI 源的输出(时钟频率、消隐等)实际上与 DSI 调谐器的设置输入相匹配、并且您遵循数据表中的初始化序列。

    此致、

    I.K.

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

    尊敬的 I.K:

    在 DSI 调谐器中导入 Antony.DSI 文件、生成 CSR 值并更新我的驱动程序文件中的值。

    但我在 LVDS 中仍然没有任何显示。

    下面是.dts 文件中的 DCSS 和 mipi_DSI 配置。我们是否错过.dts 文件中的 DCSS 和 mipi_DSI 配置中的任何内容?

    DCSS 配置

    DCSS{(&D)
    状态="正常";
    disp-dev ="mipi_disp";

    时钟=<&clk IMX8MQ_CLK_DISP_APB_ROOT>、
    <&clk IMX8MQ_CLK_DISP_AXI_ROOT>、
    <&clk IMX8MQ_CLK_DISP_RTRM_ROOT>、
    <clk IMX8MQ_CLK_DC_PIXEL >、
    <clk IMX8MQ_CLK_dumme>、
    <&clk IMX8MQ_CLK_DISP_DTRC>;
    时钟名称="APB"、"axi"、"rtrm"、"pix_div"、"pix_out"、 "DTRC";
    分配的时钟=<&clk IMX8MQ_CLK_DC_PIXEL >、
    <&clk IMX8MQ_CLK_DISP_AXI>、
    <&clk IMX8MQ_CLK_DISP_RTRM>;
    分配的时钟父节点=<&clk IMX8MQ_VIDEO_PLL1_OUT>、
    <&clk IMX8MQ_SYS1_PLL_800m>、
    <&clk IMX8MQ_SYS1_PLL_800m>;
    分配的时钟速率=<594000000>、
    <800000000>、
    <400000000>;

    DCSS_disp0:端口@0{
    reg =<0>;

    DCSS_disp0_mipi_DSI:MIPI_DSI{
    远程端点=<&mipi_DSI_IN>;
    };
    };
    };

    MIPI DSI 和 MIPI DSI 桥配置:

    mipi_DSI{.mipi_DSI}
    状态="正常";
    分配的时钟=<&clk IMX8MQ_CLK_DSI_PHY_REF>、
    <&clk IMX8MQ_CLK_DSI_CORE>、
    <&clk IMX8MQ_VIDEO_PLL1_REF_SEL>、
    <&clk IMX8MQ_VIDEO_PLL1>;
    分配的时钟父节点=<&clk IMX8MQ_VIDEO_PLL1_OUT>、
    <&clk IMX8MQ_SYS1_PLL_266M>、
    <&clk IMX8MQ_CLK_25M>;
    分配的时钟速率=<24000000>、
    <266000000 >、
    <0>、
    <426000000>;
    SYNC-POL =<1>;
    PWR-DELAY =<10>;

    端口@1{
    MIPI_DSI_IN:端点{
    远程端点=<&DCSS_disp0_mipi_DSI>;
    };
    };
    };

    mipi_DSI_bridge{.mipi_DSI_bridge}
    状态="正常";

    面板@0{
    reg =<0>;
    状态="正常";
    兼容="AUO、g133han01";
    pinctrl-0 =<&pinctrl_panel>;
    背光=<背光>;
    bridge-i2c-bus =<&i2c4>;
    BRIDGE-INFO =<4>;
    BRIDGE-GPIO =<&GPIO5 GPIO_ACTIVE_HIGH_>;
    ENABLE-GPIO =<&GPIO1 0 GPIO_ACTIVE_HIGH_>;
    #if useReg
    电源=<Registered_GPIO_LVDS>;
    其他
    Power-GPIO =<&GPIO5 3 GPIO_ACTIVE_HIGH_>;
    #endif
    DSI 通道=<4>;
    面板宽度 mm =<293>;
    面板高度-mm =<165>;

    端口{
    Panel_in:端点{
    远程端点=<&mipi_DSI_BRIDGE_OUT>;
    };
    };
    };

    端口@1{
    MIPI_DSI_BRIDGE_OUT:端点{
    远程端点=<&panel_IN>;
    };
    };
    };

    请验证并提供您的反馈。

    下面是面板和 DSI 配置:

    静态 int bridge_sn65dsi84_config (struct panel_Simple *p)

    int i=0、size=0、err=0;

    switch (p->bridge_info)

    案例1:

    判例4:/* g133han01 */

    字符地址[]={
    0x09、0x0A、0x0B、0x0D、0x10、 0x11、0x12、0x13、
    0x18、0x19、0x1A、0x1B、0x20、 0x21、0x22、0x23、
    0x24、0x25、0x26、0x27、0x28、 0x29、0x2A、0x2B、
    0x2C、0x2D、0x2E、0x2F、0x30、 0x31、0x32、0x33、
    0x34、0x35、0x36、0x37、0x38、 0x39、0x3A、0x3B、
    0x3C、0x3D、0x3E、0x0D
    };
    字符值[]={
    0x00、0x05、0x28、0x00、0x26、 0x00、0x55、0x00、
    0x6f、0x00、0x03、0x00、0x80、 0x07、0x00、0x00、
    0x00、0x00、0x00、0x00、0x21、 0x00、0x00、0x00、
    0x15、0x00、0x00、0x00、0x0E、 0x00、0x00、0x00

    0x2C、0x00、0x00、0x00、0x00、 0x00、0x00、0x00

    0x00、0x00、0x00、0x01
    };


    i = sizeof (addresses);
    size = sizeof (values);
    ERR = BRIDGE_sn65dsi84_WRITE_VALUES (p、地址、值、i、size);

    中断;

    静态常量结构 DRM_DISPLAY_MODE AUO_g133han01_MODE ={
    .clock = 71000、
    .hdisplay = 1920、
    .hSYNC_START = 1920 + 29、
    .hSYNC_END = 1920 + 29 + 44、
    .htotal = 1920 + 29 + 44 + 21、
    .vdisplay = 1080、
    .vsync_start = 1080 + 8、
    .vsync_end = 1080 + 8 + 14、
    .vtotal = 1080 + 8 + 14 + 14、
    .vrefresh = 60、
    flags = DRM_MODE_FLAG_NSYNC | DRM_MODE_FLAG_NVSYNC、
    };

    静态常量结构 panel_desc_DSI AUO_g133han01 ={
    .desc ={
    模式= AUO_g133han01_mode、
    num_modes = 1、
    .bpc = 8、
    .size ={
    .width = 293、
    .height = 165、
    }、
    bus_flags = DRM_bus_FLAG_DE_HIGH、
    }、
    //.flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_CLOCK 非连续、
    flags = MIPI_DSI_MODE_VIDEO、
    .format = MIPI_DSI_FMT_RGB888、
    .Lanes = 4、
    };

    请提供您的反馈。

    谢谢、

    安东尼

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

    安东尼

    我无法为您的处理器 DSI 配置或代码提供帮助、只能为 DSI84的配置提供帮助。

    如果没有显示、您可以检查以下几项:

    • 验证您是否遵循数据表中的初始化序列。 这对于器件的正确运行至关重要。
    • 确保 DSI CLK 是连续的、并在初始化后的整个时间内保持 HS 模式
    • 确保 DSI 源的输出与您在 DSI84中编程的输出相匹配(频率、活动像素、消隐像素)

    此致、

    I.K.  

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

    尊敬的 I.K:

    我们创建了您提供的 Antony.DSI 文件。 已将时钟更改为74MHz。 因此、DSI 时钟现在为444MHz。

    我们已使用此.dSI 文件创建了测试模式、测试模式已成功显示。

    我们看到、对于测试图案、水平分辨率除以2。 (寄存器0x20 = 0xc0、0x21 = 0x03 即1920/2 = 960)。

    我们为原始 CSR 值尝试的相同寄存器(0x20和0x21)值(在本例中禁用了测试模式)。

    但 LVDS 上没有显示。

    请提供您的反馈。

    谢谢、

    安东尼

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

    安东尼

    我提供的设置将 DSI CLK 设置为426MHz、对应于写入寄存器0x12 (CHA_DSI_CLK_RANGE)的值0x55。 如果您使用这些设置、但将 DSI CLK 更改为444MHz、则需要向该寄存器写入0x58。  

    如果您进行了任何更改、则需要确保将其放入 DSI 调谐器并重新生成 CSR 配置文本文件。 您不能只是即时更改设置。  

    如果您能够查看测试模式、但在使用实际 DSI 输入时没有显示、则表明您的处理器的 DSI 侧有问题。 因此,我的反馈意见与我上次的答复相同。 您需要检查这些点。

    此致、

    I.K.  

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

    尊敬的 I.K:

    是的、我 在更改 DSI 时钟后生成了新的 CSR 值、我忘记了这一点。 寄存器0x12的值为0x58。

    我还检查了你建议的三点。

    1.验证您是否遵循数据表中的初始化序列。 这对于器件的正确运行至关重要。

    • 控制状态寄存器0xE5的 PLL_UNLOCK 位正在被置位。 我们尝试通过写入0xff 来清除此位。 但寄存器位仍然置位。

    2.确保 DSI CLK 是连续的、并在初始化后的整个时间内保持 HS 模式

    • 控制状态寄存器0x0A 的 HS_CLK_SRC 位设置为1

    HS_CLK_SRC

    0–来自输入 REFCLK 的 LVDS 像素时钟(默认)

    1–LVDS 像素时钟源自 MIPI D-PHY 通道 A HS 连续时钟

    1. 确保 DSI 源的输出与您在 DSI84中编程的输出相匹配(频率、活动像素、消隐像素)
    • DSI 时钟频率444MHz 与 DSI 调谐器中编程的频率相匹配。 未探测、但使用 printk 语句进行了验证。

    下面是我们的初始化序列:

    静态 int bridge_sn65dsi84_enable (struct panel_Simple *p)

    int i、err=0;
    int chipid[]={0x35、0x38、0x49、0x53、0x44、 0x20、0x20、0x20、0x01};
    字符地址、值;
    如果(p->bridge_gpio)

    gpioD_set_value_cansleep (p->bridge_gpio、0);
    mleep (10);
    gpioD_set_value_cansleep (p->bridge_gpio、1);
    mleep (10);

    对于(i = 0;i < sizeof (chipid)/ sizeof (int);i++){
    地址=(char) i;
    ERR = sn65dsi84_i2c_read (p->bridge、&address、1、&value、1);
    如果(err < 0){
    printk ("无法读取芯片 id\n");
    退货错误;

    if (value!=芯片 ID [i]){
    printk ("芯片 ID 不正确\n");
    退货错误;


    ERR = BRIDGE_SN65DSi84_CONFIG (p);
    if (err < 0)
    退货错误;

    mleep (50);
    ERR = sn65dsi84_write_reg (p->bridge、0x09、0x01);
    如果(err < 0){
    printk ("将数据写入芯片失败\n");
    退货错误;

    mleep (50);

    地址= 0xe5;
    ERR = sn65dsi84_i2c_read (p->bridge、&address、1、&value、1);
    如果(err < 0){
    printk ("无法读取芯片 id\n");
    退货错误;


    mleep (500);

    返回0;

    请提供您的反馈。

    谢谢、

    安东尼

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

    安东尼

    请发布初始化序列的示波器屏幕截图。 它应如下所示:

    此外、当我说过确保 DSI CLK 是连续的、并且在初始化后的整个时间内保持在 HS 模式时、我是说您应该确保它在初始化后不会返回到 LP11模式、并且保持在 HS 模式。 是这样吗?  

    此致、

    I.K.

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

    尊敬的 I.K:  

    我们测量了初始化序列。 请参阅下面的内容并提供反馈。

    LVDS 单通道:EN 至 DSI_DATA 约750ms (正常启动)

     
    LVDS 双通道:EN 至 DSI_DATA 约1500ms (启动异常)

    LVDS 单通道:EN 至 DSI_DATA 约750ms (正常启动)
     
    LVDS 双通道:EN 至 DSI_DATA 约1500ms (启动异常)

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

    安东尼

    您的最后2张图像未正确附加。

    此外、EN 引脚上似乎存在干扰。 请注意、如果 EN 引脚被驱动为低电平、您需要等待至少10ms、然后再将其再次置为高电平、否则器件可能无法正确启动。  

    此致、

    I.K.  

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

    尊敬的 I.K:

    我们已探测出来自 imx8m 处理器的 MIPI DSI 信号。 在 DSI 调谐器中、建议的 DSI 时钟为222mZH、DSI 通道 A 时钟为444MHz。 CSR 寄存器0x12的值为 0x58。

    下面是显示 DSI 时钟为218MHz 的示波器屏幕截图。 但我们期望444MHz。

    DSI 时钟频率:218MHz


     

    DSI 数据活动


     


     

    请提供有关 DSI 时钟的反馈。

    为什么它显示的是218MHz 而不是444MHz?

    谢谢、

    安东尼

     

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

    这可能是您的处理器出现的问题、您需要向 NXP 工程师寻求帮助。 DSI84不控制处理器的输出。

    此致、

    I.K.  

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

    尊敬的安东尼:

    此问题是否仍然存在?

    此致、

    I.K.  

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

    是 I.K。 我们将就 imx8m 处理器发出的 MIPI DSI 信号与 NXP 工程师联系。

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

    尊敬的安东尼:

    已理解;请随时向我提供最新进展情况、或者如果需要 DSI84的进一步帮助。

    此致、

    I.K.