MCP2221A Behaviour after NACK?
I have a board using the MCP2221A USB-I2C Interface.
The I2C Interface is connected to a Newhaven NHD-0216CW-AB3 Character OLED Display Module
Ocasionally the display will NACK a command or address byte sent to it from the MCP2221
Once this happens all further HID Commands to the MCP2221 get the results code 0x01 I2C Engine is busy (command not completed).
After that all further attempts to communicate with the display do not get translated into I2C commands.
I have used a logic analyzer, and an oscilloscope to look at the SCL and SDA lines and can see no reason for the NACK. Everything seems to be withing the required parameters.
The first attached image shows the logic analyser showing a NACK to a WRIITE command:
The second attached image shows the Oscilloscope cpature of the same thing.
So first of all, any idea what could be causing the NACK?
And, more importantly, whats the correct way to handle the NACK in terms of HID commands to the MCP2221A - the only thing I can see is to reset the chip! That causes a USB re-enumeration and bing-bong sounds that annoy the user! Is there anothe way to reset the I2C engine?