updated readme
simplified the protocol
added license
takes commands formatted as json from a named-pipe and bit-bangs the given configuration into the muxes and shift registers.
bash$ . ~/stm32/sdk/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
bash$ $CC muxitd.c -o muxitd
commands are sent as ASCII text terminated by a newline '\n'.
0x000miiii
where, m = mux b0000 - ch4 b0001 - ch3 b0010 - ch2 b0011 - ch1
and, i = io each nibble (each 'i') represents an output channel
bits | 15..12 | 11..8 | 7..4 | 3..0 |
---|---|---|---|---|
output ch | ch1 | ch2 | ch3 | ch4 |
each bit in the nibble represents an input channel
bits | n+3 | n+2 | n+1 | n |
---|---|---|---|---|
input ch | ch1 | ch2 | ch3 | ch4 |
yes, they're reversed. i didn't check the schematic very carefully after drawing it, apparently.
here's a crappy diagram:
pin cross-reference. shows how everything is connected from a pin on the MPU all the way to a pin on a connector on the main board.
gpio header pin# | stm32 pin | gpio chip | gpio line# | function |
---|---|---|---|---|
8 | PB10 | chip1 | 10 | adcsel0 |
10 | PB12 | chip1 | 12 | adcsel1 |
16 | PF1 | chip5 | 1 | shclk |
18 | PF0 | chip5 | 0 | stclk |
22 | PF4 | chip5 | 4 | res |
2 | - | - | - | 5V |
6 | - | - | - | gnd |