Since release, the Spark Core has had a major I2C bug wherein entering a standard 7-Bit I2C address didn’t work. The problem turned out to be in the low level STM32 I2C code; it wasn’t shifting the address one bit to the left before adding the read (1) or write (0) bit to the end.
About two weeks ago I fixed the bug and submitted it to the Spark Team. It went live on the Spark Build IDE (Sparkulator) this morning around Midnight Pacific.
What does this mean to you?
If you have any sketches that are currently using an I2C address you’ve manually bit shifted, they’ll stop working the next time you flash from the IDE unless you change them back to the standard 7-Bit address.
No other changes have been made to the I2C system other than this fix. I am currently working on overhauling the I2C system to be completely more reliable by using DMA for transfers, making it non-blocking and starting the transfer immediately instead of waiting for Wire.endTransmission(). I expect these changes to be available for beta testing by the community towards the end of the week.