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:读取寄存器等待时间

Guru**** 2448780 points
Other Parts Discussed in Thread: SN65DSI86

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1486017/sn65dsi86-read-register-waiting-time

器件型号:SN65DSI86

工具/软件:

您好、团队、

我的客户正在使用 sn65dsi86、并希望尽快读取 F0到 F8寄存器。 您?告知在初始化后读取这些寄存器的最短等待时间3 μ s

石头

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

    石头

    一旦 DSI86退出复位、就可以访问 DSI86寄存器、但我没有确切的等待时间。

    谢谢

    David

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

    但是、当 F6出现问题时、初始化完成后读取 F6的值是错误的、至少需要40毫秒才能正确读取

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

    您好、

    对于状态寄存器、有时可以在上电时或 DSI 流开始期间设置错误标志。 因此、建议通过写入0xFF 来清除标志、然后读回状态标志。

    您能否澄清一下您的评论:"初始化完成后读取 F6的值错误"?  地址0xF6至0xF7报告与 DSI 到 DP 视频时序相关的错误。 通常、当编程到 DSI86中的视频时序与 DSI 接口上接收到的时序不匹配时、这些寄存器中会设置错误。  因此、直到在 DSI 输入端启动视频流之后、寄存器0xF6才会返回值。

    谢谢

    David

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

    当 F6=40或 F6=60时、无法立即获得相应的值、需要延迟40ms

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

    您好、

    设置寄存器0x5A 中的 VSTREAM_ENABLE 位后、您是否从状态寄存器0xF6读取了值?

    谢谢

    David

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

    不立即读取该值、在初始化代码后读取 F6

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

    您好、

    我不清楚您的问题、请我们的 FAE Stone 与您联系、以便获得 DSI86的支持。

    谢谢

    David

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

    您好、David:

    1.我们想知道 DSI86启动后读取0xF6寄存器的最短等待时间、我们使用以下代码、发现 DSI 初始化后读取0xF6寄存器的最短等待时间约为40ms。如果有任何问题、请检查以下代码吗?

    693 static int sn65dsi86_resume_init (struct sn65dsi86_data *pdata)
    694{
    695 int ret = 0;
    696 int max_retries = 3;
    697内部重试= 0;
    698 pr_err ("TMJ sn65dsi86_resume_init\n");
    699 if(!pdata->is_in_suspend)
    700 return 0;
    701.
    702 if (pdata == NULL){
    703 pr_err ("sn65dsi86 pdata null!!! \n");
    704 }其他{
    705 //sn65dsi86_reset (pdata);
    706 sn65dsi86_init_reg (sn65dsi86_client、pdata);
    707 msleep(100);
    708 ret = sn65dsi86_read (sn65dsi86_client、EDP_I2C_ADDR、0xF6);
    709 pr_err ("TMJ sn65dsi86_resume_init ret=0x%x\n"、ret);


    2.下面是 dsi86的恢复代码,我们首先检查 F6状态,如果 F6状态有错误,我们将禁用 vstream ,然后关闭 dsi86,然后开机并重置 dsi86,然后初始化 dsi86。


    693 static int sn65dsi86_resume_init (struct sn65dsi86_data *pdata)
    694{
    695 int ret = 0;
    696 int max_retries = 3;
    697内部重试= 0;
    698 pr_err ("TMJ sn65dsi86_resume_init\n");
    699 if(!pdata->is_in_suspend)
    700 return 0;
    701.
    702 if (pdata == NULL){
    703 pr_err ("sn65dsi86 pdata null!!! \n");
    704 }其他{
    705 //sn65dsi86_reset (pdata);
    706 sn65dsi86_init_reg (sn65dsi86_client、pdata);
    707 msleep(100);
    708 ret = sn65dsi86_read (sn65dsi86_client、EDP_I2C_ADDR、0xF6);
    709 pr_err ("TMJ sn65dsi86_resume_init ret=0x%x\n"、ret);
    710.
    711 while (ret!= 0 &&重试< max_retries){
    712 pr_err ("TMJ sn65dsi86_resume_init rty %d \n"、重试次数+ 1);
    713
    714 //GPIO_DIRECTION_OUTPUT (pdata->BL_GPIO、0);
    715 //msleep(100);
    716 //gpio_direction_output (pdata->pwr_gpio_dc12v、0);
    717 sn65dsi86_vstream_enable_off (pdata);
    718 msleep(20);
    719 sn65dsi86_write (sn65dsi86_client、EDP_I2C_ADDR、0x96、0x00);//01正常06 HBR2模式
    720 sn65dsi86_write (sn65dsi86_client、EDP_I2C_ADDR、0x93、0x00);//DP 通道、2个通道-->0x24; 4条通道-->0x34
    721 sn65dsi86_write (sn65dsi86_client、EDP_I2C_ADDR、0x0D、0x00);
    722 gpio_direction_output (pdata->pwr_rst_gpio、0);
    723 GPIO_DIRECTION_OUTPUT (pdata->rst_GPIO、0);
    724 msleep(50);
    725 GPIO_DIRECTION_OUTPUT (pdata->pwr_GPIO_12v、0);
    726 GPIO_DIRECTION_OUTPUT (pdata->pwr_GPIO_18V、0);
    727 GPIO_DIRECTION_OUTPUT (pdata->pwr_GPIO_33V、0);
    728
    729 msleep(500);
    730 sn65dsi86_power (pdata);
    731 sn65dsi86_init_reg (sn65dsi86_client、pdata);
    732 msleep(100);
    733
    734 ret = sn65dsi86_read (sn65dsi86_client、EDP_I2C_ADDR、0xF6);
    735 pr_err ("TMJ sn65dsi86_resume_init rty ret=0x%x\n"、ret);
    736
    737次重试++次;
    }

    551 void sn65dsi86_init_reg (struct i2c_client *client、struct sn65dsi86_data *pdata)
    552{
    553 sn65dsi86_write (客户端、EDP_I2C_ADDR、0x09、0x00);
    554 sn65dsi86_write (client、EDP_I2C_ADDR、0x0A、0x04);//dsiclk 09 06 //REFCLK 02
    555 sn65dsi86_write (client、EDP_I2C_ADDR、0x0D、0x00);
    556 sn65dsi86_write (client、EDP_I2C_ADDR、0x10、0x26);
    557 sn65dsi86_write (client、EDP_I2C_ADDR、0x11、0x00);
    558 sn65dsi86_write (client、EDP_I2C_ADDR、0x12、0x54);//REFCLK 59 5c
    559 sn65dsi86_write (client、EDP_I2C_ADDR、0x13、0x54);//REFCLK 59 5c
    560 sn65dsi86_write (client、EDP_I2C_ADDR、0x20、0x80);//1920
    561 sn65dsi86_write (client、EDP_I2C_ADDR、0x21、0x07);//1920
    562 sn65dsi86_write (client、EDP_I2C_ADDR、0x22、0x00);
    563 sn65dsi86_write (client、EDP_I2C_ADDR、0x23、0x00);
    564 sn65dsi86_write (client、EDP_I2C_ADDR、0x24、0x38);//1080
    565 sn65dsi86_write (client、EDP_I2C_ADDR、0x25、0x04);//1080
    566 sn65dsi86_write (client、EDP_I2C_ADDR、0x2C、0x14);//HSYNC-len (hpw)=20
    567 sn65dsi86_write (client、EDP_I2C_ADDR、0x2D、0x00);//00
    568 sn65dsi86_write (client、EDP_I2C_ADDR、0x30、0x08);//vsync-len (vpw)=8
    569 sn65dsi86_write (client、EDP_I2C_ADDR、0x31、0x00);//00
    570 sn65dsi86_write (client、EDP_I2C_ADDR、0x34、0xA0);//h后 沿(HBP)=160
    571 sn65dsi86_write (client、EDP_I2C_ADDR、0x36、0x1B);//v后 沿(VBP)=27
    572 sn65dsi86_write (client、EDP_I2C_ADDR、0x38、0x64);//hfront-gencode (HFP)=100
    573 sn65dsi86_write (client、EDP_I2C_ADDR、0x3A、0x14);//vfront-gencing (VFP)=20
    574 sn65dsi86_write (client、EDP_I2C_ADDR、0x3C、0x00);//pattern 模型测试打开:0x10、关闭:0x00
    575 sn65dsi86_write (client、EDP_I2C_ADDR、0x3D、0x00);
    576 sn65dsi86_write (客户端、EDP_I2C_ADDR、0x3E、0x00);
    577 sn65dsi86_write (client、EDP_I2C_ADDR、0x5B、0x00);//00:RGB888、01:RGB666
    578 sn65dsi86_write (client、EDP_I2C_ADDR、0x93、0x24);//DP 通道、2个通道-->0x24;4个通道-->0x34
    579 sn65dsi86_write (client、EDP_I2C_ADDR、0x94、0x80);//DP 数据速率、1.62Gbps -->0x20;2.7Gbps -->0x80
    580 sn65dsi86_write (client、EDP_I2C_ADDR、0x5C、0x01);//HPD 0->启用1->禁用
    581 sn65dsi86_write (client、EDP_I2C_ADDR、0x5A、0x05);
    582 sn65dsi86_write (client、EDP_I2C_ADDR、0x0d、0x01);
    583 mdelay(30);
    584 sn65dsi86_write (client、EDP_I2C_ADDR、0x64、0x01);
    585 sn65dsi86_write (client、EDP_I2C_ADDR、0x74、0x00);
    586 sn65dsi86_write (client、EDP_I2C_ADDR、0x75、0x01);
    587 sn65dsi86_write (client、EDP_I2C_ADDR、0x76、0x0A);
    588 sn65dsi86_write (client、EDP_I2C_ADDR、0x77、0x01);
    589 sn65dsi86_write (client、EDP_I2C_ADDR、0x78、0x81);
    590 mdelay(20);
    591 sn65dsi86_write (client、EDP_I2C_ADDR、0x96、0x01);//01正常06 HBR2模式
    592 mdelay(20);
    593 sn65dsi86_write (client、EDP_I2C_ADDR、0x5A、0x0D);
    594 mdelay(20);
    595 sn65dsi86_write (客户端、EDP_I2C_ADDR、0x5F、0x08);
    }

    能否告诉我们如何重现此0xF6错误(发生错误时0xF6的值为0x40)、并使用上述代码来检查它是否可以修复此错误?

    非常感谢。

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

    您好、David、

    这种情况有点复杂、让我在这里与大家分享更多背景信息。 客户发现有时上电或唤醒后屏幕出现闪烁、请检查 F6寄存器并找到 DSI 时序错误、 现在我们不知道导致此错误的原因、权 变措施解决方案是在检测到 F6寄存器有错误时重置 DSI86、需要尽可能缩短此检测时间、因此客户想要知道 F6寄存器报告时序错误的速度有多快。  

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

    石头

    让我们看看能否解决这个闪烁问题。

    1.当闪烁问题发生时,如果他们切换至 DSI86内部色条测试,问题是否消失?

    2.如果是、他们能否使用寄存器0x5F 位[5:4]将 HSYNC 和 VSYNC 映射到 DSI86 GPIO 引脚?

    然后、他们是否可以使用示波器来测量 HSYNC 和 VSYNC 频率?

    谢谢

    David

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

    您好 David、

    明白了、遗憾的是、我们无法测量 HSYNC 和 VSYNC、因为两者都接地。  

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

    尊敬的 Stone:

    David 目前正在出差、因此他的回复可能会延迟。 如果您可以尝试 David 之前 回答中的建议1 并分享结果、这将会很有帮助。

    此致、

    Shane

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

    嗨、Shane、David、

    1.当闪烁问题发生时,如果他们切换至 DSI86内部色条测试,问题是否消失?

    ----- 我已经内部同步,我们已经尝试了色条测试,发现问题消失了。

    嗨、Stone、David、

    2.如果是、他们能否使用寄存器0x5F 位[5:4]将 HSYNC 和 VSYNC 映射到 DSI86 GPIO 引脚?

    ----- 如何映射? 而这个问题重现率:2/100,这个问题不 容易重现,所以我们可以用其他方式来重现它吗?谢谢

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

    您好、

    如果在切换到色条时此问题消失、则根本原因可能是 DSI 输入和 eDP 输出之间的时序不匹配。要验证这一点、一种方法是通过将0x10写入寄存器0x5F 的位[5:4]来将 HSNYC 和 VSYNC 映射到 GPIO3。 当重新生成误差并使用示波器测量了 HSYNC 和 VSYNC 频率时、您需要查看频率是否满足 eDP 时序要求。

    谢谢

    David

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

    您好、David:

    根据我们的硬件设计、GPIO3连接地、因此我们无法测量 GPIO3。是否有其他方法来测量 HSYNC 和 VSYNC?

    谢谢

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

    您好、

    您是否有 GPIO2可用?  您可以将0x5F 寄存器设置为0x08以仅在 GPIO2上获取 VSYNC。 如果您可以进行返工、检查 HSYNC 还将有所帮助。  

    当问题发生时、您能否读取寄存器0xF1 - 0xf8、以便我们可以检查错误状态寄存器。

    此致、
    Ikram

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

    尊敬的 Ikram:

    GPIO2从硬件设计中上拉至1.8V、我正在与硬件团队检查 GPIO2是否可用。

    我们已读取寄存器0xF0-0xf8、在发生问题时发现寄存器0xF6的值为0x40。

    谢谢

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

    嗨、Haibin、

    您能否请他们 首先通过为错误检查寄存器设置0xFF 来清除错误。

    如果这两个器件仍然出现错误显示并读取0xF6 = 0x40、则可能与时钟不稳定有关。 它们是否使用基准外部时钟?

    - Ikram

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

    尊敬的 Ikram:

    我已经与我们的硬件团队确认 GPIO2可以使用。

    您是说我们将0xFF 设置到0xF6寄存器以清除0xF6 = 0x40时的错误吗?

    3、我们使用外部时钟。

    谢谢

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

    嗨、Haibin、

    2.是的、他们应该在初始化后写入0xFF 以清除寄存器、然后可以在运行时再次检查0xF6寄存器。

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

    尊敬的 Ikram:

    我阅读了数据表、发现0xF6寄存器的访问权限是"RCU"、什么是"RCU"? 您能否检查我们是否可以将值写入0xF6寄存器?

    谢谢

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

    嗨、Haibin、

    "表8-18. 位字段访问标签说明"中提到了寄存器标签。 RCU 表示:



    因此、向每个位写入1、这意味着写入0xF6 = 0xFF 将清除所有错误、直到它被硬件更新。

    此致、
    Ikram

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

    您好 Ikram、

    我明白了。

    正如您在下面所说的:

    2.是的、他们应该在初始化后写入0xFF 以清除寄存器、然后可以在运行时再次检查0xF6寄存器。

    我有一个问题:我们是在初始化后(可能是0xF6正常)还是在我们找到0xF6 = 0x40之后写入0xFF 来清除寄存器吗?

    谢谢  

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

    嗨、Haibin、

    您可以在初始化后清除、然后检查寄存器。 如果错误在运行时发生、您也可以再次清除它以验证它是否重复发生。

    - Ikram

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

    您好  Ikram、

    好。

    但是、我们不能轻易重现此问题、您是否有其他方法来生成此问题?

    谢谢

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

    嗨、Haibin、

    此问题的重现频率如何?

    此致、

    Gil Abarca

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

    你好  Gil Abarca、

    在出厂测试100台设备时、大约有两台设备。如果重新启动设备、问题将消失。

    谢谢。

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

    嗨、Haibin、

    是否进行了 ABA 测试?

    此致、

    Gil Abarca

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

    你好  Gil Abarca、

    由于重启设备、此问题将消失、因此我们无法执行交换测试。

    您是否有其他方法重现此问题?

    谢谢。

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

    嗨、Haibin、

    为了进行测试、请在中添加步骤

    1.初始化后清除错误检查寄存器(写入0xFF)

    2.轮询错误检查寄存器(0xF1 - 0xf8)

    3.检查是否出现闪烁,并通过轮询找到这些寄存器上显示的相应错误


    问题:

    1.他们是如何发现这种闪烁,它发生的频率是多少? 他们是否捕获了视频的闪烁?

    2.出现闪烁时,发现了什么错误? 它总是一样的吗?

    3.闪烁或黑屏问题可能是由于各种原因造成的,所以我们需要找出错误,以便有可能重现。 是否使用视频输入或内部测试模式对其进行了测试? 测试图案是否也会出现闪烁?  


    - Ikram


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

    尊敬的 Ikram:

    1、在出厂时。系统暂停和恢复测试时发现了这个问题,比值约为2/100 μ m 捕捉了视频,请检查附件。

    发生闪烁时、0xF6寄存器有错误、值为0x40。错误相同、但在我们重新启动器件后会发现此问题。

    3.在 factory.e2e.ti.com/.../fail_5F00_video.mp4上执行系统暂停和恢复操作时、我们发现此问题

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

    嗨、Haibin、

    1.只是为了确认,它是否总是相同的错误签名? 发生这种情况时、是否始终0xF6 = 0x40、而没有其他错误? 当系统正常时、这些寄存器确实会报告其他错误?

    如果它们能够表明在开始时清除错误、并登记工作和问题案件的转储、将会有所帮助。

    2、 问题板(您提到的是100个中的2个)、问题的频率是多少?

    3.使用暂挂模式时是否总是这样?  如果在暂停生效后确认发生、然后取消置位、则必须检查暂停时序要求和顺序。

    - Ikram

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

    尊敬的 Ikram:

    是的、始终 0xF6 = 0x40、没有其他错误、当系统正常时、该寄存器0xf6 =0。

    2.我们测试了100台设备后,可能会发现2台设备有这个问题,当出现这种问题时,它可以在按电源键暂停并恢复后恢复。 如果我们遇到这个问题,我们就无法重现它。

    3."Suspend"(暂停)意味着系统进入 sleep.it 后无法重现此问题。

    谢谢

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

    谢谢 Haibin、请给我2-3天时间 与团队讨论、并就此与您联系。

    此致、
    Ikram

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

    嗨、Haibin、

    进入睡眠状态时、是否指 DP 同步的挂起模式? 在这种情况下、请让客户按照"8.3.3.2挂起模式"一节和"挂起时序要求"规范中描述的顺序操作。 您能否请客户检查此情况并分享他们的"睡眠"状态程序?

    0xF6上显示的同步丢失错误与时序问题有关、例如未针对 DSI 源时序正确对 DSI86进行编程。  另请检查数据表中的上电和断电序列。  

    此致、
    Ikram