Home     Interfacing     Software     About     Sitemap   
 EN   NL   
Quick links

RS232 naar USB converters

USB naar RS232 conversie

Eén van de meest gestelde vragen die mij per email bereikt is hoe een RS232 connector aan een USB kabel kan worden gesoldeerd. Helaas is het leven niet zo simpel. Alhoewel RS232 en USB (universal serial bus) beiden seriële standaards zijn om randapparatuur met computers te verbinden, zijn ze in het onderliggend ontwerp totaal verschillend. Een simpele kabel is niet voldoende om RS232 apparatuur met een computer te verbinden die alleen over USB poorten beschikt. Er zijn echter converter modules en kabels die succesvol kunnen worden gebruikt om RS232 apparatuur te verbinden met computers via een USB poort. Deze adapters en kabels bevatten elektronica, en het success hangt af van de mogelijkheden van deze elektronica en de device driver software die wordt geleverd met de converter om te communiceren met deze elektronica over de USB bus. Alvorens een USB naar RS232 converter te kopen is het zinvol om allereerst dit document te lezen.

Verschillen vanuit het applicatie standpunt

RS232 is een definitie voor seriële communicatie op een 1:1 basis. RS232 definieert de interface laag, maar niet de applicatie laag. Om RS232 te gebruiken in een bepaalde situatie moet applicatie specifieke software worden geschreven op de apparatuur aan beide zijden van de verbindende RS232 kabel. De ontwikkelaar is vrij om het protocol te definiëren waarmee wordt gecommuniceertd. RS232 poorten kunnen direct worden aangesproken, of via een device driver in het besturingssysteem.

USB aan de andere kant is een bussysteem waarmee het toegestaan is om meerdere randapparaten te verbinden via een host computer via één USB poort. Hubs kunnen worden gebruikt in de USB keten om de kabellengte te verhogen en om meer apparaten te verbinden met dezelfde USB poort. De standaard bschrijft niet alleen de fysieke eigenschappen van de interface, maar ook de protocollen die moeten worden gebruikt. Vanwege de complexe USB protocol behoeften wordt communicatie met USB poorten op een computer altijd uitgevoerd via een device driver.

Het is niet moeilijk te bevatten waar de problemen zullen opduiken. Ontwikkelaars hebben veel vrijheden waar het gaat om het definiëren van RS232 communicatie en poorten worden vaak direct, of vrijwel direct aangesproken in de applicatieprogrammatuur. Instellingen zoals baudrate, databits, hardware en software flow control kunnen vaak worden gewijzigd vanuit de applicatie. De USB interface heeft deze flexibiliteit niet. Wanneer echter een RS232 poort wordt gebruikt via een USB naar RS232 converter moet deze flexibiliteit op een bepaalde manier worden toegevoegd. Daarom is er om een RS232 poort via een USB poort te gebruiken een tweede device driver nodig die een RS232 UART, emuleert, maar communiceert via USB.

Veel applicaties verwachten een bepaalde timing met RS232 communicatie. Met poorten die direct in een computer zijn geplaatst is dit veelal geen probleem. De applicatie communiceert direct, of via een dunne device driver laag met de UART en alles gebeurt in een wel bepaald tijdframe. De USB bus wordt echter gedeeld door meerdere apparaten. Communicatie verstopping kan hiervan het resultaat zijn en het tijdframe waarin specifieke RS232 acties worden uitgevoerd kan hierdoor niet zo goed gedefinieerd zijn als in de directe poort toepassing. Ook de dubbele device driver laag met een RS232 driver die werkt boven op de complexe USB driver kan extra overhead toevoegen aan de communicatie met vertraging als gevolg.

Hardware specifieke problemen

