Hi. I have only one available UART on a micro but need to connect two serial devices (chips on the same board). Is there some type of chip that can be used that will accept two serial inputs and then I can use a GPIO pin to switch between the sources? The two serial sources need not be used together (meaning when one is being used, the other is not required).
A HC4052 will MUX expand up to 4 channels, two ways. More than 4 would need a MUX & Demux in separate packages, or a SPLD, like a 16V8. The SPLD can priority encode the RX, into an INT pin, so any RX start bit, can wakeup the uC, and select that channel, as well as do the TX/RX Mux.
I used a 74126, but it was not so intuitive as both TX and RX must stay high while idle. When you switch one of the sources off you have to make sure it doesn't pull the line down. (we're talking about 0/5V) A relay works either.
As has already been said, "You haven't provided enough information."
If the two chips need to communicate to each other, and one needs to communicate with the outside world but the other does not, then look at an SPI between the chips. Is likely your MCUs already have SPI modules, if not its terribly easy to make in software. Especially easy when you are writing both ends.
If both MCUs need to communicate to the outside world, consider daisy chaining. Connect one to the RxD coming in, its TxD to the other MCU's RxD, and the 2nd MCU's TxD to the outgoing TxD. The first MCU keeps everything it recognizes and passes the rest and new data it has created to the second. The second MCU keeps everything it recognizes and passes the rest to the outside connector while possibly adding some new data.
Daisy chaining requires no additional hardware, only a bit of software.
If you're dealing with a breadboard, maybe. For a product, in SMT, not so sure. One logic device may be cheaper to put down (and allow a more reliable design) than a handful of diodes.
To the OP: if your protocol is master/slave, and you can guarantee no Rx unless your Tx demands a response, then just mux both at the UART I/O. If you have multiple possible concurrent Rx sources, you're out of luck. UART the fastest and bit-bang the slowest.
That's a good point. When I muxed my serial port, one device was a satellite transceiver that had it's own buffer, and was primarily a send-only device. The other device was a GPS, which I could set up once at the beginning and read at any time. I only needed the GPS data about once each 5 minutes, as oceanographic buoys aren't supposed to move too far in that time frame. They were much better candidates for multiplexing than the control console port, which could receive user input at any time.
Hi, I Have the same requirement of demultiplexing one serial port into multiple, and one of the serial port should be selected depending on the input select signals. I used 74HC4051 8 channel multiplexer or demultiplexer. It can be applied to both analog and digital multiplexing and demultiplexing.
I used the GPIO pins for the select signals (s0,s1,s2) and the enable pin.
and i have given the TX pin of my device to Z input.
But, unfortunately the data is coming on all the output pins of 74hc4051 IC.
Is there any other way of demultiplexing the TX and multiplexing the RX pin.