web-dev-qa-db-fra.com

Vitesse potentielle maximale pour le port série RS232

Quelle est la vitesse maximale potentielle du port série RS232 sur un PC moderne? Je sais que la spécification indique qu'il est de 115200 bps. Mais je pense que cela peut être plus rapide. Qu'est-ce qui influence la vitesse du port RS232? Je crois que c'est un résonateur à quartz mais je n'en suis pas sûr.

15
roman

Cela remonte au PC IBM d'origine. Les ingénieurs qui l'ont conçu avaient besoin d'un moyen bon marché pour générer une fréquence stable. Et se sont tournés vers des cristaux qui étaient largement utilisés à l'époque, utilisés dans n'importe quel téléviseur couleur aux États-Unis. Un cristal conçu pour faire fonctionner un circuit oscillateur à la fréquence de rafale de couleur dans la norme de télévision NTSC. Ce qui est 315/88 = 3,579545 mégahertz. De là, il est d'abord allé via un diviseur programmable, celui que vous modifiez pour définir le débit en bauds. Le UART lui-même le divise ensuite par 16 pour générer l'horloge de sous-échantillonnage pour la ligne de données.

Ainsi, la vitesse de transmission la plus élevée que vous pouvez obtenir est de régler le diviseur sur la valeur la plus petite, 2. Ce qui produit 3579545/2/16 = 111861 bauds. Une erreur de 2,3% par rapport à la vitesse de transmission idéale. Mais assez proche, la fréquence d'horloge ne doit pas être exacte. Point de signalisation asynchrone, le A dans UART, le bit de départ resynchronise toujours le récepteur.

Obtenir réel Le matériel RS-232 fonctionnant à 115200 bauds de manière fiable est un défi important. La norme électrique est très sensible au bruit, il n'y a aucune tentative pour annuler le bruit induit et aucune tentative pour créer une ligne de transmission à impédance adaptée. La longueur de câble maximale recommandée à 9600 bauds n'est que de 50 pieds. À 115200, seuls des câbles très courts feront l'affaire. Pour aller plus loin, vous avez besoin d'une approche différente, comme les signaux différentiels du RS-422.

C'est toute l'histoire ancienne et ne s'applique plus exactement au matériel moderne. Véritable matériel série basé sur une puce UART comme 16550 a disparu rapidement et remplacé par des émulateurs USB. Qui ont un pilote personnalisé pour émuler un port série. Ils acceptent une sélection de débit en bauds mais l'ignorent simplement pour le bus USB lui-même, il ne s'applique qu'au dernier demi-pouce du dongle que vous branchez sur l'appareil. Que le pilote accepte ou non 115200 comme valeur maximale est un détail d'implémentation du pilote, ils généralement accepte des valeurs plus élevées.

14
Hans Passant

La vitesse maximale est limitée par les spécifications du matériel UART.

Je crois que le PC "classique" UART (le 1655 ) dans implémentations modernes peut gérer au moins 1,5 Mbps. Si vous utilisez un port USB basé sur l'adaptateur série, il n'y a pas de 16550 impliqué et la limite est plutôt fixée par la ou les puces spécifiques utilisées dans l'adaptateur, bien sûr.

J'utilise régulièrement une liaison RS232 fonctionnant à 460 800 bps, avec un adaptateur USB.

En réponse au commentaire sur la synchronisation (avec une mise en garde: je suis un logiciel): la communication série asynchrone ne transmet pas l'horloge (c'est la partie asynchrone juste là) avec les données. Au lieu de cela, l'émetteur et le récepteur sont censés s'entendre au préalable sur le débit à utiliser.

Un bit de début sur la ligne de données signale le début de chaque "caractère" (généralement un octet, mais avec des bits de démarrage/arrêt/parité qui l'encadrent). Le récepteur commence alors à échantillonner la ligne de données afin de déterminer si c'est un 0 ou un 1. Cet échantillonnage est généralement effectué au moins 16 fois plus rapidement que le débit binaire réel, pour vous assurer qu'il est stable. Ainsi, pour un UART communiquant à 460 800 bps comme je l'ai mentionné ci-dessus, le récepteur échantillonnera le signal RX à environ 7,4 MHz. Cela signifie que même si vous synchronisez le UART avec une fréquence brute f , vous ne pouvez pas vous attendre à ce qu'il reçoive de manière fiable des données à ce rythme.

3
unwind

Oui, il est possible de fonctionner à des vitesses plus élevées, mais la principale limitation est l'environnement, dans un environnement bruyant, il y aura plus de données corrompues limitant la vitesse. Une autre limitation est la longueur du câble entre les appareils, vous devrez peut-être ajouter un répéteur ou un autre appareil pour renforcer le signal.

2
Anders