RS232 poorten die fysiek geplaatst zijn in een computer worden vaak gevoed door drie voedingsbronnen: +5 Volt voor de UART logica, en -12 Volt en +12 Volt voor de output drivers. USB heeft echter alleen een +5 Volt voedingsbron. Sommige USB naar RS232 converters gebruiken geintegreerde DC/DC converters om de gewenste spanningsniveaus te genereren voor de RS232 signalen, maar in zeer goedkope implementaties wordt de +5 Volt spanning direct gebruikt om de outputs te voeden. Dit mag vreemd klinken, maar veel RS232 poorten herkennen een spanning boven 2 Volt als een space signaal, terwijl een spanning van 0 Volt of minder wordt herkend als een mark signaal. Dit is niet volgens de originele standaard, omdat in de originele RS232 standaard, alle spanningen tussen -3 Volt en +3 Volt resulteren in een ongedefinieerde signaaltoestand. De welbekende Maxim MAX232 serie van RS232 driver chips hebben bijvoorbeeld dit niet-standaard gedrag. Hoewel de uitgangen van deze drivers schakelen tussen -10 Volt en +10 Volt, herkennen de ingangen alle signalen die schalen onder 0 Volt en boven 2 Volt als herkenbare signalen.

Dit niet-standaard gedrag van RS232 ingangen maakt het zelfs moeilijker om de juiste RS232 naar USB converter te kiezen. Wanneer een RS232 naar USB converter verbonden wordt met een computer en getest wordt over een seriële lijn met een ander apparaat, dan kan het werken met sommige apparaten, maar niet met anderen. Dit kan speciaal in industriële toepassingen een probleem opleveren. Low-cost computers worden vaak uitgevoerd met goedkope RS232 driver chips en wanneer je de RS232 naar USB converter met zo’n computer test, dan kan het werken. Maar dezelfde converter kan falen wanneer hij wordt geprobeerd in een industriële omgeving. De kansen dat RS232 poorten van low-cost computers signalen accepteren in de 0..5 Volt range zijn hoger dan bij industriële apparatuur die vaak specifiek ontworpen is om immuun te zijn voor storingen.

Een ander hardware specifiek probleem komt voor uit handhaking om buffer overflows aan de ontvanger zijde te voorkomen. RS232 applicaties kunnen twee vormen van handshaking gebruiken, ofwel met controle commando’s in de data stroom, software flow control genoemd, of met fysieke lijnen, hardware flow control genoemd. Niet alle USB naar RS232 converters hebben deze hardware flow control lijnen. Het is niet altijd eenvoudig te achterhalen of een applicatie ze nodig heeft. Sommige applicaties gebruiken helemaal geen hardware flow control, en deze goedkope USB naar RS232 converters zullen zonder problemen werken. Andere applicaties gebruiken hardware flow control, maar niet frequent. Alleen met grote hoeveelheden data, of in situaties waar de CPU druk is met het uitvoeren van andere taken zal hardware flow control ingrijpen om data verlies te voorkomen. In dergelijke gevallen zal de communicatie grotendeels foutloos lijken, met echter zo nu en dan bytes die verloren gaan en ongespecificeerde fouten in de communicatie.

USB naar RS232 converter selectie criteria

Concluderend, wanneer de juiste USB naar RS232 converter moet worden gevonden, kijk dan naar de volgende potentiële problemen:

  • Heeft de applicatie zeer strakke timing behoeften? In dat geval is het mogelijk beter om een interne RS232 poort te gebruiken in plaats van een USB naar RS232 converter. De extra laag op het niveau van de device driver en bus verstopping kunnen de communicatie minder betrouwbaar maken.
  • Wat zijn de RS232 uitgangsspanningen van de converter? Komen ze op het niveau dat nodig is voor de apparatuur waarmee gecommuniceerd moet worden?
  • Wat zijn de handshaking behoeften? Is hardware flow control noodzakelijk, zorg er dan voor dat deze inputs en outputs op de converter aanwezig zijn.
Every solution breeds new problems.
MURPHY'S FIFTH COROLLARY
  mei. 2021
   Copyright © 1997-2021 Lammert Bies, All rights reserved