5 votos

I2C esclavo no reconocer constantemente

Estoy tratando de comunicar con un Ciprés CapSense módulo, modelo CY8CMBR3106S. Durante las pruebas iniciales, he utilizado el Ciprés de la CY3240-I2USB USB-I2C puente, el cual funciona perfectamente. A continuación, fui a un Arduino para la creación de prototipos de mi propia aplicación. Sin embargo, no puedo parecer para obtener el Arduino para comunicarse de forma segura con la CapSense controlador. Utilizando el I2C escáner croquis encontrado aquí, el Arduino descubre la CapSense controlador, quizá una de cada 40 o así que los intentos.

En un intento de depuración de esto, me ámbito de la bus usando tanto el Ciprés USB-I2C puente y el Arduino. He encontrado que el controlador siempre da un ACK con el Ciprés de la puente, y casi nunca genera un ACK con el Arduino. Sin embargo, aparte de las diferentes tensiones y frecuencias de reloj (que he jugado fue en vano), me parece no puede encontrar cualquiera de las principales diferencias entre las tramas enviadas desde las dos fuentes diferentes para explicar la inconsistencia del Ack.

En este punto, estoy en algo de una pérdida, cualquier consejo sería muy apreciada. Gracias!

Aquí hay un par de alcance captura--tenga en cuenta que los canales 1 y 2 son SCL y SDA, respectivamente.

El éxito de la comunicación el uso de Ciprés de la puente (nota ACK después de 8 reloj de pulso) enter image description here

Error de comunicación usando Arduino (nota falta de CONFIRMACIÓN) enter image description here

Muy raro el éxito de la comunicación usando Arduino enter image description here

3voto

mmeent Puntos 11

Como se discute en los comentarios de arriba, en este caso la solución fue aumentar la frecuencia de las I2C transmisiones.

Por la hoja de datos, el Ciprés CapSense controlador da un NACK en el primer I2C transacción después de despertar en el estado activo. Como @Roger Rowland señaló, después de alrededor de 340 ms de inactividad en el autobús, el controlador entra en un estado de baja potencia. Desde mi transmisiones eran más espaciadas que en este tiempo de espera, cada transmisión que despierta el dispositivo del estado de baja potencia en el estado activo y recibe un NACK. Este problema se resuelve mediante el aumento de la frecuencia de las transmisiones a menos que el valor de tiempo de espera, o por la repetición de una transmisión dada back-to-back hasta que se recibe una CONFIRMACIÓN.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X