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.

I2C Interface for Pico 2 Development Kit



I have a Pico 2 development kit that I am experimenting with.  I would like to perform some simply programming operations that configure the unit to display various internal structured light patterns.  I have NOT been able to successfully execute any I2C commands.  My setup is as follows:  I am using a flex ribbon cable connected to the J113 Auxiliary port on the Pico 2, I have soldered fine leads to the SDA (Pin 22), SCL (Pin 23), and Ground (Pin 24), these signals are run into a TI USB I2C interface Adapter module via its ribbon cable.  Interaction with the programmer/Pico is through the GUI application that came with the programmer module.  The hardware arrangement is shown below -

 

I have a couple of active questions and a general solicitation for other possible problems.

1. The Development Kit Users Guide talks about pull-up resistors for the I2C signals.  What value of resistors are required? (the programming module lists 0, 2.2K, 1.1K, and 668 ohm as options)

2. There is mention of bus speed selection.  Is the Pico setup up for 100KHz or 400K Hz communication? Or does it matter?

3. The programmer's GUI application only has entries for Read vs. Write, Cmd, and Data.  This does match very well with the Pico Programmers Guide descriptions about what needs to be sent out.  I am assuming that the application is handling some of the details behind the scenes - or maybe this is the source of the problem.  For example, if I want to designate the input source as the splash screen I need to write the value 0x0000002 to adrresss 0x04.  In other words send out S 36 04 00 00 00 02 P.  As you can see the GUI does not allow for entry of all of this detail.  I assume that by specifying Device Address 1 and selecting the radio button I2C Write that this is where the initial 0x36 comes from. 

Likewise, when reading I am assuming that selection of the I2C Read radio button causes the applicaton to follow through on the 2 step cycle for reading data.  Since nothing is working - I am left with questions.

I have attached a screen shot of the programmer's GUI.

 

4. What address is considered the base address for I2C programming on the Pico.  The programmers guide calls out 0x36 for writes and 0x37 for reads.  Other documentation suggests 0x1B.

5. It appears that most developers are using the Beagle Board to manipulate the Pico.  Maybe this is the path I should choose.  But, I would like to get a feel for what the Pico's capabilities are before creating a real project and it seems that the approach I am trying should work.

6. I have captured the initial outbound SCL, SDA cycle to the I2C bus on an oscilloscope.  It looks as expected with the exception of responding ACK.

Any other suggestions would be appreciated.

