I am using a TM4C123G Launchpad to interface to an Analog Devices AD7147 eval board via I2C. the Analog board provide a connector for this, so I didn't have to cut and jump anything, or anything like that. Everything was working fine with I2C 3, yesterday, but today it stopped. I eventually put a scope on the I2C lines, and found out the logic low on the clock was almost 2VDC, which is too high to be a low. I switched to I2C 0, and now it seems to be working.
This happened to me once before with the same eval kit (as in the exact same one) when interfacing to another dev board, and I believe with the same I2C 3. In that case I had to cut some traces on the other development board (not the Tiva), and solder the wires in, and I thought maybe I somehow damaged the I2C peripheral, or GPIO. Strangely, tt later started working, which is why I was using it to talk to the Analog Devices part.
Is it possible that I damaged the I2C 3 peripheral, and it is now marginal?
What might I have done to damage it?
The initialization code is as follows, although, I don't think I have it setup wrong (since it works with I2C 0 on different pins) just the logic level on I2C 3 was wrong (twice):
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C3);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
ROM_GPIOPinConfigure(GPIO_PD0_I2C3SCL);
ROM_GPIOPinConfigure(GPIO_PD1_I2C3SDA);
ROM_GPIOPinTypeI2CSCL(GPIO_PORTD_BASE, GPIO_PIN_0);
ROM_GPIOPinTypeI2C(GPIO_PORTD_BASE, GPIO_PIN_1);
ROM_I2CMasterInitExpClk(I2C3_BASE, SysCtlClockGet(), false);