MCP453X/455X/463X/465X
6.2.4 ADDRESSING
The address byte is the first byte received following the START condition from the master device. The address contains four (or more) fixed bits and (up to) three user defined hardware address bits (pins A2, A1, and A0). These 7-bits address the desired I2C device. The A7:A4 address bits are fixed to “0101” and the device appends the value of following three address pins (A2, A1, A0). Address pins that are not present on the device are pulled up (a bit value of ‘1’). Since there are up to three address bits controlled by hardware pins, there may be up to eight MCP4XXX devices on the same I2C bus. Figure 6-9 shows the slave address byte format, which contains the seven address bits. There is also a read/ write bit. Table 6-2 shows the fixed address for each device.
Байт адреса - первый байт посылаемый мастером после старта . Адрес содержит 4 (или больше) фиксированных бита и до 3-х битов, задаваемых пользователем с помощью соответствующих установок входов A2, A1, A0 в зависимости от типа устройства. Если адресные пины в устройстве отсутствуют, то их значение принимаются равным "1". Три адресных разряда позволяют увеличить количество учтройств, одновременно подключенных к шине. Рис 6-9 показыват назначение 7 бит адресного байта для вадомого (slave) устройства. После адресных битов идет бит чтения/записи (read/write). В Табл. 6-2 приведены адреса для каждого типа устройств.
Пример передачи команды от master к slave для MCP4551 form Arduino for I2C Digital Potentiometer
Wire.beginTransmission(0x2F); // transmit to device address 0x2F is specified in datasheet
Wire.write(0x00); // sends instruction byte - Write data
Wire.write(0x55); // sends potentiometer value byte
Wire.endTransmission(); // stop transmitting
Transmitt with Arduino board (byte 0x00, 0x55)
6.2.4 ADDRESSING
The address byte is the first byte received following the START condition from the master device. The address contains four (or more) fixed bits and (up to) three user defined hardware address bits (pins A2, A1, and A0). These 7-bits address the desired I2C device. The A7:A4 address bits are fixed to “0101” and the device appends the value of following three address pins (A2, A1, A0). Address pins that are not present on the device are pulled up (a bit value of ‘1’). Since there are up to three address bits controlled by hardware pins, there may be up to eight MCP4XXX devices on the same I2C bus. Figure 6-9 shows the slave address byte format, which contains the seven address bits. There is also a read/ write bit. Table 6-2 shows the fixed address for each device.
Байт адреса - первый байт посылаемый мастером после старта . Адрес содержит 4 (или больше) фиксированных бита и до 3-х битов, задаваемых пользователем с помощью соответствующих установок входов A2, A1, A0 в зависимости от типа устройства. Если адресные пины в устройстве отсутствуют, то их значение принимаются равным "1". Три адресных разряда позволяют увеличить количество учтройств, одновременно подключенных к шине. Рис 6-9 показыват назначение 7 бит адресного байта для вадомого (slave) устройства. После адресных битов идет бит чтения/записи (read/write). В Табл. 6-2 приведены адреса для каждого типа устройств.
There are up to three hardware pins used to specify the device address. The number of address pins is determined by the part number. Address 0 is multiplexed with the High Voltage Command (HVC) function. So the state of A0 is latched on the MCP4XXX’s POR/BOR event.The HVC pin has an internal resistor connection to the MCP45XX/46XXs internal VDD signal. The state of the A2 and A1 pins should be static, that is they should be tied high or tied low.
Вывод А0 используется для High-Voltge комманд. Для MCP45XX/46XXs устройств он подтянут к "1".
При обращении к ведомому устройству типа MCP45X1 его адрес 0x2F или 0x2E.
Пример передачи команды от master к slave для MCP4551 form Arduino for I2C Digital Potentiometer
Wire.beginTransmission(0x2F); // transmit to device address 0x2F is specified in datasheet
Wire.write(0x00); // sends instruction byte - Write data
Wire.write(0x55); // sends potentiometer value byte
Wire.endTransmission(); // stop transmitting
Transmitt with Arduino board (byte 0x00, 0x55)
I2C signal from STM32F042 with Saleae Logic (transmitted byte - 0x16, 0x00). Address byte 0x5E.