Other Parts Discussed in Thread: EK-TM4C1294XL
I'm working on a project which is uses I2C bus and I found some strange behavior of I2C Master Bus Monitor (I2CMBMON) register.
As described in datasheet it should show SDA and SCL signal status, but it show it correctly only after Power ON or Reset CPU. If I do a peripheral reset of I2C controller or Disable/Enable cycle it shows always 3 that mean that SDA and SCL are in HIGH level even if the actual level is LOW. I'm trying to use this register in my I2C bus recovery function.
I've created a simple CCS project which demonstrate it on EK-TM4C1294XL board (see in attached file). The project just print the I2CMBMON status on UART0, after Peripheral reset of I2C and after Disable-Enable cycle. I've connected PG0 & PG1 to GND, thus the SDA and SCL become 0, but I2CMBMON shows correct state only in first time. I've also add send STOP right after Peripheral reset and Dis/En cycle, but without success. I've also used MAP_ variance of I2C functions, but also without success.
To run the project you need to update TIVAWARE_DIR to your path in 'Project properties->CCS Build->Variables' tab.
So can anybody tell me how to get correct I2C bus state?i2c-reset-test.zip