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.

DLPDLCR2000EVM: I2C commands not being read from PIC microcontrolelr

Part Number: DLPDLCR2000EVM

I had a couple questions regarding I2C communication with the 2000EVM.  In the programmer's guide it says that the EVM is rated up to speed of 400kHz.  My current PIC has problems with speeds at 400kHz so I have moved it down to 100kHz with 2 10K pull up resistors.  Will that work with the EVM?

Also, I am initially just trying to get the splash screen to change.  So far I've sent:

0x36 0x0b 0x00 0x00 0x00 0x01 (sub address for input source selection - set to internal test pattern)  
0x36 0x0c 0x00 0x00 0x00 0x1b (sub address for input/output resolution - set to nHd landscape)

I noticed that in the quick start tutorial they set the address of the evm to 0x1b.  I assume that is specific only to communicating with the beaglebone.  I have a beaglebone and tested the evm with that and everything works perfectly.  Just need to get it working with the PIC now. 

Thanks.  

Lance   

  • Lance,

    Welcome to the E2E forums, and thanks for your interest in our DLP technology.

    The tutorial uses an address of 0x1b for the Beaglebone because of the I2C protocol. 0x1B is the same as 0x36 shifted right once (0b11011 vs 0b110110). The additional bit represented here is actually the read/write bit. This bit needs to be accounted for in your I2C transactions.

    For reference purposes, I recommend you probe your BeagleBone's I2C line so you can see as a reference what it is sending to the DLPDLCR2000EVM.

    I hope this helps.

    Regards,

    Philippe Dollo

  • Hi Philippe,

    Thanks for your reply.  I have done some troubleshooting and scoped my SCL to confirm the baud rate.  I have attached a picture of my clock signal.

    I am also checking to make sure that the EVM is sending acknowledge bits back to my microcontroller after each byte sent.  I am sending 8 bits at a time and am getting acknowledge bits from the pico after each byte, then sending the next 8 bits.  I am displaying the acknowledge bits on an LCD screen so I know the EVM is getting my data transfer.  The problem is that my splash screen is still not changing even though the EVM is acknowledging data transfer.  I have included my register writes below.  Can you take a look and see if I am missing something?  I feel like the registers are not being written to for some reason.  Thank you.

    0x36 0xa3 0x00 0x00 0x00 0x01 (Device register swap freeze - Set to freeze)

    0x36 0xa6 0x00 0x00 0x00 0x01 (Curtain enable - set to black)

    0x36 0x0b 0x00 0x00 0x00 0x01 (sub address for input source selection - set to internal test pattern)  

    0x36 0x0c 0x00 0x00 0x00 0x1b (sub address for input/output resolution - set to nHd landscape)

    0x36 0xa3 0x00 0x00 0x00 0x00 (Device register swap freeze - Set to unfreeze)

    I do not have the video data pins or the video control pins setup.  I am solely trying to change the splash screen to confirm I2C. Would I need the video control pins as well right now?  I didn't think I would because I should be able change the screen with only I2C.  Thank you kindly.

    -Lance

  • Hi,

    After many hours going over my code I found a bug in it.  It had to do with the way I was setting my interrupts.  I can now communicate with the pico using my PIC via I2C.  Thank you.