Salut les Geektimes! Vous êtes-vous déjà demandé comment un «signal électrique» retentit le long des pistes des circuits imprimés entre les microcircuits, les transistors, les diodes, les résistances et les condensateurs? Une des variantes d'un tel signal dans l'électronique moderne est un bus numérique, et l'une des interfaces populaires pour l'échange de données via le bus est UART. Il est souvent utilisé dans les microcontrôleurs pour communiquer avec un ordinateur ou une sorte de périphérie. Pour obtenir du son sur le bus, il n'est pas du tout nécessaire de connecter un haut-parleur avec un amplificateur à un vrai bus avec
UART ohm, car il peut être simulé dans le programme. Êtes-vous intéressé par les sons que vous avez obtenus ou avez-vous besoin d'un programme pour vous expérimenter? Ensuite, je demande un chat.
Nous écoutons des fichiers sur le bus avec UART
Quel son résultera si vous transférez des fichiers via
UART ? Voici quelques exemples obtenus avec les paramètres
UART suivants:
- 115200 bauds
- Bit 8 bits
- Bit de parité: aucun
- Longueur du bit d'arrêt: 1
Son du jeu Stalker Shadow of Chernobyl (fichier XR_3DA.exe, tout en fin de piste, à partir de 2:36, il y a une mélodie).
Le son du texte et du code de l'article sur le synthétiseur vocal (l'article lui-même est
ici ).
À quoi ressemble la photo de Lena?

Le résultat était juste du
bruit .
Le son du livre "Entropie et prévision des séries temporelles dans la théorie des systèmes dynamiques" au format pdf.Le son du firmware du microcontrôleur de la série Atmega pour un lecteur wav.À quoi peut-il servir?
Théoriquement, il peut y avoir de telles informations sous forme de texte, ou d'image, ou de vidéo, ou sous la forme d'un programme qui aura non seulement une signification fonctionnelle ou une signification esthétique, mais aussi le «beau» son d'un bus numérique, puis il se révèle être une sorte de poésie «numérique» .
Vous pouvez également diversifier les échantillons pour le dubstep. En général, à mon avis, écouter les sons d'un bus numérique est à peu près aussi intéressant que d'écouter le bruit des ondes radio en ondes courtes, en général, pour un amateur.
Comment ça marche ou un peu sur UART
Ce qui est
UART peut être lu sur
Wikipedia .
UART est très facile à simuler dans un programme. En fait, il vous suffit de pouvoir créer une chute de signal de 0 à 1 et inversement (dans le cas d'un fichier
WAV d'une capacité en bits de 16 bits, ce sont des valeurs de -
A à +
A , où
A est l'amplitude du signal) et de l'enregistrer dans un fichier audio. L'interface
UART fonctionne comme ceci: après le bit de départ, qui est «zéro» logique, vous devez définir le niveau en fonction des données fournies, du bas au haut. Vient ensuite un bit de parité que vous ne pouvez pas utiliser. À la fin du message se trouve un bit d'arrêt («unité» logique), dont la longueur peut être différente. Un exemple de code peut être trouvé dans le code source, qui se trouve à la fin de l'article. Plus d'informations sur UART peuvent être trouvées sur le réseau, beaucoup de matériel. L'UART peut être utilisé à d'autres fins, par exemple comme PWM, mais dans notre cas, cela signifie que théoriquement, vous pouvez même transférer un signal sonore à part entière directement vers le haut-parleur, comme cela se fait dans les lecteurs wav sur le microcontrôleur. Cependant, je préférerais plutôt l'utiliser comme générateur de méandre. La fréquence de tonalité et la phase du signal peuvent être fournies sous forme de bits de données, par exemple,
00001111 créera un méandre dont la période sera égale à 10 temps de transmission d'un bit (car dans ce cas il y a aussi un bit de départ égal à 0 et un bit d'arrêt égal à 1). En raison des bits de démarrage et d'arrêt, toutes les périodes de méandre ne peuvent pas être transmises, par exemple, dans ce cas
01100110 , car nous écouterons essentiellement une telle séquence sur le bus
0011001101 . Si vous utilisez un taux de transfert de données élevé, par exemple 115200 bauds, il est judicieux de créer des fréquences sonores audibles en étirant les périodes des meadras de plusieurs octets.
...
En utilisant ce
lien, vous pouvez télécharger le programme pour convertir le fichier au son du bus
UART . Il existe également une version utilisant OpenAL pour jouer du son pendant le fonctionnement du programme, voici le
lien .
Le code source du programme est fourni ci-dessous:
Fichier d'en-tête SoundsDigitalBus.h#ifndef SOUNDS_DIGITAL_BUS_H_INCLUDED #define SOUNDS_DIGITAL_BUS_H_INCLUDED #define SDB_WAV_FILE_NAME "sdb_output.wav" #define SDB_UART_BIT 8 #define SDB_UART_PARITY 0 #define SDB_UART_STOP_BIT 1 #define SDB_UART_BAUDRATE 9600 #define SDB_UART_BAUDRATE_MAX 921600
Code source du fichier SoundsDigitalBus.cpp #include "SoundsDigitalBus.h" #if SDB_WITH_OPENAL == 1
Fichier main.h #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #define LINUX 0x00 #define WINDOWS 0x01 #define RU 0x00 #define EN 0x01
Fichier main.cpp #include "main.h" sdb soundsDigitalBus; int main() { static FILE *fp = NULL;
PS J'ai remarqué une erreur selon laquelle dans le code source, le bit de démarrage est logique 1, pas 0, et le bit d'arrêt est 0, pas 1. Qui a besoin d'une correspondance de base du signal sonore réel peut corriger l'erreur elle-même.