Tengo un problema extraño al interactuar entre un Arduino y BeagleBoneBlack sobre UART.
El Arduino es la lógica 5v, y el BBB es la lógica 3.3v, así que estoy usando un convertidor de nivel lógico bidireccional de sparkfun .
El convertidor de nivel funciona bien con mi lectura de 3.3v USB / FTDI con mi computadora portátil Cuando conecto GND, 3.3v, RX, TX, pero cuando uso el BBB, no obtengo nada a menos que desconecte el 3.3v línea. Curiosamente, en mi computadora que usa el cable FTDI, obtengo basura A MENOS que el 3.3v esté conectado.
En el BBB, con el voltaje de referencia de 3.3v desconectado, el convertidor de nivel parece convertir de 5v a 2.5v (en lugar del 5v-3.3v previsto), y estoy cansado de este voltaje flotante.
Hice un divisor de voltaje con resistencias, y con la referencia de bajo voltio de 1.6v, la comunicación todavía funciona, pero nuevamente, no con la referencia de bajo voltio de 3.3v.
Me encantaría recibir sugerencias sobre por qué este puede ser el caso!
Editar:
Para aclarar con dulce arte ASCII:
Esto funciona (como debería):
___________ _________________ ________ ____________
| | <-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 |
----------- ----------------- -------- ------------
Esto no funciona (y no debería, ya que no hay referencia 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 |
----------- ----------------- -------- ------------
Esto funciona (pero no debería):
___________ _________________ _______
| | <-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 |
----------- ----------------- -------
Esto funciona (tampoco debería):
___________ _________________ _______
| | <-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 |
----------- ----------------- -------
Esto no funciona (pero debería):
___________ _________________ _______
| | <-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 |
----------- ----------------- -------