Hay dos componentes principales para hacer que esto funcione: la interfaz eléctrica física y los datos lógicos que se envían.
En el lado eléctrico, el maestro por sí solo parece estar funcionando correctamente si ve que las señales son buenas. Ya que no ha proporcionado parcelas, no podemos decir si son realmente buenas o si tiene una idea errónea de lo que es bueno. En el lado del esclavo, sí, las flexiones deben ser lo suficientemente débiles para permitir que el esclavo tire de la línea SDA hacia abajo. Si recuerdo bien, la especificación de IIC dice que el esclavo solo necesita hundir 3 mA para que la línea se encuentre por debajo del nivel lógico máximo bajo. Por ejemplo, si está utilizando la lógica de 5 V, esto significa que la recuperación no puede ser inferior a 5 V / 3 mA = 1,7 kΩ, por lo que una resistencia de 2 kΩ sería una opción razonable. Observe las especificaciones para el pullup interno que está utilizando y asegúrese de que no pueda generar más de 3 mA. Si puede, ellos no pueden usarlo y tienen que usar un pullup externo.
En el lado lógico, tienes que asegurarte de que el esclavo se está dirigiendo correctamente. La secuencia IIC debe comenzar con ambas líneas altas, luego una condición de inicio, que es SDA baja antes de que SCL baja. Después de eso, para cada bit SDA debería cambiar al nuevo valor, luego SCL irá alto, luego SCL bajará nuevamente. Los primeros 7 bits son la dirección, luego el bit de lectura / escritura. Para el noveno bit, el maestro deja a SDA flotando y el esclavo debería bajar de nivel poco después de que SCL se agote.
En mi experiencia, la causa más común de no obtener una respuesta del esclavo es la dirección incorrecta.