I have found a problem that when an i2c transaction failed (NAK on the 9th bit), the SCL line is held low, never returning to a “stop condition”. I am intentionally testing this because is it very possible to not get a response for some of these addresses in our setup. If a successful interaction occurs afterward, to a different address, the clock line is allowed to float high again on the pull ups.
I need this line to deterministically drive high eventually because of i2c isolators that require both lines high to enable after a cycle. Is there a way to force the clock line high after timed out execution? I tried enabling the pin as an output but once the i2c module is used you get exceptions when trying to initial an OutputPort (rightfully so).
I am developing using .NETMF on a G400-S and firmware 4.3.7.10.