Atmega328 USB a serie Serpberry Pi

2

Entiendo que puedes crear una transmisión en serie entre la Raspberry Pi y un Atmega328 usando el GPIO: enlace

Me interesa tener más opciones en serie, como los puertos USB . Lo logré, pero con un tablero Arduino: enlace

He buscado mucho sobre este tema y me confundí bastante. ¿Existe una forma segura de utilizar el puerto USB de RPi para las comunicaciones en serie con un Atmega328? ¿Cuál sería el circuito intermedio de seguridad más fácil? ¡Gracias!

( Nota: Más fácil como en un número mínimo de componentes, como transistores y resistencias. Preferiblemente NO CI. Esto es para reducir el tamaño y garantizar la disponibilidad de componentes en mi país )

    
pregunta Ahmed Farid

1 respuesta

1

Las distribuciones estándar de Raspberry Pi son compatibles con el controlador FTDI, por lo que puede usar un adaptador USB a serie basado en conjuntos de chips FTDI. De hecho, FTDI ha lanzado algunos productos comercializados específicamente para su uso con la Raspberry Pi:

enlace

enlace

También puede comprar sus dispositivos de nivel de chip para rodar su propia solución personalizada si lo prefiere. También hay información sobre los adaptadores USB a serie compatibles aquí, los dispositivos basados en Prolific PL2303 también se enumeran como compatibles:

enlace

Me di cuenta de que ya ha mencionado una solución basada en GPIO y un sistema similar basado en FTDI. Estas son realmente las únicas dos opciones, convertir USB a serie es bastante complejo y, ciertamente, el camino más práctico es un conjunto de chips dedicado.

Para obtener algunas líneas seriales adicionales a través del puerto GPIO, también puede usar una técnica llamada 'bit banging' para alternar una línea de E / S para transmitir datos y escribir algo para decodificar los datos seriales entrantes en otra línea GPIO. Sin embargo, eso normalmente requeriría el uso de un temporizador de hardware para una operación confiable, por lo que creo que necesitaría escribir sus propios controladores de kernel. Desde el código de usuario, puede usar temporizadores estándar, pero dado que Linux no es un sistema operativo en tiempo real en el verdadero sentido, dudo que funcione de manera confiable al 100%, especialmente a velocidades de transmisión más altas.

    
respondido por el PeterJ

Lea otras preguntas en las etiquetas