I am having a strange issue interfacing between an Arduino and BeagleBoneBlack over UART.
The Arduino is 5v logic, and the BBB is 3.3v logic, so I'm using a bi-directional logic level converter from sparkfun.
The level converter works fine with my 3.3v USB/FTDI reading with my laptop When I connect GND,3.3v,RX,TX, but when I use the BBB, I don't get anything unless I disconnect the 3.3v line. Interestingly - on my computer using the FTDI cable, I get garbage UNLESS the 3.3v is connected.
On the BBB, with the 3.3v ref voltage disconnected the level-converter seems to convert from 5v - 2.5v (instead of the intended 5v-3.3v), and I'm weary of this floating voltage.
I made a voltage divider with resistors, and with the reference low-volt of 1.6v, communication still works, but again - not with the reference low-volt of 3.3v.
I'd love suggestions as to why this may be the case!
Edit:
To clarify with sweet ASCII art:
This Works (as it should):
___________ _________________ ________ ____________
| | <-RX (5v)-> | HV1 (LLC) LV1 | <-TX (3.3v)-> | | <-USB-> | Computer |
| Arduino | <-TX (5v)-> | HV2 (LLC) LV2 | <-RX (3.3v)-> | FTDI | <-USB-> | Computer |
| (5v) | <-HV (5v)-> | HV (LLC) LV | <-LV (3.3v)-> |(3.3v)| <-USB-> | Computer |
| | <-- GND --> | GND (LLC) GND | <--- GND ---> | | <-USB-> | Computer |
----------- ----------------- -------- ------------
This doesn't work (and it shouldn't, as there's no ref LV):
___________ _________________ ________ ____________
| | <-RX (5v)-> | HV1 (LLC) LV1 | <-TX (3.3v)-> | | <-USB-> | Computer |
| Arduino | <-TX (5v)-> | HV2 (LLC) LV2 | <-RX (3.3v)-> | FTDI | <-USB-> | Computer |
| (5v) | <-HV (5v)-> | HV (LLC) LV | |(3.3v)| <-USB-> | Computer |
| | <-- GND --> | GND (LLC) GND | <--- GND ---> | | <-USB-> | Computer |
----------- ----------------- -------- ------------
This works (but it shouldn't):
___________ _________________ _______
| | <-RX (5v)-> | HV1 (LLC) LV1 | <-TX (3.3v)-> | BBB | (Actually reading about 2.5v)
| Arduino | <-TX (5v)-> | HV2 (LLC) LV2 | <-RX (3.3v)-> | BBB | (on these two lines)
| (5v) | <-HV (5v)-> | HV (LLC) LV | | BBB |
| | <-- GND --> | GND (LLC) GND | <--- GND ---> | BBB |
----------- ----------------- -------
This works (also shouldn't):
___________ _________________ _______
| | <-RX (5v)-> | HV1 (LLC) LV1 | <-TX (1.6v)-> | BBB |
| Arduino | <-TX (5v)-> | HV2 (LLC) LV2 | <-RX (1.6v)-> | BBB |
| (5v) | <-HV (5v)-> | HV (LLC) LV | <-LV (1.6v)-> | BBB | (Using a voltage divider)
| | <-- GND --> | GND (LLC) GND | <--- GND ---> | BBB |
----------- ----------------- -------
This doesn't work (but should):
___________ _________________ _______
| | <-RX (5v)-> | HV1 (LLC) LV1 | <-TX (3.3v)-> | BBB |
| Arduino | <-TX (5v)-> | HV2 (LLC) LV2 | <-RX (3.3v)-> | BBB |
| (5v) | <-HV (5v)-> | HV (LLC) LV | <-LV (3.3v)-> | BBB |
| | <-- GND --> | GND (LLC) GND | <--- GND ---> | BBB |
----------- ----------------- -------