UART (Universal Asynchronous Transmitter Receiver), dit is het meest gebruikte protocol voor full-duplex seriële communicatie. Het is een enkele LSI-chip (Large Scale Integration) die is ontworpen om asynchrone communicatie uit te voeren. Dit apparaat zendt en ontvangt gegevens van het ene systeem naar het andere.
In deze tutorial leert u de basisprincipes van UART-communicatie, en de werking van de UART.
Wat is UART?
“UART” staat voor Universal Asynchronous receiver-transmitter. Het is een hardware-randapparaat dat zich in een microcontroller bevindt. De functie van UART is het omzetten van inkomende en uitgaande gegevens in een seriële binaire stroom. 8-bit seriële gegevens die worden ontvangen van het randapparaat worden omgezet in parallelle vorm met behulp van seriële naar parallelle conversie en parallelle gegevens die worden ontvangen van de CPU worden omgezet met behulp van seriële naar parallelle conversie. Deze gegevens zijn aanwezig in modulerende vorm en worden verzonden met een gedefinieerde baudsnelheid.
Waarom wordt UART gebruikt?
rotocollen zoals SPI (seriële perifere interface) en USB (Universal Serial Bus) worden gebruikt voor snelle communicatie. Wanneer een snelle gegevensoverdracht niet nodig is, wordt UART gebruikt. Dit is een goedkoop communicatie-apparaat met een enkele zender/ontvanger. Het vereist een enkele draad voor het verzenden van de gegevens en een andere draad voor het ontvangen.
UART Interface
Het kan worden verbonden met een PC (personal computer) met behulp van een RS232-TTL converter of USB-TTL converter. Het gemeenschappelijke tussen RS232 en UART is dat ze beide geen klok nodig hebben om gegevens te verzenden en te ontvangen. Het Uart frame bestaat uit 1 startbit, 1 of 2 stopbits en een pariteitsbit voor seriële gegevensoverdracht.
Blokdiagram
De UART bestaat uit de volgende kerncomponenten. Het zijn de zender en de ontvanger. De zender bestaat uit het Transmit hold register, Transmit shift register, en besturingslogica. Op dezelfde manier bestaat de ontvanger uit een Receive hold register, Receiver shift register, en besturingslogica. Verder zijn zowel de zender als de ontvanger voorzien van een baudrate-generator.
UART Blokdiagram
De baudrate-generator genereert de snelheid waarmee de zender en ontvanger de data moeten verzenden/ontvangen. Het Transmit hold register bevat de databyte die moet worden verzonden. Het zend-verschuivingsregister en het ontvangers-verschuivingsregister verschuiven de bits naar links of rechts totdat een byte data is verzonden/ontvangen.
Naast deze registers is er een lees- of schrijf-controlelogica die aangeeft wanneer moet worden gelezen/geschreven. De baudrate-generator genereert snelheden van 110 bps (bits per seconde) tot 230400. Meestal worden microcontrollers geleverd met hogere baudrates zoals 115200 en 57600 voor snellere gegevensoverdracht. Apparaten als GPS en GSM gebruiken langzamere baudrates van 4800 en 9600.
Hoe werkt UART?
Om de werking van UART te kennen, moet u de basisfunctionaliteit van seriële communicatie begrijpen. In het kort, zender en ontvanger gebruiken start bit, stop bit, en timing parameters om met elkaar te synchroniseren. De oorspronkelijke gegevens zijn in parallelle vorm. Bijvoorbeeld, we hebben 4-bit data, om die om te zetten in seriële vorm, hebben we een parallel naar serieel converter nodig. Over het algemeen worden D flip-flops of latches gebruikt om de converters te ontwerpen.
Werking van D – Flip-flop
Basic D Flip-Flop
D flip-flop ook bekend als Data flip-flop verschuift een bit van de ingangszijde naar de uitgangszijde als en alleen, als de klok de overgang verandert van een hoge toestand naar een lage toestand of van een lage toestand naar een hoge toestand. Op dezelfde manier, als je vier bits data wilt overdragen heb je 4 flip-flops nodig.
Note: Hier,
‘D’ staat voor input data.
‘CLK’ geeft klokpulsen aan.
‘Q’ staat voor output data. Laten we nu een parallel naar serieel en serieel naar parallel converter ontwerpen.
Parallel naar Serieel Conversie
Parallel naar Serieel Conversie
Parallel naar Serieel Conversie
Cascade Aansluiting – Parallel naar Serieel
Step#1:
Neem 4 Flip-flops. Het aantal flip-flops is gelijk aan het aantal bits dat moet worden doorgegeven. Plaats op dezelfde manier Multiplexers voor elke flip-flop, maar exclusief de eerste. Een multiplexer wordt geplaatst om de gegevens te combineren en om te zetten in seriële bits. Het heeft twee ingangen, een parallelle bit data en een andere van de vorige flip-flop.
Step#2:
Nu, Laad de data per keer in de D flip-flops. Het zal de parallelle gegevens trekken en verplaatst het laatste bit van de laatste flip-flop (vier), en dan het derde bit, tweede bit, en ten slotte het eerste bit. Om nu de parallelle data om te zetten in seriële vorm wordt serieel naar parallel converter gebruikt.
Serieel naar Parallel Conversie
Serieel naar Parallel Conversie
Cascade Aansluiting – Serieel naar Parallel Conversie
Step#1:
Neem 4 Flip-flops. Het aantal flip-flops is gelijk aan het aantal bits dat moet worden doorgegeven.
Step#2:
In eerste instantie schakelt u de parallelle bus uit. Niet inschakelen totdat alle bits zijn geladen. Sla de data op aan de ingang van de eerste flip-flop. Maak nu de klok hoog, dit zal het minst significante bit verschuiven naar de ingang van de tweede flip-flop en de uitgang van de eerste flip-flop. Op dezelfde manier worden alle bits één voor één verschoven door de klok hoog te zetten. De converter is in de hold-toestand totdat alle bits naar de uitgang zijn overgebracht.
Step#3:
Nu bevat elke flip-flop één bit seriële data. Erstwhile alle bits worden overgebracht naar de flip-flop uitgang, activeer de bus. Hierdoor zal de converter alle bits tegelijk versturen.
Protocol Format
De UART start de communicatie met een startbit ‘0’. Het startbit initieert de overdracht van seriële data en het stopbit beëindigt de datatransactie.
Protocol formaat
Het is ook voorzien van een pariteitsbit (even of oneven). Het even pariteitsbit wordt weergegeven door ‘0’ (even aantal 1’s) en het oneven pariteitsbit wordt weergegeven door ‘1’ (oneven aantal 1’s).
Transmissie
De transmissie van gegevens vindt plaats met behulp van een enkele transmissielijn (TxD). Hierbij wordt ‘0’ beschouwd als spatie en ‘1’ staat bekend als mark state.
Transmission Frame
De zender verzendt een enkel bit per keer. Na het verzenden van een bit, wordt het volgende bit verzonden. Op deze manier worden alle databits naar de ontvanger gezonden met een vooraf bepaalde baudrate. Er zal een bepaalde vertraging zijn bij het verzenden van elk bit. Om bijvoorbeeld één byte aan gegevens te verzenden met een baudsnelheid van 9600, wordt elk bit verzonden met een vertraging van 108 µsec. De gegevens worden toegevoegd met een pariteitsbit. Er zijn dus 10 bits nodig om 7 bits data te verzenden.
Note: Bij transmissie wordt altijd eerst de LSB (Least Significant Bit) verzonden.
Recept
Tijdens de ontvangst wordt de RxD-lijn (Ontvanger) gebruikt voor het ontvangen van de data.
Receive Frame
Exemplaar van UART-interfacing
Dit voorbeeld demonstreert de interfacing van de ESP8266 UART met de MAX232. Maar, voordat ik in de details van de interfacing spring, wil ik eerst de pindetails van de Max232 driver met u delen.
MAX232 Pinout
MAX232 IC wordt gevoed door 5V voeding die een capacitieve spanningsgenerator bevat om 232 level spanningen aan te sturen. Het wordt geleverd met dubbele zenders ook wel de driver (TIN, TOUT) en ontvangers (RIN en ROUT) genoemd.
Hier heb ik ESP8266 (32-bit microcontroller) gebruikt die een ingebouwde UART heeft. De communicatie met de ESP8266 kan worden uitgevoerd met behulp van AT-commando’s via RS232 naar TTL-niveau-omzetter (MAX232). Onderstaande figuur toont de verbinding van ESP8266 met PC (personal computer).
ESP8266 interfacing with UART
Door geldige AT commando’s aan te vragen via de PC zal de Wi-Fi chip reageren met een bevestiging. Ik wil niet te diep ingaan op ESP8266 en het zal worden uitgelegd in de toekomstige tutorials.
Hier zijn de stappen om seriële communicatie met PC te implementeren.
- Sluit zender (TX) van ESP8266 aan op ontvanger (TX) van RS232 naar TTL level converter (MAX232) en RX van PC.
- Sluit ontvanger (RX) van ESP8266 aan op TX van PC en RX van TTL converter.
ESP8266 Commando’s
AT commando (verzonden vanaf PC) | ESP8266 antwoord (ontvangen door PC) |
---|---|
AT<CR><LF> | OK<CR><LF> |
AT+CIPMUX=1 | OK<CR><LF> |
OK<CR><LF> |
Het onderstaande screenshot toont de reactie van de ESP8266-module.
ESP8266 Commando’s – Docklight Programma
UART vs USART
USART is de basisvorm van UART. Technisch zijn ze niet hetzelfde. Maar de definitie is voor beiden hetzelfde. Het zijn microcontroller randapparaten die parallelle data omzetten in seriële bits en vice versa.
Het belangrijkste verschil tussen UART en USART is, dat UART alleen asynchrone communicatie ondersteunt, terwijl USART zowel synchrone als asynchrone communicatie ondersteunt. Voor een goed begrip volgt hier de vergelijking tussen USART en UART.
UART | USART |
---|---|
De klok wordt intern door de microcontroller gegenereerd. | Het zendende apparaat genereert de klok. |
De datasnelheid is hoger door de externe klok. | |
Standalone protocol | Ondersteunt meerdere protocollen zoals LIN, RS-485, IrDA, Smart Card etc. |
Het is niet nodig de baudrate eerder te weten. | |
geschikt voor communicatie met lage snelheid | geschikt voor communicatie met hoge snelheid. |
Handelt seriële communicatie af bij hoog energieverbruik |
RS232 en UART
Logische niveaus vertegenwoordigen de bedrijfsspanningsniveaus die een apparaat kan weerstaan om in een veilige zone te werken. Hier zijn de spanningsniveaus voor RS232 en TTL.
RS232-logica:
RS232 Spanningsniveaus
Logisch niveau | Voltagebereik |
---|---|
Logic High of OFF output | -5V tot -15V |
+5V tot +15V | |
-3V tot – 15V | Logic High of OFF ingang | -3V tot – 15V |
.15V | |
Logic Low of ON input | +3V tot +15V |
In de meeste gevallen variëren RS232 niveaus van -12V tot +12V. Bijvoorbeeld, een ASCII waarde voor een karakter ‘A’ in RS232 is 65 en 41 in Hexadecimaal. Dus in een 8-bit binair formaat is het 0100 0001. Hier ziet u de weergave van RS232 logische niveaus voor ASCII ‘A’.
RS232 Signaal voor ASCII Letter A
TTL/CMOS Logica:
De UART werkt op TTL logica.
TTL CMOS Signaal voor ASCI Letter A
- In eerste instantie bevindt de seriële lijn zich in de rusttoestand die ook wel Mark-toestand wordt genoemd (Logica 1). Nu begint de gegevensoverdracht met een startbit (logica 0).
- Daarna worden acht gegevensbits na elkaar over de seriële lijn verzonden, met LSB (Least significant bit) als eerste.
- Nadat de hele transmissie is voltooid, volgt een stopbit (logica 1).
Voordelen
Het voordeel van UART is dat het full-duplex communicatie met twee draden ondersteunt. Ook is er geen externe klok nodig voor de datacommunicatie. Het ondersteunt foutcontrole met behulp van een pariteitsbit en de lengte van de gegevens kan eenvoudig worden gewijzigd.
Voordelen
Het grootste nadeel van UART is dat het geen multi-slave- of multi-masterconfiguratie ondersteunt. En de grootte van het gegevenspakket is beperkt tot 9 bits. De UART is niet geschikt voor zware seriële communicatie bij een hoog energieverbruik.
Toepassingen
- De seriële debug poort gebruikt de UART driver om de data uit te printen die uit de externe wereld komt.
- We kunnen het gebruiken voor het verzenden en ontvangen van commando’s van en naar de embedded devices.
- Communicatie in GPS, GSM/GPRS-modem, Wi-Fi chips, enz. werkt met UART.
- Gebruikt in Mainframe toegang tot verschillende computers aan te sluiten.