Stefan Piatidis <ib93_spi@it.kth.se> wrote:

>I want to divide a bidirectional data line into two groups of 
>EEPROMS.
>I have a controll signal that can state to which of these two 
>groups, it should be activated too.
>I.e. i am looking for some kind of 1 to 2 device. But not a 
>multiplexer, if there isnt a bidirectional one.
>I've got some hints on that there are devices called analog 
>switches. Maybe they could work.
>
>
>				  -----------
>			   	  I	    I
>			   I------I EEPROM  I
>bidir.dataline	----  BDL1 I	  I	    I
>---------------I    I------	  I	    I
>	       I XX I		  -----------
>control signal I    I BDL2
>---------------I    I------	  -----------
>		----       I	  I         I
>			   I------I EEPROM  I
>				  I         I
>	                          I	    I
>				  -----------

<snip>

Two suggestions:

1. If you ABSOLUTELY must use I2C devices, you might be able to use a analog mux
or bidirectional I/O device to handle the data line switching.  I don't recall
the exact part number, but I beleive there are a number of 4000-series CMOS
devices that can perform this function.

The CD4016 "Quad bilateral switch" might work for your application.

2. Instead of using I2C serial EEPROMS, consider using the 93Cxx serial EEPROMs
instead.  These devices use a 4-wire serial bus (clock, data in, data out,
select) and would be considerably easier to drive using a PC parallel port.
Since the data out pins of these devices employ open-collector outputs you could
tie the clock, data in and data out pins together and use two digital outputs to
(seperately) drive the select signals of each EEPROM, like this:


                         /----------------------o-------------- - - -
                         |                      |
                         | /--------------------)--o----------- - - -
                         | |                    |  |
                         | | /------------------)--)--o-------- - - -
                         | | |                  |  |  |
                         | | |     93C46        |  |  |     93C46
Clock (from PC)          | | |  |---------|     |  |  |  |---------|
-------------------------(-(-o--|CLK      |     |  |  \--|CLK      |
                         | |    |         |     |  |     |         |
Data out (from PC)       | |    |         |     |  |     |         |
-------------------------(-o----|DI       |     |  \-----|DI       |
                         |      |         |     |        |         |
Data in (to PC)          |      |         |     |        |         |
-------------------------o------|DO       |     \--------|DO       |
                                |         |              |         |
Select #1 (from PC)             |         |              |         |
--------------------------------|CS       |           /--|CS       |
                                |---------|           |  |---------|
Select #2 (from PC)                                   |
------------------------------------------------------/


This approach has a number of advantages:

- It does not require the use of any support hardware (other than the EEPROMs
themselves and perhaps a power source).

- No bidirectional signal lines are needed, thus it will work on ANY PC parallel
port.

- Multiple devices can easily be added.  If you are driving a large number of
devices, a 3-to-8 demultiplexer could be added to drive the multiple SELECT pins
with just three output lines.

You might even be able to power the EEPROM device(s) (irregardless of type) by
using the remaining data outputs as power sources.  If you use this approach,
make sure to bypass the power supply pins with capacitors (suggest a 0.1 uF and
4.7 uF tantalum in parallel on each device) to handle peak current demands seen
when a write cycle occurs. 



Date: Fri, 08 Nov 1996 10:40:39 GMT

Original Subject: Re: Dividing a bidirectional line in two!!


Comment on this article


Comments on this article


This article is referenced in the following indexes: