Validating and using the I2C protocol
Vera Apoorvaa, Cypress
EDN (July 15, 2014)
I2C is a two wire, clock synchronized protocol with a bi directional data line and a uni directional clock line. Its simplicity lies in its use of only two lines for communication and its complexity lies in the fact that these lines are shared among all the devices on the bus. The I2C bus can have several masters and slaves connected on the same two lines and bus arbitration is employed to handle bus contentions. The scope of this article is to bring out some common I2C issues that come up while validating and using the I2C protocol.
Bus Contention and Arbitration – An Overview
When a master sends data on the bus, it also repeatedly probes the bus to ensure the data it sent out is actually driven on the bus. When two masters drive data simultaneously on the bus (let us assume a simple case wherein both masters are operating at the same bit rate), all goes well until the data bits driven by both masters are the same. When the data bit they drive differ, that is, say master A drives a dominant bit (read ‘0’ for an open drain drive low bus) and master B drives a recessive bit (read ‘1’ for an open drain drive low bus), the resultant bus state is dominant (‘0’). Master B senses it has lost arbitration and backs away from sending the rest of the message bits. Master A completes its transaction with no intervention. In fact, master A has no clue that master B has been contending for the bus (figure 1). In summary, all devices on the bus are capable of driving data on the bus and are listening to the bus. Hence, it is important that all devices function in compliance and misbehaving devices be identified and isolated.
To read the full article, click here
Related Semiconductor IP
- I2C protocol Controller
- I2C - Verifies I2C communication, ensuring protocol compliance and error-free data transfer
- I2C Master and Slave
- I2C Verification IP
- I2C Synthesizable Transactor
Related Articles
- NoCs and the transition to multi-die systems using chiplets
- Efficient I2C Bus debug using Mixed Signal Oscilloscopes
- The Growing Importance of AI Inference and the Implications for Memory Technology
- The Hitchhiker's Guide to Programming and Optimizing CXL-Based Heterogeneous Systems
Latest Articles
- A Secure dToF LiDAR SoC with Dual-Domain Fingerprinting and Event-Driven AFE Circuit Achieving Sensor-Level Attack Resilience
- ZTA-Q: an Open-source RISC-V Platform for Accurate Quantized CNN Inference
- Automated Pre-Silicon Verification of High-Speed DDR5 and LPDDR5/6 Memory Controllers: Closed-Loop Timing, Mode Register, and PHY Synchronization in UVM
- U-Sonic: An Open-Source 8-Channel Ultrasound Transmit IP in a 130 nm RISC-V SoC
- S-ALSA: Co-Design of Adiabatic Logic-based Sensing and Balanced Bit-Cells for Secure and Energy-Efficient MRAM