主题中讨论的其他器件:DLPA2000、 DLP3010、
工具与软件:
您好!
我要提出一个包含 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(¶m, 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 固件是否支持此寄存器?
