La bibliothèque PiGPIO http://abyz.me.uk/rpi/pigpio/index.html mentionne que l'une de ses fonctionnalités est "les liaisons série logicielles utilisant n'importe quel utilisateur gpio".
Je suppose que cela signifie que vous pouvez l'utiliser pour générer un logiciel UART sur 2 broches GPIO gratuites.
Dans la page d'exemples des projets, il n'y a aucun exemple pour cette fonctionnalité et je n'en ai trouvé aucun sur Google.
Quelqu'un a-t-il fait cela? Si oui, veuillez me montrer l'exemple.
Sinon, existe-t-il des bibliothèques alternatives pour frapper un UART?
Merci,
Réponses:
Voici quelques Python que j'ai utilisés pour tester la fiabilité des logiciels en série. Le côté entrée est assez trivial. Vous effectuez simplement les appels ouverts série bang bang appropriés en Python ou C. Le côté sortie est plus impliqué car vous devez utiliser des formes d'onde pour construire le flux binaire.
Le code utilise ici des données 7 bits plutôt que 8 bits. Le test a été écrit à peu près au même moment que j'ajoutais la prise en charge de différents bits par octet.
Le code écrit des blocs de données binaires sur un gpio connecté à un ordinateur portable (via un dongle série). L'ordinateur portable renvoie les données série entrantes sur sa ligne série de sortie. Le Pi lit les données série sur un autre gpio.
Le code vérifie les écarts entre les données envoyées et reçues. L'ordinateur portable est supposé être exempt d'erreurs, donc toutes les erreurs sont supposées être dans le coup de bits.
En regardant les journaux, tout ce qui était inférieur à 19,2 kbps était solide. Quelque chose jusqu'à 115,2 kbps était raisonnable (mais nécessiterait une somme de contrôle) et 230,4 kbps donnait un taux d'erreur de 13% octets.
Journaux
la source
Lorsque vous câblez Tx directement à Rx pour tester sans quoi que ce soit qui ajouterait une erreur comme des dongles, cela vous indique le bon fonctionnement de la bibliothèque.
Utilisez GPIO 23 comme Tx et GPIO 24 comme Rx ou tout autre GPIO gratuit sur Raspberry Pi 3b +. Cela semble bon dans le même ordre que l'UART intégré et il est pratiquement à côté, à seulement 3 broches à droite, avec une broche GND à droite de Rx.
Résultats:
Si vous pouvez vivre avec 19200 ou moins sans avoir besoin d'utiliser des hachages de somme de contrôle ni des convertisseurs SPI / I2C en UART - ça devrait aller.
la source