How does the CY7C65215 convert the USB input into I2C commands?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
tidac_3932376
Level 1
Level 1

I am trying to use the CY7C65215 to send Ic2 commands to a TI DLP3010 Light processor device (a commercial board that uses the CY7C65215) but I am unable to communicate with the board. I don't know if the problem is with the CY7C65215 or the DLP3010. Does anyone know how the I2C commands pass through the CY7C65215 via the USB? Does it add extra bits or left shift the bits in any way? I am using the Cypress usb library which seems to find the CY7C65215 ok.

0 Likes
1 Solution
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

The USB-Serial device sends the I2C write/ read commands to the I2C device as per the API calls from the host application. The Write/Read APIs check the I2C data configuration and accordingly left shift the address, add the appropriate data direction bit and address whether a stop or NAK condition is enabled. These configurations along with data are sent to the USB-Serial device in the form of a vendor commands and the device carries out the I2C communication accordingly.

If you are not seeing proper communication with the I2C device, kindly check if any of the APIs are failing and also the status of the I2C lines using a logic analyzer.

Best Regards,

Sananya

View solution in original post

0 Likes
3 Replies
Sananya_14
Moderator
Moderator
Moderator
750 replies posted 500 replies posted 250 solutions authored

Hello,

The USB-Serial device sends the I2C write/ read commands to the I2C device as per the API calls from the host application. The Write/Read APIs check the I2C data configuration and accordingly left shift the address, add the appropriate data direction bit and address whether a stop or NAK condition is enabled. These configurations along with data are sent to the USB-Serial device in the form of a vendor commands and the device carries out the I2C communication accordingly.

If you are not seeing proper communication with the I2C device, kindly check if any of the APIs are failing and also the status of the I2C lines using a logic analyzer.

Best Regards,

Sananya

0 Likes

Thanks for that information - I am now struggling with the setting the GPIO pins on the device. I am using the Cypress API which has a function for this: CySetGpioValue(). I seem to be able to read pins using CyGetGpioValue() but not write to them - I keep getting the error "The request was failed by the USB Serial device"  There is no other information to help debugging this. Opening the connection using CyOpen()  doesn't return an error so I presume it is open. There is one device (0) with 3 possible interfaces (i2c, spi and NA) and I have tried all three with no success. Is there some other switch that I need to set - perhaps the pin directions? If so how is this done? Or maybe some other hidden process that has not yet been divulged? Do you have examples using the libusb API where the GPIO pins are set?

0 Likes

Hello,

The CySetGpioValue() API will only work with the GPIOs configured as output pins. The configuration needs to be done using the USB-Serial Configuration Utility and the device should be reset before running the application. Please check and let us know if you still face an error,

Best Regards,

Sananya

0 Likes