Continuing the theme on serial interfaces from the last post, Inter Integrated Circuit, ( I2C ), is another type of serial communications interface, also called '2-wire bus', and is a very common peripheral interface. There is a master device, slave device(s), addressing and also a clock, making communication synchronous. Two connections are required; serial data ( SDA ) and serial clock ( SCL ).
In this post I demonstrate using I2C with a Silicon Labs Si5351
frequency synthesiser chip and a miniature 0.96" 128/64px two colour OLED
display. Both have I2C interfaces but different addresses, hex60 and
hex3C respectively, and so can be connected on the same bus.
|
Master reads 1 byte from slave ( SCL = clock, SDA = data ) |
The I2C protocol is more complex than that for RS232/485 in the previous
post. The image above shows that a 4 byte transaction is required in
order for the master to read in one byte of data from a slave, ( in this
case Si5351 ). Compare to RS485 in the previous post.
The master is my usual micro-controller unit ( MCU ) development board which does have embedded I2C modules. I programmed it with my own firmware to enable and setup I2C to communicate with the Si5351 and OLED.
|
Top MCU, bottom L OLED, bottom R Si5351 board |
Using I2C, I tested the OLED by turning the display on/off and switching between normal and reverse video. I configured the Si5351 on the purple coloured break-out board to generate two square-wave output signals, on my favourite frequency 137.7KHz in the 2190m amateur radio longwave band. See image immediately below.
|
Si5351 generates two separate output signals simultaneously |