I2C addressing is easy

An I2C target device has a 7-bit address. We can address a device for read or write transactions. What could be simpler? In my 30 years of experience, every year I have witnessed an occasion when someone got this wrong. With seasoned members of the team to hand it normally gets resolved quickly, but sometimes you find an engineer, who knows it is easy, and so has spent too long trying to fix it before admitting they are lost. … More I2C addressing is easy

An adventure in debugging an I2C bus hang

A few years ago, I encountered an issue in my project involving an I2C device that didn’t always work after a system reset.

In an ideal world, any reset should emulate a power-on reset, but we sometimes encounter warm start issues. The problem I was encountering certainly started feeling like a warm start problem, but I wasn’t sure what was going on. Are you sitting comfortably? Then I shall begin… … More An adventure in debugging an I2C bus hang

How I draw (simple) timing diagrams.

I don’t often need to draw timing diagrams, but occasionally I do. It’s not an everyday task. When talking about a bug, I find it is easiest to share a captured trace from the scope. When trying to describe what an expected signal should be, then I turn to the whiteboard or a piece of paper. There are however times in my life when I am trying to specify how a new hardware block should work; this requires a clean, easy to edit, diagram to share. I have found a few text to image tools that really help a lot. … More How I draw (simple) timing diagrams.