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.

DLPC350: Writing/Reading to/from I2C master port

Part Number: DLPC350

Dear all,

I have the MCP3021 AD converter on the I2C0 port on the DLPC350 for reading out the LED temperature (NTC). We have access through the TI Lightcrafter GUI (with USB connection to the host) and are able to read out the conversion values from the AD converter:

I2C0 (Master) Read/Write Control
Addressing Mode         7-Bit
Clock Rate (Hz)             100000
Device Address (Hex)  0x9A
Write Data (Hex)
Read Data (Hex)
Bytes to Read                 2

Pressing RETURN gives us the two bytes from the AD converter in the Read Data (Hex) field of the GUI.

Now we would do this through the DLPCs I2C1 interface to our host processor. And we are a little bit confused about how this should work with the I2C0 Master Port Control Command in the DLPC.

We write the information into the 0x7B register through I2C1 port with an i2C write command, but we didn't get the response with the two bytes read from the AD converter. Could you give us an advice how to use the  I2C0 Master Port Control Command? Many thanks for your support.

Best regards,
Hagen

  • Hi Hagen, 

    Welcome to TI E2E Forums! We will look into your query and get back soon. Thanks for your patience. Meanwhile, could you kindly confirm that you are using DLPC350 FWv4.1 with LCR4500 GUI v4.0?

    Thanks & Regards,

    Hirak.

  • Hi Hirak,

    we actually work with TI GUI 3.10 and FW 4.0.3.

    Best regards,

    Hagen

  • Hi Hirak,

    I now have some more detailed failure description from my developers:

    The MCP AD conversion value is read out by simply sending the device address with bit 0 is set to 1 (read). Then the MCP answers with two bytes.

    Therefore we filled a byte structure for the I2C Master Read Command as described in the DLPC350 programmers guide, containing clock setting, slave device address and the number of bytes to read back. After writing this structure to the I2C Register 0x7B nothing happens on the bus. Reading from other DLPC350 I2C registers (i.e. firmware tag information register 0x33) works in principal.

    To test the hardware condition we tried using the "Read" functionality in LCr4500 (Peripheral Control - I2C0 (Master) Read/Write Control) which communicates via USB. By setting "Clock Rate", "Device Address" and "Bytes to Read" everything works fine, two correct bytes (a temperature value) are received.

    We analysed the SDA/SCL signal pins of I2C Port 0 by using an oscilloscope. Using Lighcrafter (USB communication) the signals are correct. Using I2C commands nothing happens on I2C master port.

    Best regards,

    Hagen

  • Hi Hagen ,

    Thanks for the detailed information! Kindly give us some time to experiment regarding this failure. We'll get back to you soon! Thanks for your patience.

    Thanks & Regards,

    Hirak.

  • Hi Hagen, 

    I have been able to reproduce the error and have been debugging it! It seems there is an error in the DLPC350 FW that is causing this issue. I have implemented a fix for this problem, we will plan to include this in the next maintenance release. Is this fine?

    Thanks & Regards,

    Hirak.

  • Hi Hirak,

    many thanks for your support. Yes, it will be fine, if you could include the fix in the next release. We now will access the I2C master port through USB - it is a little bit more work in our software stack, but will be possible.

    Best regards,

    Hagen

  • Hi Hagen, 

    Thanks for your consideration and we apologize for any inconvenience caused. Thanks for your interest in TI DLP Technology, have a great day!

    Regards,

    Hirak