I work with a lot of different embedded boards. Most of them have linux istalled. And what do these have in common? Yep. UART. The thing you use to debug them, send uboot parameters and etc. When there are a plenty of boards around, you tend to have a pile of usb<-->uart chips around, your /dev/ becomes a mess (Is that ttyUSB0 or ttyUSB1?) that even udev cannot sort out (Damn, I’ve swapped that out, so it’s not /dev/armboard1)…
And the worst is the difference in logic levels. I have a couple of exotic boards that require 2.5 volts. Something few uart bridges can handle out of the box.
So I had a quick look at what I had around. Since I mostly work with one board at a time…
1. I grabbed an ft232rl
2. Some buffers and shift registers
3. Some POTs and ams1117 voltage regulators
4. Lottsa coffee
The idea was simple as hell. MUX the UART and select the channel you want to work with a small command line utility. FT232RL has the CBUS pins that can be used in bitbang mode. e.g. You can use them as GPIO. 4 GPIO are quite enough for 2 shift registers.
Each shift register has clk and data pins, which you can use to serially input the data, and 8 pins of parallel output, which are used to actually cotrol hardware.
So, my FT232RL got 2 shift registers.
One selects the power channel, the other selects the adress of the UART outlet to use.
Forthe power circuit, I had no mosfets around (huge 10 Amps thingies do not count), so I made use of some PNP transistors in digital switch mode. After the switch there goes a linear stabilizer – AMS1117, adjustable version, which is adjusted by a POT. And after that through a Schottky diode (Is it really required?) it goes to VCCIO power net.
So we have 7 power channels. 3.3, 5 volts and 5 adjustable channels. The voltage can be anything fro 2 to 5 volts so that gives us some freedom of choice
The baseboard has 2 pin arrays that will be used to connect arduino-like shields with buffers and outputs. One has the address selection shift register outputs, that will be connected to ‘/inhibit’ pins of the buffers on the shields, one has the actual outputs of FT232RL serial port.
So I set off to work and after one wasted day of my life I got a baseboard ready. There it is, my little thingie:
There were a few bugs though. I had a wrong kicad footprint that resulted in the need of turning all the sot-23 transistors over. And the Schottkey diodes were a bit smaller, so I had to bend the contacts a bit. I also made a small mistake: Since the shift registers are powered via the VCCIO voltage, disabling all power to this net results in inability to supply any voltage again unless you short VCCIO to some voltage and then turn on the correct transistor. So I sacrificed one adjustable channel and made it always output 2 volts of ‘standby’ to the VCCIO net.
Next weekend I’m gonna make some shields and finally publish all the fixed circuits and layouts.
Btw, that’s plain press’n’peel method I used to make the board.