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.

[参考译文] TDA4VH-Q1:DSS/DSI 和放大器;DS90UB941AS-Q1:外部时钟工作、但外部时序不工作;未检测到帧

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1409067/tda4vh-q1-dss-dsi-ds90ub941as-q1-external-clock-works-but-external-timing-does-not-frame-is-not-detected

器件型号:TDA4VH-Q1

工具与软件:

您好!

我们在集成 TDA4 DSS 和 UB941串行器时遇到了一些问题。

按照启动指南、我们目前停留在此处:

我们已经进行的测试:

  • DSI 输出与 EVM 上的 DSI-eDP 桥(SN65)搭配使用
  • 检查极性:尝试了不同的组合、但到目前为止都不起作用
  • 时钟:外部时钟似乎没有问题、但外部时序不起作用;DSI_DTYPE = 0
  • 图形发生器适用于0x65 = 0x05、 0x65 = 0x0D、但不适用于0x65 = 0x09
  • 串行器错误寄存器不指示任何问题

SER 的错误寄存器:

D reg 0x1f = 0x8f [FREQUENCY_COUNTER] = as expected
I reg 0x28 = 0x0 [DSI_STATUS]
I reg 0x29 = 0x0 [DSI_ERR_COUNT]
I reg 0x2a = 0x0 [DSI_VC_DTYPE]
I reg 0x2b = 0x0 [DSI_ERR_RPT_0]
I reg 0x2c = 0x0 [DSI_ERR_RPT_1]
I reg 0x2d = 0x0 [DSI_ERR_RPT_2]
D reg 0xc = 0x5 [GENERAL_STS] = OK
D reg 0x50 = 0x16 [BRIDGE_STS] = OK
D reg 0x5f = 0x58 [DSI_FREQ_DSI_FREQ_P1] = 528 MHz
I reg 0xf = 0x1f [DPHY_STATUS]
I reg 0x10 = 0x0 [DPHY_DLANE0_ERR]
I reg 0x11 = 0x0 [DPHY_DLANE1_ERR]
I reg 0x12 = 0x0 [DPHY_DLANE2_ERR]
I reg 0x13 = 0x0 [DPHY_DLANE3_ERR]
I reg 0x14 = 0x0 [DPHY_ERR_CLK_LANE]
I reg 0x15 = 0x0 [DPHY_SYNC_STS]

DES reg 0x1b = 0xa9 [FREQUENCY_COUNTER] = as expected

DSS DSI 配置:

// screen = (1002 * 2) x 733 lines

dsiPrms.numOfLanes = 4U;
dsiPrms.laneSpeedInKbps = 528815UL; // = (60 fps x 733 lines x 2004 pixels x 24bpp) / 4 lanes / 1000
Fvid2_control(dctrlHandle, IOCTL_DSS_DCTRL_SET_DSI_PARAMS, dsiPrms, nullptr)

DISPLAY_CONTROLLER_VIDEOPORT_NODE_ID = DSS_DCTRL_NODE_VP3;
DISPLAY_CONTROLLER_OUTPUT_NODE_ID = DSS_DCTRL_NODE_DSI_DPI2;

Dss_DctrlVpParams *vpParams;
Dss_DctrlAdvVpParams *advVpParams;

Dss_dctrlVpParamsInit(vpParams);
Dss_dctrlAdvVpParamsInit(advVpParams);

vpParams->vpId = CSL_DSS_VP_ID_3;
advVpParams->vpId = CSL_DSS_VP_ID_3;

vpParams->lcdOpTimingCfg.mInfo.standard = FVID2_STD_CUSTOM;
vpParams->lcdOpTimingCfg.mInfo.width = 1920;
vpParams->lcdOpTimingCfg.mInfo.height = 720;
vpParams->lcdOpTimingCfg.mInfo.fps = 60U;
vpParams->lcdOpTimingCfg.mInfo.pixelClock = 88135920; // = (60 * 1002 * 2 * 733)
// TskipCnt: SER IND[0x05] = 0x18 ( 12<<1 )
vpParams->lcdOpTimingCfg.mInfo.scanFormat = FVID2_SF_PROGRESSIVE;

vpParams->lcdPolarityCfg.actVidPolarity = FVID2_POL_HIGH; // SER [0x12] = 0x00
vpParams->lcdPolarityCfg.hsPolarity = FVID2_POL_LOW; // SER IND[0x21] = 0x60
vpParams->lcdPolarityCfg.vsPolarity = FVID2_POL_LOW; // SER IND[0x21] = 0x60
vpParams->lcdPolarityCfg.pixelClkPolarity = FVID2_EDGE_POL_RISING;

advVpParams->lcdAdvSignalCfg.hVAlign = CSL_DSS_VP_HVSYNC_ALIGNED;
vpParams->lcdOpTimingCfg.dvoFormat = FVID2_DV_GENERIC_DISCSYNC;
vpParams->lcdOpTimingCfg.videoIfWidth = FVID2_VIFW_24BIT;

// same config verified with pattern generator
vpParams->lcdOpTimingCfg.mInfo.hBackPorch = 22U;
vpParams->lcdOpTimingCfg.mInfo.hSyncLen = 20U;
vpParams->lcdOpTimingCfg.mInfo.hFrontPorch = 42U;
vpParams->lcdOpTimingCfg.mInfo.vBackPorch = 10U;
vpParams->lcdOpTimingCfg.mInfo.vSyncLen = 2U;
vpParams->lcdOpTimingCfg.mInfo.vFrontPorch = 1U;
Fvid2_control(dctrlHandle, IOCTL_DSS_DCTRL_SET_VP_PARAMS, vpParams, nullptr);
Fvid2_control(m_dctrlHandle, IOCTL_DSS_DCTRL_SET_ADV_VP_PARAMS, advVpParams, nullptr);

