Every slave device, connected to the I2C bus, must have an unique I2C address. The I2C address can be either 7-bits or 10-bits long.
You can specify the I2C address in slaveDeviceAddress
parameter when you call DlnI2cMasterWrite() or DlnI2cMasterRead() function.
If you use I2C slave interface of a DLN-series adapter, call DlnI2cSlaveSetAddress() to configure the I2C address. You can specify several I2C slave addresses. DLN-series adapter will respond to any of these addresses. After I2C master generates Stop Condition, DLN series adapter sends DLN_I2C_SLAVE_WRITE_EV or DLN_I2C_SLAVE_READ_EV event to your application. These events contain the I2C address in the slaveAddress field.
The first byte (immediately after the START condition) contains the I2C slave address.
The I2C address is 7-bits long. It is transmitted in the seven most significant bits (MSB). The last (eighth bit) of the I2C address byte is a data direction bit - a 'zero' indicates a transmission (I2C WRITE), a 'one' indicates a request for data (I2C READ).
You have to specify the 7-bit I2C slave address when you call the DlnI2cMasterRead() or DlnI2cMasterWrite() function. DLN-series PC-I2C adapters automatically add the direction bit. In fact the provided I2C address is shifted left and is supplemented by 0 (for I2C write transactions) or by 1 (for I2C read transactions).
DLN-series adapters can scan the bus for I2C addresses of the connected slave devices. Call the DlnI2cMasterScanDevices() function to get the list of I2C addresses.
With 7-bit addressing only 112 I2C slave addresses are available. To prevent address clashes Philips Semiconductors (now NXP Semiconductors) has introduced a 10 bit address scheme. Devices with 7-bit and 10-bit addresses can be connected to the same I2C-bus.
The 10-bit address is transmitted within the first two bytes following a START condition or a repeated START condition.
Five most significant bits of the first address byte are predefined (1111 0). I2C slave devices with 7-bit addressing ignore transactions with the first byte in the form of '1111 0XXX'.
The I2C address occupies bits 5 and 6 of the first byte and the eight bits of the second byte.
The transfer direction (read or write) is specified in the eighth bit of the first byte. As in the case of 7-bit I2C address, a 'zero' indicates a transmission (I2C WRITE), a 'one' indicates a request for data (I2C READ).
Slave devices with 10-bit I2C addressing will react to a general call in the same way as slave devices with 7-bit I2C addressing. I2C master devices can transmit the 10-bit I2C address after a general call.
The general call address is used to address all I2C slave devices simultaneously. If I2C slave device doesn't support general call addressing, it ignores this transaction and doesn't issue an acknowledgment. The I2C master devise can't determine how many slave devices acknowledge the general call address.
You can enable the I2C general call address support for I2C slave interface with the DlnI2cSlaveGeneralCallEnable() function.
There are 16 reserved I2C addresses. These addresses corresponds to one of the two patters: 0000XXX or 1111XXX. The table below describes the purposes of the most commonly used reserved I2C addresses:
I2C Slave Address | R/W | Bit Description |
---|---|---|
0000 000 | 0 | general call address |
0000 000 | 1 | START byte[ |
0000 001 | X | CBUS address |
0000 010 | X | reserved for different bus format |
0000 011 | X | reserved for future purposes |
0000 1XX | X | Hs-mode master code |
1111 1XX | X | reserved for future purposes |
1111 0XX | X | 10-bit slave address |
The full list of I2C address assignments you can see at I2C Address Allocation Table page or i2c-address-allocation-table.pdf document.
The group number represents the hexadecimal equivalent of the four most significant bits of the slave address (A6-A3).
GROUP(1) | TYPE NUMBER | DESCRIPTION | ||
---|---|---|---|---|
Group 0 (0000) | ||||
0 | 0 | 0 | - | General call address |
X | X | X | - | Reserved addresses |
Group 1 (0001) | ||||
1 | A1 | A0 | SAA2530 | ADR/DMX digital receiver |
1 | A1 | A0 | TDA8045 | QAM-64 demodulator |
Group 2 (0010) | ||||
0 | 0 | A0 | SAA4700/T | VPS dataline processor |
0 | 0 | A0 | SAA5233 | Dual standard PDC decoder |
0 | 0 | 1 | SAA5243 | Computer controlled teletext circuit |
0 | 0 | 1 | SAA5244 | Integrated VIP and teletext |
0 | 0 | 1 | SAA5245 | 525-line teletext decoder/controller |
0 | 0 | 1 | SAA5246A | Integrated VIP and teletext |
0 | 0 | 1 | SAA5249 | VIP and teletext controller |
0 | A1 | A0 | CCR921 | RDS/RBDS decoder |
0 | A1 | A0 | SAF1135 | Dataline 16 decoder for VPS (call array) |
1 | 0 | 0 | SAA5252 | Line 21 decoder |
1 | 1 | A0 | SAB9075H | PIP controller for NTSC |
Group 3 (0011) | ||||
0 | 0 | A0 | SAA7370 | CD-decoder plus digital servo processor |
0 | A1 | A0 | PCD5096 | Universal codec |
0 | 1 | A0 | SAA2510 | Video-CD MPEG-audio/video decoder |
0 | 1 | 1 | PDIUSB11 | Universal serial bus |
1 | 0 | 1 | SAA2502 | MPEG audio source decoder |
1 | 1 | A0 | SAA1770 | D2MAC decoder for satellite and cable TV |
Group 4 (0100) | ||||
0 | 0 | 0 | SAA6750 | MPEG2 encoder for Desk Top Video (=SAA7137) |
0 | 0 | 0 | TDA9177 | YUV transient improvement processor |
0 | 0 | 0 | TDA9178 | YUV transient improvement processor |
0 | 0 | A0 | PCA1070 | Programmable speech transmission IC |
0 | A1 | A0 | PCF8575 | Remote 16-bit I/O expander |
0 | A1 | A0 | PCF8575C | Remote 16-bit I/O expander |
0 | A1 | A0 | SAA1300 | Tuner switch circuit |
A2 | A1 | A0 | TDA8444 | Octuple 6-bit DAC |
A2 | A1 | A0 | PCF8574 | 8-bit remote I/O port (I2C-bus to parallel converter) |
1 | 0 | A0 | PCD3311C | DTMF/modem/musical tone generator |
1 | 0 | A0 | PCD3312C | DTMF/modem/musical tone generator |
1 | 1 | 1 | PCD5002 | Pager decoder |
Group 6 (0110) | ||||
0 | 0 | 0 | SAA5301 | MOJI processor for Japan/China |
0 | 1 | 1 | PCE84C467/8 | 8-bit CMOS auto-sync monitor controller |
0 | 1 | 1 | PCE84C882 | 8-bit microcontroller for monitor applications |
0 | 1 | 1 | PCE84C886 | 8-bit microcontroller for monitor applications |
Group 7 (0111) | ||||
0 | 0 | A0 | SAA7140B | High performance video scaler |
0 | 0 | A0 | PCF8533 | Universal LCD driver for low multiplex rates |
0 | 0 | A0 | PCF8576 | 16-segment LCD driver 1:1 - 1:4 Mux rates |
0 | 0 | A0 | PCF8576C | 16-segment LCD driver 1:1 - 1:4 Mux rates |
0 | A1 | A0 | SAA1064 | 4-digit LED driver |
A2 | A1 | A0 | PCF8574A | 8-bit remote I/O port (I2C-bus to parallel converter) |
0 | 1 | 0 | PCF8577C | 32/64-segment LCD display driver |
0 | 1 | A0 | PCF2103 | LCD controller/driver |
0 | 1 | A0 | PCF2104 | LCD controller/driver |
0 | 1 | A0 | PCF2105 | LCD controller/driver |
0 | 1 | A0 | PCF2113 | LCD controller/driver |
0 | 1 | A0 | PCF2119 | LCD controller/driver |
0 | 1 | A0 | SAA2116 | LCD controller/driver |
1 | 0 | A0 | PCF8531 | 34 X 128 pixel matrix driver |
1 | 0 | A0 | PCF8548 | 65 X 102 pixels matrix LCD driver |
1 | 0 | A0 | PCF8549 | 65 X 102 pixels matrix LCD driver |
1 | 0 | A0 | PCF8578/9 | Row/column LCD dot matrix driver/display |
1 | 0 | A0 | PCF8568 | LCD row driver for dot matrix displays |
1 | 0 | A0 | PCF8569 | LCD column driver for dot matrix displays |
1 | A1 | A0 | PCF8535 | 65 X 133 pixel matrix LCD driver |
1 | 1 | A0 | OM4085 | Universal LCD driver for low multiplex rates |
1 | 1 | A0 | PCF8566 | 96-segment LCD driver 1:1 - 1:4 Mux rates |
Group 8 (1000) | ||||
0 | 0 | 0 | TEA6300 | Sound fader control and preamplifier/source selector |
0 | 0 | 0 | TEA6320/1/2/3 | Sound fader control circuit |
0 | 0 | 0 | TEA6330 | Tone/volume controller |
0 | 0 | A0 | NE5751 | Audio processor for RF communication |
0 | 0 | A0 | TDA8421 | Audio processor |
0 | 0 | A0 | TDA9860 | Hi-fi audio processor |
0 | 0 | 1 | TDA8424/5/6 | Audio processor |
0 | 1 | 0 | TDA8415 | TV/VCR stereo/dual sound processor |
0 | 1 | 0 | TDA8417 | TV/VCR stereo/dual sound processor |
0 | 1 | 0 | TDA9840 | TV stereo/dual sound processor |
0 | 1 | A0 | TDA8480T | RGB gamma-correction processor |
1 | 0 | 0 | TDA4670/1/2 | Picture signal improvement (PSI) circuit |
1 | 0 | 0 | TDA4680/5/7/8 | Video processor |
1 | 0 | 0 | TDA4780 | Video control with gamma control |
1 | 0 | 0 | TDA4885 | 150 MHz video controller |
1 | 0 | 0 | TDA8442 | Interface for colour decoder |
1 | 0 | 1 | TDA8366 | Multistandard one-chip video processor |
1 | 0 | 1 | TDA8373 | NTSC one-chip video processor |
1 | 0 | 1 | TDA8374 | Multistandard one-chip video processor |
1 | 0 | 1 | TDA8375/A | Multistandard one-chip video processor |
1 | 0 | 1 | TDA8376/A | Multistandard one-chip video processor |
1 | 0 | 1 | TDA9161A | Bus-controlled decoder/sync. processor |
1 | A1 | 1 | SAA7151B | 8-bit digital multistandard TV decoder |
1 | A1 | 1 | SAA7191B | Digital multistandard TV decoder |
1 | A1 | 1 | SAA9056 | Digital SCAM colour decoder |
1 | A1 | 1 | TDA9141/3/4 | Alignment-free multistandard decoder |
1 | A1 | 1 | TDA9160 | Multistandard decoder/sync. processor |
1 | A1 | 1 | TDA9162 | Multistandard decoder/sync. processor |
1 | 1 | 0 | TDA4853/4 | Autosync deflection processor |
1 | 1 | 0 | TDA9150B | Deflection processor |
1 | 1 | 0 | TDA9151B | Programmable deflection processor |
1 | 1 | A0 | TEA6360 | 5-band equalizer |
1 | 1 | A0 | TDA8433 | TV deflection processor |
Group 9 (1001) | ||||
A2 | A1 | A0 | PCF8591 | 4-channel, 8-bit Mux ADC and one DAC |
A2 | A1 | A0 | TDA8440 | Video/audio switch |
A2 | A1 | A0 | TDA8540 | 4 X 4 video switch matrix |
1 | A1 | A0 | TDA8752 | Triple fast ADC for LCD |
1 | 1 | A0 | SAA7110A | Digital multistandard decoder |
Group A (1010) | ||||
0 | 0 | A0 | SAA7199B | Digital multistandard encoder |
0 | 1 | 0 | TDA8416 | TV/VCR stereo/dual sound processor |
0 | 1 | A0 | TDA9850 | BTSC stereo/SAP decoder |
0 | 1 | A0 | TDA9855 | BTSC stereo/SAP decoder |
0 | 1 | 1 | TDA9852 | BTSC stereo/SAP decoder |
1 | 0 | 0 | TDA9610 | Audio FM processor for VHS |
1 | 0 | 0 | TDA9614H | Audio processor for VHS |
1 | A1 | 0 | SAA7186 | Digital video scaler |
1 | 0 | 1 | PCA8516 | Stand-alone OSD IC |
1 | 1 | 1 | SAA7165 | Video enhancement D/A processor |
1 | 1 | 1 | SAA9065 | Video enhancement and D/A processor |
Group B (1011) | ||||
0 | 0 | A0 | SAA7199B | Digital multistandard encoder |
0 | 1 | 0 | TDA8416 | TV/VCR stereo/dual sound processor |
0 | 1 | A0 | TDA9850 | BTSC stereo/SAP decoder |
0 | 1 | A0 | TDA9855 | BTSC stereo/SAP decoder |
0 | 1 | 1 | TDA9852 | BTSC stereo/SAP decoder |
1 | 0 | 0 | TDA9610 | Audio FM processor for VHS |
1 | 0 | 0 | TDA9614H | Audio processor for VHS |
1 | A1 | 0 | SAA7186 | Digital video scaler |
1 | 0 | 1 | PCA8516 | Stand-alone OSD IC |
1 | 1 | 1 | SAA7165 | Video enhancement D/A processor |
1 | 1 | 1 | SAA9065 | Video enhancement and D/A processor |
Group C (1100) | ||||
0 | 0 | 1 | TEA6100 | FM/IF for computer-controlled radio |
0 | 1 | 0 | TEA6821/2 | Car radio AM |
0 | 1 | 0 | TEA6824T | Car radio IF IC |
0 | A1 | A0 | TSA5511/2/4 | 1.3 GHz PLL frequency synthesizer for TV |
0 | A1 | A0 | TSA5522/3M | 1.4 GHz PLL frequency synthesizer for TV |
0 | 1 | A0 | TDA8735 | 150 MHz PLL frequency synthesizer |
0 | 1 | A0 | TSA6057 | Radio tuning PLL frequency synthesizer |
0 | 1 | A0 | TSA6060 | Radio tuning PLL frequency synthesizer |
0 | 1 | A0 | UMA1014 | Frequency synthesizer for mobile telephones |
1 | 0 | 0 | TDA8722 | Negative video modulator with FM sound |
Group D (1101) | ||||
0 | 0 | A0 | TDA8043 | QPSK demodulator and decoder |
0 | 0 | A0 | TDA9170 | YUV processor with picture improvement |
0 | A1 | A0 | PCF8573 | Clock/calendar |
A2 | A1 | A0 | TDA8443A | YUV/RGB matrix switch |
0 | 1 | A0 | TDA8745 | Satellite sound decoder |
1 | 0 | 0 | TDA1551Q | 2 ´ 22 W BTL audio power amplifier |
1 | A1 | A0 | TDA4845 | Vector processor for TV-pictures tubes |
1 | A1 | A0 | UMA1000T | Data processor for mobile telephones |
1 | 1 | A0 | PCD4440 | Voice scrambler/descrambler for mobile telephones |
Group E (1110) | ||||
0 | 0 | 0 | PCD3316 | Caller-ID on Call Waiting (CIDCW) receiver |
0 | 0 | 0 | TDA9177 | 2nd address for LTI (1st is '40') |
0 | 0 | 0 | TDA9178 | 2nd address for LTI (1st is '40') |
0 | 0 | A0 | SAA7192 | Digital colour space-converter |
Group F (1111) | ||||
X | X | X | - | Reserved addresses |
Group 0 to F (0000 to 1111) | ||||
X | X | X | PCF8584 | I2C-bus controller |
1. X = Don't care, A = Programmable address bit, P = Page selection bit