Embedded I2C on MACHXO2

Posted on April 06, 2020 in Hardware

The Lattice MACHXO2 embedded I2C IP is very useful, especially for on-board FLASH memory programming.

One problem that can arise is that communication works erratically, if at all.

On the scope, no problem. Signals are good. But MACHXO2 isn't communicating properly. What's wrong doc ?

I had hard time finding the solution. Especially since it is hidden in a document that one does not necessarily think to read carefully. The solution, can be found in the document "MachXO2 Hardware Checklist". The fix is to add RC filters on SCL and SDA.


The low component values show the MAHXO2 is sensible to (very) high frequencies noise. In practice, a simple clock signal connected to the MACHXO2 can be enough to make the I2C IP behave erratically.