UB941配置:

{0x01, 0x01}, /* reset device */
{0x01, 0x08}, /* disable DSI */
{0x1E, 0x01}, /* select DSI0 */
{0x03, 0x9A}, /* general cfg */
{0x06, 0x68}, /* DES device id */
{0x07, 0x54}, /* backlight driver device id */
{0x12, 0x00}, /* DE_POLARITY */
{0x17, 0x9E}, /* General cfg reg*/
{0x4F, 0x8C}, /* 4 DSI lanes*/
{0x1F, 0x28}, /* Set Freq Counter Period */
{0x40, 0x04},
{0x41, 0x20}, /* DSI Config_0 reg */
{0x42, 0x5F},
{0x40, 0x04},
{0x41, 0x21}, /* DSI_CONFIG_1 Register */
{0x42, 0x60}, // low-low
{0x40, 0x04},
{0x41, 0x30},
{0x42, 0x00},
{0x41, 0x31},
{0x42, 0x14}, /* HSYNC = 20 */
{0x41, 0x32},
{0x42, 0x00},
{0x41, 0x33},
{0x42, 0x02}, /* VSYNC = 2 */
{0x41, 0x05}, /* DSI_ERR_CFG_1 */
{0x42, 0x18}, // Tskip = 12
{0x40, 0x10}, // startup sequence
{0x41, 0x86},
{0x42, 0x0A},
{0x41, 0x94},
{0x42, 0x0A},
{0x01, 0x00}, // start
{0x04, 0x20} // Clear CRC Error Counters

您是否知道 UB941为何不能识别数据/时序?

此致、
Thomas

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

    Thomas、我们团队的一位成员将对此进行调查。

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

    您好、Thomas:

    您使用的确切计时是什么? 您能否分享 DSI 时序?

    此致、

    Brijesh

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


    您好、Brijesh:

    您指的是哪些时序?

    lanespeed、porch 值等都在上述 DSI 配置块中、但简而言之:

    pixelClock = 88135920
    dsiPrms.numOfLanes = 4
    dsiPrms.laneSpeedInKbps = 528815
    lcdOpTimingCfg.mInfo.hBackPorch = 22U;
    lcdOpTimingCfg.mInfo.hSyncLen = 20U;
    lcdOpTimingCfg.mInfo.hFrontPorch = 42U;
    lcdOpTimingCfg.mInfo.vBackPorch = 10U;
    lcdOpTimingCfg.mInfo.vSyncLen = 2U;
    lcdOpTimingCfg.mInfo.vFrontPorch = 1U;

    Thomas

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

    您好、Thomas:

    我们是否可以更改时序参数和相应的 ub941配置并检查输出?

    PixelClock = 117000000
    dsiPrms.numOfLane = 4
    dsiPrms.laneSpeedInKbps = 702000

    lcdOpTimingCfg.MINFO.hBackPorch = 618u;
    lcdOpTimingCfg.MINFO.hSyncLen = 20u;
    lcdOpTimingCfg.MINFO.hFrontPorch = 42U;
    lcdOpTimingCfg.MINFO.vBackPorch = 27u;
    lcdOpTimingCfg.MINFO.vSyncLen = 2U;
    lcdOpTimingCfg.MINFO.vFrontPorch = 1u;

    此致、

    Brijesh

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

    您好、Brijesh:

    感谢您输入、但遗憾的是、它也不起作用。

    这些价值观背后的理念是什么?

    目前、似乎只有当我们将帧大小减小到1280x720时才会接收到 VC_DTYPE = 0x3E 的位(但这样显示不起作用)。

    你还有其他想法吗?

    此致、
    Thomas

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

    您好!

    我想我们现在可以通过将像素时钟增加到90.000.000来解决这个问题。

    您是否知道像素时钟为什么需要高于计算建议的值?

    此致、
    Thomas

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

    您好、Thomas:

    但 您是否仅更改像素时钟? 那么 fps 将非常高、对吧?

    此致、

    Brijesh

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

    您好、Brijesh:

    像素时钟和通道速度、是的。 因此 FPS 应为61.27、而不是60。 (pxclk 90000000而不是88135920)

    对于当前状态、最好是使用61fps 而不是不使用60fps、但剩余的问题是:
    为了使其正常工作、该值需要增加多少?60fps 的问题出在哪里?
    例如、DPHY 配置的 PSDK DSS 模块中是否存在一些舍入问题?

    此致
    Thomas

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

    您好、Thomas:

    您能否与91MHz 像素时钟分享完整的时序设置?  

    同样、在原始设置这种错误情况下、您能否共享偏移0x048000F0处的寄存器值?

    此致、

    Brijesh

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

    您好、Brijesh:

    90MHz 的时序与88.1Mhz 时钟的时序完全相同。

    现在、我们将 pixclk 配置为88136000 (60.00005fps)、它可以正常工作!
    这是足够接近60现在还不错:-)

    我现在需要一些时间来检查注册、只是为了理解您的想法、稍后可能会补充一点:您预计它会是什么?

    非常感谢、此致、
    Thomas

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

    您好、Thomas:

    您的电路板上使用的是哪种输入 SYSCLK/XTALE/OFC0时钟? 在 EVM 上是19.2MHz。 您的电路板上是否使用了不同的时钟?  这取决于输入时钟。

    此致、

    Brijesh