A biblioteca do PiGPIO http://abyz.me.uk/rpi/pigpio/index.html menciona que um de seus recursos é "links seriais de software usando qualquer usuário gpio".
Entendo que isso significa que você pode usá-lo para gerar um software UART em qualquer 2 pinos GPIO gratuitos.
Na página de exemplos dos projetos, não há exemplos para esse recurso e não encontrei nenhum no Google.
Alguém já fez isso? Se sim, por favor me aponte para o exemplo.
Caso contrário, existem bibliotecas alternativas para a troca de bits de um UART?
Obrigado,
Respostas:
Aqui está um Python que eu usei para testar a confiabilidade do serial de software. O lado da entrada é bastante trivial. Você acabou de fazer as chamadas abertas seriais de bit bang apropriadas em Python ou C. O lado de saída está mais envolvido, pois você precisa usar formas de onda para construir o fluxo de bits.
O código aqui está usando dados de 7 bits em vez de 8 bits. O teste foi escrito na mesma época em que eu adicionava suporte para diferentes bits por byte.
O código grava blocos de dados binários em um gpio conectado a um laptop (via dongle serial). O laptop faz eco dos dados seriais recebidos para sua linha serial de saída. O Pi lê os dados seriais em outro gpio.
O código verifica discrepâncias entre os dados enviados e recebidos. Presume-se que o laptop esteja livre de erros; portanto, presume-se que qualquer erro esteja ocorrendo.
Olhar para os logs com menos de 19,2kbps foi sólido. Qualquer coisa até 115,2kbps era razoável (mas exigiria soma de verificação) e 230,4kbps forneciam uma taxa de erro de 13% em bytes.
Histórico
fonte
Quando você conecta o Tx diretamente ao Rx para testar qualquer coisa que possa adicionar erro como dongles, ele mostra o quão bom a biblioteca realmente executa.
Use o GPIO 23 como Tx e o GPIO 24 como Rx ou outro GPIO gratuito no Raspberry Pi 3b +. Parece bom na mesma ordem que o UART a bordo e está praticamente ao lado dele, apenas 3 pinos à direita, com um pino GND à direita de Rx.
Resultados:
Se você pode viver com 19200 ou menos sem precisar usar hashes de soma de verificação nem conversores SPI / I2C para UART - tudo bem.
fonte