Pete

  • Pete,

    First - Hello. Welcome to DLP and MEMS E2E. Sorry you have been having difficulty getting started with the Pico Kit V2. Maybe some answers to your questions will get you going.

    1. I2C pull up resistors - I recommend 2.2k

    2. I2C speed - 100k

    3. Sorry - I'm not familiar with the GUI you are using (I can see its from TI, but I haven't used it). But - yes. The GUI is doing some formatting of the output. The I2C command is the way you describe it. Is there a configuration where you set the I2C address?

    4. The Pico Kit V2 I2C address is 0x36 for writes, 0x37 for reads. The 0x1B which you have seen is when using the bus3-i2c tools in Angstrom Linux.

    5. The BeagleBoard is indeed an excellent way to interface to the Pico Kit V2. But - not the only way. The BeagleBoard has HDMI (DVI-D) video output which can be connected directly to the Pico Kit V2. The HDMI connection includes an I2C channel which is intended for use by the EDID to identify the resolution required. However, the same I2C can be used to communicate with the Pico Kit V2 by using the bus3-i2c commands from Linux.

    6. If you did not have proper pullup or I2C address or bus speed, that is what you would see.

    I hope this helps.

    Best regards,

    Pascal

     

  • O.K. - the problem has been resolved, thanks for the guidance Pascal - it helped in solidifying my starting point.

    The primary problem was a transformation of the USB Programmer's entry address that was applied to what was sent to the Pico unit.  It was compounded by an inconsistency in the use of  decimal versus hexadecimal notation by the GUI applicaiton.  A page from the programmer manual below describes a left shift to the entered address and zeroing of the Write bit.  Furthermore the GUI Device Address entry is in decimal notation, where as all other fields are noted as hexidecimal.  This lead me to initially believe the device address was hex as well.  The combination of the translation and decimal notiaton lead to confusion.  In any case a Device Address entry of  27d translates to a 0x36 being sent to the Pico and allowing for successul writes.

    Some other information that may be useful to other developers:

    The flex ribbon cable is DigiKey P/N WM10219-ND.  You will need very fine-work soldering equipment and a microscope or other magnifying device.

    The USB I2C programmer is DigiKey P/N 296-23114-ND.

    One other thing that may be useful to know is the pinout of the I2C signals in the HDMI connector and the pinout of a typical DVI-to-HDMI converter connector.  If anyone has this information I would be interested in it.  For some instances it may be easier to tap into the signals at this location - although I notice for some uses of the Pico, external sync. signals are needed in which case it would be tough to break-out the I2C signals from a standard DVI cable and still have the video signals in tact.

    Pete

     

     

  • Can you say where you got the USB interface, or a link to the GUI for the Pico 2?

  • Alan,

    I use the USB-I2C adapter from DevaSys. http://www.devasys.com/usbi2cio.htm

    DevaSys only provides drivers for Windows, though. There is documentation at their site.

    Best regards,

    Pascal

  • Alan,

    The USB interface is a TI device that I purchased from DigiKey  (P/N 296-23114-ND).  The GUI is from the software that came with the device.

    http://search.digikey.com/scripts/DkSearch/dksus.dll?lang=en&site=US&KeyWords=296-23114-ND

    Pete

     

  • Thanks Pascal and Pete. I ordered the adapter today. And thanks for replying so quickly!

  • I received the USB Interface Adapter Evaluation Module. The pin functions of the 10 pin connector are described, but what is the location of the pins on the connector? 

  • Alan,

    I assume that you purchased the TI USB-to-I2C/GPIO Bridge. The documentation available for that product is: http://focus.ti.com/lit/ml/sllu093/sllu093.pdf (you can download this from the DigiKey site; it links to this address.) Is that where you see the description?

    Perhaps the schematic on page 30, Figure 6-1 will help. Any other questions should be directed to the TI USB group.

    Best regards,

    Pascal

  • Hey Pete,

    I have the same USB-TO-GPIO device that you are using. When I plug this adapter into my Windows 7 64bit computer USB port, I can see a new device appear in my 'Device Manager' called 'USB Input Device' but my software won't discover this device as its supposed to.

    My question is is there a specific device driver for this adapter?

    I appreciate any help...

    Pat

    Ahh never mind... I figured it out. I had to set my development studio project to target 32 bit(x86) platform. It was set to Any so on a 64 bit computer it wasnt seeing that device.

  • Hello,

    I am having some difficulty getting Beagleboard C5 to load Linux Angstrom from MMC. So I am looking for a faster alternative.

    What would be the set back or disadvantage of using USB-TO-GPIO instead of Beagleboard if all I want to do is to interface via i2c with the pico projector development kit v2?

    Any comments would be very helpful.

    Ku

  • Ku,

    The BeagleBoard has been suggested as a means of communicating with the Pico Kit v2 because of 3 features:

    1) BeagleBoard has HDMI video output, and can output video at 640x480@60Hz.

    2) BeagleBoard can access the I2C channel which the HDMI cable uses to read the EDID.

    3) BeagleBoard can run i2c-tools under Angstrom linux (perhaps other linux versions as well).

    The Pico Kit v2 i2c bus can be accessed via pins on the AUX port located on the side of the kit. It is possible to implement the i2c communication protocol using USB-to-GPIO. However, I do not know of software to implement this. You will have to program your own implementation, if you can not find something already available. Refer to the DLP Pico Kit v2 Programmer's Guide  (http://www.ti.com/litv/pdf/dlpu002a) and the Application Report Using the DLP Pico Kit v2 for Structured Light Applications (http://www.ti.com/litv/pdf/dlpa021a).

    Also, there have been quite a few discussions about using the i2c commands for the Pico Kit v2 on this forum. I recommend searching for these and looking at what others have tried and the help that has been given.

    Best regards,

    Pascal

  • Hello

    i used the USB interface adapter, connect with device, the connect terminate is DAT,CLK,GND, three terminate, but when i setting the software  USB Adapter EVM, the ACK/NAC part is  always shows ERROR, so what is problem ? i want to know for now is working or not 

    Kind Regards

    Yuchen

  • Yuchen,

    Welcome to the TI DLP&MEMS E2E forum.

    Are you using the I2C pins of the AUX port?

    I believe that the answers given above in this thread are the best help that can be given on this question. Please look closely at the postings by Pete Sites, and my answers to him, especially about the different I2C read and write addresses.

  • Hello

    i used the 12C pin, the read address is 0x37,write address is 0x36 right? i fill in the address block, but still error, and use the PicoScope test that is no signal on the terminit,  probably connect problem, i give my device picture, as see below:    

  • Yuchen,

    Do you have the schematics for the Pico Kit V2?

    The AUX connector is J113. AX_SDA is pin 22; AX_SCL is pin 33. When the Pico Kit is booted, do you see 3.3 V on both of these pins?

    Also, since this is a shared bus - with EDID and MCU, you must wait until the Pico Kit is booted up before you can use commands over the AUX I2C.

    There is a voltage translator chip between the AX_SDA, AX_SCL and the P_SDA, P_SCL (DMD Controller U1 I2C bus).

  • Hello

    i do not have Pico Kit, I just use this adapter connect with my PCB board, my PCB board is have the SMbus module, it is should working actually, so probably i miss something

    Kind Regards

    Yuchen Xie 

  • Hello

    my PCB board have SMBus connector ,DAT,CLK,GND, three port,for now, i gotta my PCB board SMBus address, but the EVM software still show the ERROR, i make picture to you, as see below. 

    and how to fill in COM and DATA block by hex number,  For example, my W-commands is 1 Byte command+2 Byte Data, how to fill in the com and data block by hex number, thanks 

    Kind regards

    Yuchen

  • 1) If I use the adapter to issue I2C commands (say make a checkerboard pattern) wont that make the dlp pico projectr still output video (or a still image) in that checkerboard pattern as soon as the command was issued?
    2) Can't the USB to GPIO adapter access the I2C channel as well
    3) Cant the adapter still issue I2C commands with Microsoft Windows XP and we wouldn't have to have Linux. (By the way can the beagleboard only work if it is used with Linux). If my computer is Microsoft Windows XP can I still used the beagleboard with a configured SD card.

    Is there still limitations or disadvantages using the adapter

    I believe the software for the adapter is GUI.