2017-09-11 8 views
1

Je cherche à recevoir des messages MIDI pour contrôler un synthétiseur à base de microcontrôleur et je travaille à la compréhension du protocole MIDI pour pouvoir implémenter un gestionnaire MIDI. J'ai lu que le MIDI est transmis à 31,25 kHz sans une ligne d'horloge dédiée - dois-je échantillonner la ligne à 31,25 kHz avec le microcontrôleur pour recevoir des octets MIDI?Comment faire pour synchroniser le microcontrôleur avec la sortie du contrôleur MIDI

Répondre

0

Le MIDI specification dit:

L'interface MIDI matérielle fonctionne à 31,25 (+/- 1%) kbauds, asynchrone, avec un bit de départ, 8 bits de données (D0 à D7), et un bit d'arrêt . [...] Les octets sont envoyés LSB en premier.

Ceci décrit un protocole UART standard; Vous pouvez simplement utiliser le matériel UART incorporé par la plupart des microcontrôleurs (le débit en bauds de 31250 Hz a été choisi car il peut être facilement dérivé d'une horloge 1 Mhz.)

Si vous vouliez vraiment mettre en œuvre le récepteur dans le logiciel, vous échantillonner le signal d'entrée à un taux plus élevé pour pouvoir détecter de manière fiable le niveau au milieu de chaque bit; Pour plus de détails, voir What exactly is the start bit error in UART? et How does UART know the difference between data bits and start/stop bits?