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.

DLP3010EVM-LC: Read/Write-Transactions, I2C-Handshake with Cypress UsbSerial library [C#]

Part Number: DLP3010EVM-LC
Other Parts Discussed in Thread: DLPC3478

I am currently working on a C# interface (imported the Cypress USB c++ libraries via C#) to control the DLP3010EVM-LC. I noticed several issues while developing this interface:

1. Why isn't it necessary to distinct between Read/Write transactions (0x36,0x37) and make a bitshift  to 0x1B instead. Is this because I am sending those requests over usb instead over the I2C-Bus (directly)?

2. Is it required to do the I2C-Handshake with the MSP430 everytime a command is sent or only one time (for example while establishing the connection with CyOpen to the board)?

Edit: And if a handshake is required everytime, do I have to set some GPIO Pins (like GPIO 9 and GPIO5) low after my transaction?

3. It seems that the programming guide seems to have some mistakes (for example Write Display Size only shows 4 instead of 8 Parameters), are those going to be corrected soon?

Thank you in advance

Patrick

  • Hello Patrick,

    1. I believe this is handled by the separate addresses 0x36 and 0x37. However, we will have to confirm.
    2. You should be able to do the handshake once at the beginning of a transaction and then release the bus when you are done with the transactions.
    3. We are constantly working on improving the programmer's guide. Please let us know of any other mistakes and we will get to them as soon as possible.

    Thanks,
    Kyle
  • Hello Kyle,
    thank you for your answers.

    1. It's (the address 0x1B) just something I found in several other threads concerning the communication with the DLP3010EVM-LC, that's why I wonder why the distinction between 0x36 & 0x37 is not necessary over the Cypress USB-Bus. It's working so far.

    2. I am not releasing the I2C-Bus at the moment. Do I have to set low gpio9 first and then GPIO5 or the other way round. In general: is there a order for releasing the I2C-Bus?
    Another concern regarding the communication over the USB-Bus: Do I need a delay for the I2CHandshake? After the GPIO5 was set high it is necessary to wait for the MSP430 setting the GPIO6 high.

    3. Here are some (DLPC3478 Programmers Guide):
    - 3.1.2 Read Input Source Select (06h) should probably mean 'Read Operating Mode Select (06h)'

    - 3.6 Read Short Status (D0h):
    -> Bit 0: The values 0 and 1 are flipped, meaning: Complete should be 1 and not complete should be 0 (see also the advanced configuration software for the dlp3010evm-lc

    - 3.1.11 Write Display Size (12h):
    Missing 4 Parameter Bytes over here. 8 Bytes should be transferred instead the documentation says that only 4 are required.
    See also the DLP3010EVM-LC GUI for a sample transaction
    (04.15.2019 09:03:34.4705 Write Display Size 12 00 00 00 00 00 05 D0 02).
  • Hi Patrick,

    To release the bus follow the reverse order: set GPIO9 low first and then GPIO5.

    It is necessary to wait for the MSP430 to set GPIO6 high.

    Thanks for the feedback on the Programmer's Guide. We'll fix these errors in the upcoming revision. Please let us know if you have any further feedback on the documentation.

    Regards
    Azad
  • Thank you Azad, that clears it up.
    But I have another question concerning the handshaking and data transfer process.
    At the moment i am doing the following process:

    1. DoHandshake
    2. SendCommand (CyI2CWrite) (for example WriteImageFreeze)
    3. TurnOffI2CHandshake (=set gpio pins low)
    4. DoHandshake
    5. SendCommand ...
    6. TurnOffI2cHandshake..

    Is it possible to do it the following way, or would there be expectable problems:

    1. DoHandshake
    2. SendCommand
    3. SendCommand
    4. SendCommand
    5. TurnOffI2CHandshake

    (Just do handshake once, send all commands, handover i2c again)
  • Hi Patrick,

    Of course you can do it this way. The USB bridge can retain control of the I2C bus as long as necessary. In fact, it is not necessary to revert control back to the MSP430, unless you require the functions implemented by the MSP (like automatic detection of external video input and push button access).

    Regards
    Azad