Click here to download PDF of this page
The I²C ID Module has been developed primarily for harness & adaptor identification. Due to its small size, the module can be fitted to any test harness or adaptor and allows users to store specific data relating to the hardware. 256Kbytes of EEPROM data can be stored.
If the I²C ID Module is used along with the Peak I²C Mux Module, communications will still be stable up to 30 metres away from the I²C master making it ideal for large factory installations.
Key Features
- Robust, Flexible Design
- Low Cost
- Small Size
- Compatible with any I²C interface
- Hardware Write Protect
- Up to Eight Devices on One I²C Bus
- 256kbytes Data Storage
- All Components Fully Traceable
Specifications
Connectivity
I²C Bus Timing
Addressing
The default address for the I²C ID Module is set in hardware to 1010000. This can be modified by looping back +V to the three chip select connections (A0-A2) on PL2. The chip select lines are internally pulled low.
If more than one device is used on the same I²C bus simultaneously the chip select lines must be used to change the slave address so that each I²C ID Module has a unique address. A maximum of eight devices can be used on one I²C bus.
Write Protection
The I²C ID Module is fitted with a write protection switch labelled WP. If the switch is enabled all writes to the module are disabled, reads will still function as normal
Memory Map
The I²C ID Module memory has 500 pages with 64 bytes of data on each, as shown below.
Write Operation
All commands a based on the I²C ID Module default address.
1.0.0 – Byte Write
To write bytes of data to the I²C ID Module the following commands need to be sent:
The 1st byte (10100000, 0xA0) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (0) = write) |
The 2nd byte (????????, ?) | Memory address high byte |
The 3rd byte (????????, ?) | Memory address low byte |
Data Bytes | Data |
Stop |
Example:
0xA0, 0x00, 0x00, Data = Addressing byte 1 of page 1
If more than 64 bytes of data are sent the device will automatically roll over to the next page e.g. If 100 bytes of data are sent to page 1, page 1 will contain the first 64 bytes and page 2 will contain the last 36 bytes.
1.0.1 – Page Write
To write a complete page of data to the I²C ID Module the following commands need to be sent:
Note: A complete page consists of 64 bytes, if less than 64 bytes are sent, the remaining bytes will be refreshed.
The 1st byte (10100000, 0xA0) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (0) = write) |
The 2nd byte (????????, ?) | Memory address high byte |
The 3rd byte (????????, ?) | Memory address low byte |
Data Bytes (64 maximum) | Data |
Stop |
Example:
0xA0, 0x00, 0x00, Data = Addressing Page 0
0xA0, 0x00, 0x01, Data = Addressing Page 1
0xA0, 0x01, 0xF4, Data = Addressing Page 500
Read Operation
All commands a based on the I²C ID Module default address.
1.2.0 – Current Address Read
This function can be used to read the next byte from a previous read. E.g. if page 1 byte 3 was the last byte read from the device the following command will read page 1 byte 4. After this the address is internally incremented by 1 so if the command is sent again it will read from the next byte in sequence.
The 1st byte (10100001, 0xA1) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (1) = read) |
Read Data Byte | Read the data back |
Stop |
1.3.0 – Random Read
If you need to read data from a random location the following commands must be sent.
First the location address will need to be set:
The 1st byte (10100000, 0xA0) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (0) = write) |
The 2nd byte (????????, ?) | Memory address high byte |
The 3rd byte (????????, ?) | Memory address low byte |
Stop |
Then the data can be read by the following command:
The 4th byte (10100000, 0xA1) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (1) = read) |
Read Data Byte | Read the data back |
Stop |
After a random read command, the internal address counter will point to the address location following the one that was just read.
1.4.0 – Sequential Read
A sequential read allows users to define a start address as a random read does but allows multiple bytes to be read back with a single command by sending acknowledgements between the bytes received.
First the location address will need to be set:
The 1st byte (10100000, 0xA0) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (0) = write) |
The 2nd byte (????????, ?) | Memory address high byte |
The 3rd byte (????????, ?) | Memory address low byte |
Stop |
Then the data can be read by the following command:
The 4th byte (10100000, 0xA1) | Address the I²C ID Module plus 0 (first 7 bits = slave address, last bit (1) = read) |
Read Data Byte | Read the data back |
Acknowledge | |
Read Data Byte | Read the data back |
Etc. | |
Stop |
After each acknowledge, the internal address counter will point to the address location following the one that was just read.