Все адреса I2C являются 7 или 10 битными. Использование 10 битных адресов встречается редко и здесь не рассматривается. Обычно используются 7 битные адреса. Это означает, что Вы можете иметь до 128 устройств на I2C шине, так как в двоичной арифметике 7-ю битами можно задать номер от 0 до 127. При отсылке по шине 7-битного адреса, мы всегда посылаем 8 битов. Дополнительный бит используется, чтобы сообщить SLAVE о том, что от него хочет Мастер: считывать данные или записывать. Если бит нулевой, Мастер отсылает данные для записи SLAVE. Если бит = 1, Мастер запрашивает данные на чтение от SLAVE. 7 - битный адрес передается первым - в верхних 7 битах байта, а бит чтения/записи (R/W) передается в LSB (Least Significant Bit) - Наименьший Значащий Бит.
Размещение 7 битов адреса в верхних 7 битах байта - источник путаницы для новичков. Это означает, что для того, чтобы открыть на запись устройство с адресом, например адрес 21, Вы должны фактически отослать число 42 (101010), которое является числом 21 (10101) с добавленым в конец битом = 0 (открываем на запись). Если нужно читать, то в конец добавляем бит=1. И отсылаемое число уже равно 43 (101011) .
Вероятно проще думать об адресах шины I2C как о 8 битных адресах , с четными адресами для записи в устройство, и нечетными для чтения из того же самого устройства. Так, например, устройство CMPS03 - магнитный компас фирмы Devantech Ltd. (www.robot-electronics.co.uk), выпускается прошитым с адресом 0xC0 ($C0). Вы можете записывать данные в CMPS03 по адресу 0xC0, и читать из него через 0xC1.
От