Estoy tratando de comunicarme con un módulo Cypress CapSense, modelo CY8CMBR3106S. Durante las pruebas iniciales, utilicé el puente CY3240-I2USB USB-I2C de Cypress, que funciona perfectamente. Luego me mudé a un Arduino para hacer un prototipo de mi propia aplicación. Sin embargo, parece que no consigo que el Arduino se comunique de manera confiable con el controlador CapSense. Usando el bosquejo del escáner I2C encontrado aquí , el Arduino descubre el controlador CapSense tal vez una vez de cada 40 intentos.
En un intento de depurar esto, localicé el bus utilizando tanto el puente Cypress USB-I2C como el Arduino. Descubrí que el controlador siempre da un ACK con el puente Cypress, y casi nunca genera un ACK con el Arduino. Sin embargo, aparte de los diferentes voltajes y velocidades de reloj (con los que he jugado en vano), parece que no puedo encontrar diferencias importantes entre los marcos enviados desde las dos fuentes diferentes, lo que explicaría los ACK inconsistentes.
En este punto, me siento algo perdido: cualquier consejo sería muy apreciado. Gracias!
Aquí hay algunas capturas de alcance: tenga en cuenta que los canales 1 y 2 son SCL y SDA, respectivamente.
Comunicación exitosa utilizando el puente Cypress (observe ACK después del 8º pulso de reloj)
ComunicaciónfallidausandoArduino(notafaltadeACK)
Comunicación exitosa muy rara usando Arduino