Course contentsShow
← Embedded Systems & Computer Architecture
Lesson 379 of 9365. Communication Protocols and Data TransferFree lesson

Interfacing with I2C General Call Addressing Modes

Configure master software to broadcast commands to all connected devices simultaneously using the reserved zero-address call format.

In this lesson, you will learn how to broadcast a single command to every device on your I2C bus simultaneously using the reserved General Call address.

The Power of the Broadcast

Normally, when you send a packet over I2C, you target a specific peripheral using its unique 7-bit address. However, there are scenarios—such as resetting all sensors at once or synchronizing a system-wide clock—where addressing each device individually is inefficient. To solve this, the I2C specification reserves the address 0x00 as the General Call Address.

When a master sends 0x00 followed by the Write bit (making the byte 0x00), every slave on the bus is expected to listen. Unlike standard communication, where only the device with the matching address responds, the General Call address signals to all peripherals: "Listen to the following data, as it is intended for everyone."

Sending a General Call

To broadcast a command, your master software performs the following sequence:

  1. Generate a Start Condition.
  2. Send the address byte 0x00 (this is the General Call address).
  3. Send the command byte (e.g., 0x06 for a "Software Reset").
  4. Generate a Stop Condition.

Here is how the transmission looks in code logic:

// Sending a General Call Reset command
I2C_Start();
I2C_Write(0x00);      // Broadcast to ALL devices
I2C_Write(0x06);      // Specific instruction: Software Reset
I2C_Stop();

Important Considerations

  • Acknowledgment: Whether slaves acknowledge a General Call depends on their internal design. Some devices are hardcoded to ignore it, while others are configurable. If multiple devices acknowledge the same General Call simultaneously, it may cause an unexpected pull-down effect on the SDA line; check your slave datasheets carefully.
  • Second Byte Meaning: The byte immediately following the General Call address is special. For example, if the second byte is 0x06, it is defined by the I2C specification as a "Reset" command. If it is 0x04, it is a "Hardware Call" requesting a programmable address.

Key Takeaway: The I2C General Call address (0x00) allows a master to broadcast commands to all connected peripherals in one transaction, enabling system-wide operations like simultaneous resets or synchronization.