When building embedded devices, one of the fundamental activities we do is coupling [suitable CPU A] with [selection of special-purpose peripherals B]. This gets you from having a feature-rich (but boring) SOM to a specialised device offered a wide range of sensory inputs and options. Being an embedded platform however, complexity, pin counts and space is at a premium - so instead of the more powerful IDE, PCI, PCIe or similar interfaces, words like I2C, SPI and RS232 tend to crop up a lot. In this note, I'd like to focus on I2C. I2C (Inter-Integraced Circuit,(http://en.wikipedia.org/wiki/I%C2%B2C), a.k.a. TWSI (Two-Wire Serial Interface), is a mostly-standardised interface using two control lines -- SDA (Serial Data) and SCL (Serial Clock) -- and in-band clocking. In practice, different I2C devices use very similar protocols -- with subtle differences: clocking behavior, addressing, transaction format, etc. Basically, they're all compatible, except when they're not of course. Under Linux, a wide variety of I2C devices are supported; in addition, Bluewater regularly writes drivers as we use new I2C devices in our designs. At the time of writing, custom-supported I2C devices include:
- Chrontel CH7004 Video DAC ]
- Dallas Semiconductor DS1339 real time clock [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3470]
- Maxim/Dallas ds2782 Stand-Alone Fuel Gauge IC [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4779]
- Micron MT9T001 Image Sensor [http://download.micron.com/pdf/datasheets/imaging/MT9T001_3100_DS.pdf]
- Omnivision OV3640 3.1 mega-pixel camera [http://www.ovt.com/products/part_detail.asp?id=129]
- Analog Devices AD7414 temperature sensor [http://www.analog.com/en/temperature-sensing-and-thermal-management/digital-temperature-sensors/ad7414/products/product.html]
- Dallas Semiconductor Maxim DS4520 I/O expander [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4340]
- ST LIS3LV02DQ MEMS Intertial Sensor [http://www.st.com/stonline/products/literature/ds/11115.pdf]
- Analog Devices AD5242 Dual-Channel Digital Potentiometer [http://www.analog.com/en/digital-to-analog-converters/digital-potentiometers/ad5242/products/product.html]
- Analog Devices ADG791G 4-Channel SPDT Switch [http://www.analog.com/en/switchesmultiplexers/analog-switches/adg791g/products/product.html
- Maxim/Dallas MAX7311 16-Bit I/O Port Expander [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3727
- Maxim/Dallas MAX7313 16-Port I/O Expander [http://www.maxim-ic.com/quick_view2.cfm/qv_pk/4101]