I recently bought an I2CMini (product ID 4970). It seems to work well enough as a USB-based I2C controller, but I can't get very clean decodes when I'm monitoring a live I2C bus.
Here is an example capture from running i2c.capture() using the Python API. The sampled I2C bus is on an Adafruit Clue running the Bluefruit demo.
Code: Select all
d4 20 SS7d!7f!0f 01 69!7d!28!SS59!S33!07!d5!d6 SP
d4 20 SS7d!7f!0f 01 69!7d!28!S35!3c!9c 3f S7a!P
38 28 S39 11 SS6c S39!SP
d4 20 Sd5 S6f!S10 27 c7!S65!cf!cc 6f 68 0f!SS15!P
d4 20 SS7d!7f!S10 27 S1f cb!9f!S30!bc!S00!SSS58 P
38 28 SSS3d!38!SS0c P
ee fa Sef 81 e7 d0!P
ee f7 Sef 57 f0 a0!P
d4 20 SSS3f!81 SS3e!9a SS3c!a4 3f S2c P
d4 20 Sd5 fa ff 05 02 S3e!9a SS3c!a4 3f S2c P
38 28 S39 S4f SS7a SS21!P
d4 20 Sd5 SS3f!SS00 SS5f S1f!SS3c!98 bf b0!SP
d4 20 Sd5 S4f!S40 SSS65!8f!c9 4f 66 2f!S58 98 P
38 28 S39 d6 S5c 43 S3c!86!P
d4 20 Sd5 SS3f!83!SS7d!S66 0f!cb!ef S4f!S6c P
d4 20 SS7d 7f!09!S39!3e!95 SSS1e cd S58 SP
d4 20 Sd5 S3f!S30 27 67!SS5f!93!1e cd 1f!58 SP
38 28 S39 f2 S57 b0!SSSP
d4 20 Sd5 S6f!e1!a0 4e 4f!65 8f!cc S33!57!S36 P
d4 20 SS7d!7f!0e!01 71 7d!2a 7f 61 SS57!S66!SP
38 28 S39 SS4f S57!c3 S08 07 P
88 24 00 P
89 S03!2a!c9 6f!68!P
I've tried multiple combinations of pullup resistor settings on the I2CMini, including none, and they don't seem to help.
Also, sigrok seems to have no problems decoding a similar capture. It doesn't detect spurious NAKs or START conditions. (I didn't set up a simultaneous capture, but I did capture the same bus running the same Clue demo. I did the capture at 2Msamp/s using an Adruino Micro running a custom logic analyzer sketch.)
Based on these experiences, I actively recommend not using I2CMini as an I2C bus analyzer or decoder. My understanding is that it shares hardware and firmware with the I2CDriver, so a similar warning might apply there.
I'm not going to ask for a refund, because the USB-based I2C controller functionality is still worth something to me. I would have been very disappointed to have bought the more expensive I2CDriver instead and to have discovered this sort of problem with it.