Main Site Documentation

G400 I2C Stop Condition on Failed Write or Read Transaction


#1

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.


#2

@ ericjmartin - To be sure, can you test with the latest 2016 R1 SDK? It’ll be firmware version 4.3.8.1.


#3

Tried it on 4.3.8.1, seems to work fine. Alas, thanks for forcing me to check. I was avoiding making this upgrade but this is now a very convincing reason.

Thanks.