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.

DLPDLCR4710EVM-G2: problem with DLC-API-1.9

Part Number: DLPDLCR4710EVM-G2

Hi TI Experts,

I have received a DLPDLCR4710EVM-G2 recently. When I tested it, it worked perfectly fine displaying high quality images.

As I want to display specific images at specific times, I have installed the “DLCP API 1.9” package. I use Microsoft Visual Studio 2019 and I work with the Windows 10 OS.

I have succeeded in compiling the sample codes given in the “DLCP API 1.9” package. I worked on the “dlpc347x_dual_samples.c” example. When I ran the executable file, nothing happened. The video just stopped displaying any light…

When I checked each line of the main() of the “dlpc347x_dual_samples.c” file (see code (1) below), I saw that the function “InitConnectionAndCommandLayer()” seemed to work fine but that the function “CYPRESS_I2C_RequestI2CBusAccess()” seemed to loop “indefinitely” (more than one minute). When I looked at this function (see code (2) below), I saw that the function “CYPRESS_I2C_GetCyGpio (I2C_ACCESS_GRANTED_GPIO, &Value)” never returned “1” in the variable “Value”, which explains the very long “while” loop. I think that this means that the communication cannot be established with the video.

Could you please tell me how to solve this problem and how to get the video display images again?

Best regards,
Bertrand.

(1) Part of the code « dlpc347x_dual_samples.c”

void main()
{
InitConnectionAndCommandLayer();

/* TI DLP Pico EVMs use a GPIO handshake scheme for the controller I2C bus
* arbitration. Call this method if using a TI EVM, remove otherwise
*/
bool Status = CYPRESS_I2C_RequestI2CBusAccess();
}


(2) Part of the code “cypress_i2c.c”
bool CYPRESS_I2C_RequestI2CBusAccess()
{
uint8_t Value = 0;
time_t StartTime = time(NULL);

if (!CYPRESS_I2C_SetCyGpio(REQUEST_I2C_ACCESS_GPIO, 1))
{
printf("Request I2C Start Error \n");
return false;
}

while ((time(NULL) - StartTime) < I2C_TIMEOUT_MILLISECONDS)
{
if (!CYPRESS_I2C_GetCyGpio(I2C_ACCESS_GRANTED_GPIO, &Value))
{
break;
}

if (Value == 1)
{
if (!CYPRESS_I2C_SetCyGpio(START_I2C_TRANSACTION_GPIO, 1))
{
break;
}

CyI2cReset(s_Handle, false);
CyI2cReset(s_Handle, true);

return true;
}
}

printf("Request I2C End Error \n");
return false;
}

Regards,

Jonard Rico