Problemas de Arduino <-> BBB UART al usar un convertidor de nivel bidireccional (5v a 3.3v)

Tengo un problema extraño al interactuar entre Arduino y BeagleBoneBlack a través de UART.

El Arduino tiene una lógica de 5v y el BBB tiene una lógica de 3.3v, por lo que estoy usando un convertidor de nivel lógico bidireccional de sparkfun .

El convertidor de nivel funciona bien con mi lectura USB/FTDI de 3.3v con mi computadora portátil. Cuando conecto GND,3.3v,RX,TX, pero cuando uso el BBB, no obtengo nada a menos que desconecte la línea de 3.3v. Curiosamente, en mi computadora usando 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 convertirse 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 voltaje de 1.6v, la comunicación aún funciona, pero nuevamente, no con la referencia de bajo voltaje de 3.3v.

Me encantaría sugerencias de 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 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 |
-----------             -----------------               --------         ------------

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 |
-----------             -----------------               -------
Cuando dice "El convertidor de nivel funciona bien con mi USB/FTDI de 3.3v", ¿quiere decir con el lado de 3.3v conectado al FTDI y el lado de +5v conectado al Arduino? ¿Ha hecho una matriz de todos los voltajes con el lado de 3.3v conectado al BBB y el lado de +5v conectado al Arduino (con ambos voltajes de suministro conectados también)? Registre todos los voltajes de entrada y salida primero, y luego levante los cables que van al pin de entrada del convertidor (cada lado, uno a la vez), y configure la entrada primero a +5v (o +3.3v según corresponda) y registre la voltaje de salida, y haga lo mismo para tierra.
Editado para incluir lo que funciona y lo que no funciona con un poco más de claridad :)

Respuestas (1)

Extrañamente, parece que Arduino está emitiendo voltaje tanto en RX como en TX, mientras que BBB solo está emitiendo voltaje en la línea TX.

Supongo que el LLC bidireccional no puede detectar en qué dirección se supone que debe ocurrir la comunicación, por lo que el BBB no puede transmitir al Arduino.

Este Sparkfun LLC es el mismo que estoy usando en el canal BBB -> Arduino, pero el lado Arduino -> BBB solo usa un divisor de voltaje. Arreglé esta configuración, y parece estar funcionando ahora.