Drive Mode Registers modification by I2Cm User Module

Question: Why does the I2Cm User Module modify the drive mode registers of the I2C pins, rather than changing the data register?



To achieve the wired AND configuration required on the I2C lines, the I2C pins have to be HighZ for a Logic 1 and Strong for a Logic 0.  This is achieved by changing the drive mode of the pins to open drain low.