UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 66067

v2.0 - I2C - How to handle bus busy signal for a multi-master I2C system?

Description

What is the best method to handle a bus busy signal for a multi-master I2C system?

Solution

The user is responsible for ensuring that the bus is not busy if multiple masters are present on the bus.

The following is sample code which can be used as a reference to wait for the busy signal to go down before writing to the slave.

u32 StatusRegister = XIic_ReadReg(DP159_ASE_ADDR, XIIC_SR_REG_OFFSET);
while (( StatusRegister & XIIC_SR_BUS_BUSY_MASK) == XIIC_SR_BUS_BUSY_MASK) {
StatusRegister = XIic_ReadReg(BASE_ADDR, XIIC_SR_REG_OFFSET);
}

AR# 66067
Date Created 11/30/2015
Last Updated 12/03/2015
Status Active
Type Known Issues
Tools
  • Vivado Design Suite