Arduino: problemas de UART de BBB que usan un convertidor de nivel bidireccional (5v a 3.3v)

2

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 |
-----------             -----------------               -------
    
pregunta Jono

1 respuesta

2

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

Supongo que la LLC bidireccional no es capaz de detectar en qué dirección se supone que va a pasar la comunicación, por lo que el BBB no puede transmitir al Arduino.

Esta Sparkfun LLC es la misma que la que estoy usando en el BBB - > Canal de Arduino, pero el Arduino - > El lado BBB solo usa un divisor de voltaje. Arreglé esta configuración y parece que está funcionando ahora.

    
respondido por el Jono

Lea otras preguntas en las etiquetas