El esclavo I2C baja SCL sin hacer nada

Tengo una MCU (Texas Instruments tm4c123gh6pm) en la que he configurado un dispositivo esclavo I2C. He tomado 3.3V del pin MCU que los proporciona y los conecto a dos resistencias de 4.7 kOhm (para hacer los pull-ups). También he probado con 2 baterías de 1.5V en serie.

Cuando conecto una de las dos líneas anteriores al SDA esclavo, permanece alta (bien) pero, por alguna razón, tan pronto como conecto SCL a la otra resolución pull-up, baja (a 0,8 V más o menos). ). Por alguna razón, el SCL del esclavo baja la línea mientras no hace nada (ni siquiera lo he conectado al maestro).

¿Por qué sucede esto?

Así es como inicializo el esclavo I2C:

static void I2C1_Init(void) {
    SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    GPIOPinConfigure(GPIO_PA6_I2C1SCL);
    GPIOPinConfigure(GPIO_PA7_I2C1SDA);

    GPIOPinTypeI2CSCL(GPIO_PORTA_BASE, GPIO_PIN_6);
    GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_7);

    I2CSlaveEnable(I2C1_BASE);
    I2CSlaveInit(I2C1_BASE, I2C_SLAVE_ADDRESS);
}

EDICIÓN IMPORTANTE

Proporciono las resistencias pull-up de una fuente de alimentación externa, cuya tierra conecto al pin MCU GND. La MCU es alimentada por una computadora portátil a través de su puerto USB. He observado que el problema anterior no surge si no conecto estos 2 terrenos, pero según tengo entendido, necesito conectarlos, ¿verdad?

Respuestas (2)

El pin SCL se inicializa, cuando es un maestro, para ser push-pull ya que en realidad los pines SCL tienen un sistema de extracción interno. Prueba con GPIOPinTypeI2C(GPIO_PORTA_BASE, GPIO_PIN_6); sin el SCL que debería llamar al tipo OD. Puede ser que en la configuración esclava haya problemas. De hecho, no es la parte mejor documentada, cuando se usa como esclavo I2C, y no excluiré la presencia de errores en el IC.

Lo he probado y obtengo el mismo resultado.

He intentado con un módulo I2C diferente. Estaba usando I2C1 (pines PA6 y PA7) y ahora estoy usando I2C2 (pines PE4 y PE5). Todo funciona bien, parece que mi MCU está dañado o defectuoso.

Si esto resolvió su problema, "acepte" su propia respuesta para que otras personas no pierdan el tiempo leyendo su pregunta.