Search code examples
i2c

What is General Call Address and what is the purpose of it in I2C?


I wonder what is General Call Address in I2C (0x00). If we have a master and some slaves can we communicate with these slaves through our master with this address?


Solution

  • Section 3.2.10 of I2C specification v.6 (https://www.i2c-bus.org/specification/) clearly describes the purpose of general call.

    3.2.10General call address

    The general call address is for addressing every device connected to the I2C-bus at the same time. However, if a device does not need any of the data supplied within the general call structure, it can ignore this address. If a device does require data from a general call address, it behaves as a slave-receiver. The master does not actually know how many devices are responsive to the general call. The second and following bytes are received by every slave-receiver capable of handling this data. A slave that cannot process one of these bytes must ignore it. The meaning of the general call address is always specified in the second byte (see Figure 30).

    You can use it to communicate with your slaves, but three restrictions applied.

    1. General call can only write data to slave, not read.
    2. Every slave should receive general call, you cannot address specific device with it, or you have to encode device address in general call message body, and decode it in the slave.
    3. There are standard general call message format. You should not use standard codes for for your own functions.