I'm trying to communicate with a Cypress CapSense module, model CY8CMBR3106S. During initial testing, I used Cypress's CY3240-I2USB USB-I2C bridge, which works perfectly. I then moved to an Arduino for prototyping of my own application. However, I cannot seem to get the Arduino to communicate reliably with the CapSense controller. Using the I2C scanner sketch found here, the Arduino discovers the CapSense controller perhaps once out of every 40 or so attempts.
In an attempt to debug this, I scoped the bus using both the Cypress USB-I2C bridge and the Arduino. I found that the controller always gives an ACK with the Cypress bridge, and almost never generates an ACK with the Arduino. However, other than the different voltages and clock rates (which I have played around with to no avail), I cannot seem to find any major differences between the frames sent from the two different sources which would explain the inconsistent ACKs.
At this point, I am at something of a loss--any advice would be much appreciated. Thanks!
Here are a few scope captures--note that channels 1 and 2 are SCL and SDA, respectively.
Successful communication using Cypress bridge (note ACK after 8th clock pulse)
Failed communication using Arduino (note lack of ACK)
Very rare successful communication using Arduino