La biblioteca de PiGPIO http://abyz.me.uk/rpi/pigpio/index.html menciona que una de sus características es "enlaces seriales de software que utilizan cualquier usuario gpio".
Supongo que significa que puede usarlo para generar un software UART en 2 pines GPIO libres.
En la página de ejemplos de proyectos, no hay ejemplos para esta función y no he encontrado ninguno en Google.
¿Alguien ha hecho esto? Si es así, indíqueme el ejemplo.
Si no, ¿hay alguna biblioteca alternativa para golpear un UART?
Gracias,
Respuestas:
Aquí hay algunos Python que utilicé para probar la confiabilidad del software en serie. El lado de entrada es bastante trivial. Simplemente realiza las llamadas abiertas en serie de bit bang apropiadas en Python o C. El lado de salida está más involucrado ya que tiene que usar formas de onda para construir el flujo de bits.
El código aquí usa datos de 7 bits en lugar de datos de 8 bits. La prueba se escribió aproximadamente al mismo tiempo que agregaba soporte para diferentes bits por byte.
El código escribe bloques de datos binarios en un gpio conectado a una computadora portátil (a través de un dongle en serie). La computadora portátil repite los datos seriales entrantes a su línea serial de salida. El Pi lee los datos en serie en otro gpio.
El código verifica las discrepancias entre los datos enviados y recibidos. Se supone que la computadora portátil está libre de errores, por lo que se supone que cualquier error está en el golpeteo de bits.
Mirar los registros de algo menos de 19,2 kbps fue sólido. Cualquier cosa de hasta 115.2 kbps era razonable (pero requeriría suma de verificación) y 230.4 kbps dieron una tasa de error de 13% de bytes.
Registros
fuente
Cuando conecta Tx directamente a Rx para probar sin nada que agregue errores como dongles, le dice qué tan bien funciona realmente la biblioteca.
Use GPIO 23 como Tx y GPIO 24 como Rx u otro GPIO gratuito en Raspberry Pi 3b +. Esto se ve bien en el mismo orden que el UART a bordo y está prácticamente al lado, solo 3 pines a la derecha, con un pin GND a la derecha de Rx.
Resultados:
Si puede vivir con 19200 o menos sin necesidad de usar hashes de suma de comprobación ni convertidores SPI / I2C a UART, debería estar bien.
fuente