Design Idea
Circuit gang-programs EEPROMs over I2C bus
Edited by Bill Travis and Anne Watson Swager
Denisa Stefan, Catalyst Semiconductor, Sunnyvale, CA -- EDN, 9/13/2001
You use the fully controlled circuit in Figure 1 to parallel-program two-wire serial EEPROMs via the I2C bus. Gang programmers must address all memory devices during a write operation. To verify the memory contents, however, the system must address only one memory at a time during read operations. Therefore, the system in Figure 1 addresses the memory devices either in parallel or one at a time. Information transfer between devices connected to the I2C bus system requires a SDA (serial-data) and SCL (serial-clock) signals. A device connected to the bus can operate as a transmitter or a receiver. A master device initiates a data transfer on the bus, generates clock signals, and terminates the transfer. The master addresses a slave device. To connect devices on an I2C multimaster bus, the SDA and SCL lines must be bidirectional and must connect to a positive supply voltage through pullup resistors.
In I2C-bus addressing, the first byte after a Start condition determines the slave that the master selects. A slave address is seven bits long and usually comprises a fixed part and a programmable part. The eighth bit, or LSB, determines the direction of the transfer, either read or write. The programmable part of the slave's address allows you to connect the maximum possible number of identical devices to the I2C bus. This number depends on the number of address-input pins the I2C device has. In Figure 1, the serial-data line, SDA, connects to each CAT24WC16 EEPROM via bidirectional Maxim (www.maxim-ic.com) MAX352 quad SPST analog switches. The switches derive their control from a 16-bit Philips (www.semiconductors.philips.com) PCF8575 I/O expander for the I2C bus. The clock line, SCL, connects to all memory devices. For driving the large capacitive loads required, a Philips 82B715 I2C-bus extender serves as a buffer. The software sequence for parallel writing to all memory devices is to set the port pins by writing to the PCF8575 to command closing all switches and then send an I2C-bus command to write to the CAT24WC16 EEPROMs.
The software flow for reading the contents of one memory device is to set the port pins by writing to the PCF8575 to close the switch associated with the memory to read, set all the other switches to open, and then send an I2C command to read the selected CAT24WC16 EEPROM.
Is this the best Design Idea in this issue? Vote at www.ednmag.com.
















