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.

[参考译文] DLPC3478:读取 DMD I/F 训练数据寄存器

Guru**** 2577385 points
Other Parts Discussed in Thread: DLPA2000, DLP3010, DLPC3478

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

https://e2e.ti.com/support/dlp-products-group/dlp/f/dlp-products-forum/1437376/dlpc3478-reading-the-dmd-i-f-training-data-register

器件型号:DLPC3478
主题中讨论的其他器件:DLPA2000DLP3010

工具与软件:

您好!

我要提出一个包含 DLPC3478、DLPA2000和 DLP3010的电路板。 我们之前在其他的产品里把三个芯片都用到一起了。  我使用的是8.1.1 DLPC 固件的定制版本、由于我们使用专用 IC 进行 LED 控制、因此可以通过 DLPA2000禁用 LED 控制。

我已成功编程 DLPC 的外部闪存、可以通过 I2C 与之通信。 但是、当我命令 DLPC 显示测试图形或流式传输内部图形时、DLP3010无法按预期工作。  为固体开启测试图形显示的确切图形因运行而异、请参阅下面的两个示例:

我想检查控制器到 DMD 的接口是否正常工作、我看到了 DMD I/F 训练数据寄存器(0xDC)。 我将以下代码添加到 TI DLP API 模块中以进行读取。

typedef enum {
    PIN_PAIR_A = 0x00,
    PIN_PAIR_B = 0x01,
    PIN_PAIR_C = 0x02,
    PIN_PAIR_D = 0x03,
    PIN_PAIR_E = 0x04,
    PIN_PAIR_F = 0x05,
    PIN_PAIR_G = 0x06,
    PIN_PAIR_H = 0x07,
} DLPC34XX_DMDInterfacePinPair_e;

typedef struct
{
    DLPC34XX_DMDInterfacePinPair_e PinPair;
    bool PairSelectedForTraining;
    bool TrainingError;
    uint8_t SelectedDLL;
    uint8_t LowPassDLL;
    uint8_t HighPassDLL;
} DLPC34XX_DMDInterfaceTrainingResult_s;

uint32_t DLPC34XX_ReadTrainingResult(DLPC34XX_DMDInterfacePinPair_e pinPair, DLPC34XX_DMDInterfaceTrainingResult_s *result)
{
    uint32_t Status = 0;
    uint8_t data[4] = {0};
    uint8_t param = 0;
    
    DLPC_COMMON_ClearWriteBuffer();
    DLPC_COMMON_ClearReadBuffer();

    DLPC_COMMON_PackOpcode(1, 0xDC);
    
    param = 0x00 | (pinPair & 0x0F);
    DLPC_COMMON_PackBytes(&param, 1);

    DLPC_COMMON_SetCommandDestination(0);
    Status = DLPC_COMMON_SendRead(4);

    for (int i = 0; i < sizeof(data); i++)
    {
        data[i] = *(DLPC_COMMON_UnpackBytes(1));
    }

    if (Status == 0)
    {
        uint8_t overviewByte = data[0];
        result->TrainingError = (overviewByte >> 5) & 0x01;
        result->PairSelectedForTraining = (overviewByte >> 4) & 0x01;
        result->PinPair = overviewByte & 0x0F;
        result->SelectedDLL = data[1] & 0x3F;
        result->LowPassDLL = data[2] & 0x3F;
        result->HighPassDLL = data[3] & 0x3F;
    }
    return Status;
}


但是、当我尝试读取每个引脚对时、它们都返回数据、如所示

0xDC、0x3F、0x3F、0x3F。

这在我看来不正确、因为解码后的引脚对为12、这不是有效的引脚对。

8.1.1 DLPC 固件是否支持此寄存器?

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

    Andy、您好!

    感谢您通过 E2E 进行联系!

    这对我来说也不正确。 " DMD I/F 培训"与 DMD 的延迟一致有关。

    根据您的图像、似乎引脚映射不正确? 您能建议您在设计中使用了哪个版本的引脚映射吗? 请参阅 DLPC3478数据表的第7.3.10.1节

    同样、" DMD I/F 培训"只是一个可读 寄存器、不太可能是引起问题的原因。

    请告知您是否自己构建了定制 DMD、或者您是否与光学制造商合作过? 似乎无法正确端接布线 、您必须检查并遵循 DLP3010LC 数据表的布局部分(10)下的行数

    此致!

    亚伦

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

    Andy、您好!

    我们将通过电子邮件继续执行此操作

    此致!

    亚伦