5 votos

I2C Slave ACK no conduce suficientemente hacia abajo

Mi esclavo I2C no está tirando del bus hasta el final para el ACK.

He probado a sustituir el pullup de 1,5k por el de 10k, pero la tensión ACK sigue siendo la misma (1,6V).

Tensión del sistema: 2,5 V

Maestro: STM32L151

Esclavo: NXP NT3H211

He confirmado que el NT3H2211 está reconociendo su dirección, porque cuando envío otra dirección (0x56 en lugar de 0x55), no veo respuesta. (Ver captura de pantalla).

He confirmado que el NT3H2211 tiene una buena toma de tierra y alimentación, estable durante el acceso I2C.

También he descartado un problema de periféricos I2C en el maestro escribiendo una rutina de bits con el mismo resultado.

En esta situación, ¿cómo proceder?

Schematic

Scope Screenshot

8voto

powtac Puntos 18619

@DoxyLover y los demás tienen razón: el maestro estaba tirando para arriba, causando la contención del conductor. Mis errores fueron:

  1. Suponiendo que al configurar el periférico I2C (función alternativa en la jerga de STM) se configure automáticamente SDA como drenaje abierto.

  2. En mi código de golpeo de bits, configurando el puerto equivocado para drenaje abierto (dejando SDA todavía push-pull y llevándome a creer que el maestro no era el problema).

  3. Suponiendo que el estado funcional del NT3H2211 no cambie durante la prueba. Una vez que corregí el problema del drenaje abierto, ¡no vi ningún ACK! Resultó que el NT3H2211 falló en alguna parte del camino. Cambiando el NT3H2211, y ejecutando el código corregido, se arregló el problema.

enter image description here

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