Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

De UART begrijpen

De UART, of universele asynchrone ontvanger-zender, is een van de meest gebruikte apparaat-naar-apparaat communicatieprotocollen. Dit artikel laat zien hoe u een UART als hardwarecommunicatieprotocol kunt gebruiken door de standaardprocedure te volgen.

Indien correct geconfigureerd, kan de UART werken met veel verschillende soorten seriële protocollen die betrekking hebben op het verzenden en ontvangen van seriële gegevens. Bij seriële communicatie worden gegevens bit voor bit overgedragen via een enkele lijn of draad. Bij tweerichtingscommunicatie gebruiken we twee draden voor een succesvolle seriële gegevensoverdracht. Afhankelijk van de toepassing en systeemvereisten heeft seriële communicatie minder circuits en draden nodig, wat de implementatiekosten verlaagt.

In dit artikel bespreken we de fundamentele principes bij het gebruik van een UART, met de nadruk op pakkettransmissie, standaard frameprotocol en aangepaste frameprotocollen die toegevoegde waarde bieden voor beveiligingscompliance wanneer ze worden geïmplementeerd, vooral tijdens code-ontwikkeling. Tijdens de productontwikkeling is dit document ook bedoeld om enkele basisstappen te delen bij het controleren op een gegevensblad voor daadwerkelijk gebruik.

Aan het einde van het artikel is het doel een beter begrip en naleving van UART-standaarden om de mogelijkheden en toepassing te maximaliseren, met name bij het ontwikkelen van nieuwe producten.

"Het grootste probleem in communicatie is de illusie dat het heeft plaatsgevonden."

—George Bernard Shaw

Communicatieprotocol speelt een grote rol bij het organiseren van communicatie tussen apparaten. Het is op verschillende manieren ontworpen op basis van systeemvereisten, en deze protocollen hebben een specifieke regel die tussen apparaten is overeengekomen om succesvolle communicatie te bereiken.

Ingebedde systemen, microcontrollers en computers gebruiken meestal een UART als een vorm van apparaat-naar-apparaat hardwarecommunicatieprotocol. Van de beschikbare communicatieprotocollen gebruikt een UART slechts twee draden voor zijn zendende en ontvangende uiteinden.

Ondanks dat het een veelgebruikte methode van hardwarecommunicatieprotocol is, is het niet altijd volledig geoptimaliseerd. Een juiste implementatie van het frameprotocol wordt vaak genegeerd bij gebruik van de UART-module in de microcontroller.

UART is per definitie een hardwarecommunicatieprotocol dat gebruikmaakt van asynchrone seriële communicatie met configureerbare snelheid. Asynchroon betekent dat er geen kloksignaal is om de uitvoerbits van het verzendende apparaat naar de ontvangende kant te synchroniseren.

Interface


Figuur 1. Twee UART's communiceren rechtstreeks met elkaar.

De twee signalen van elk UART-apparaat hebben de naam:

  • Zender (Tx)
  • Ontvanger (Rx)

Het belangrijkste doel van een zender- en ontvangerlijn voor elk apparaat is het verzenden en ontvangen van seriële gegevens die bedoeld zijn voor seriële communicatie.


Figuur 2. UART met databus.

De verzendende UART is verbonden met een controlerende databus die gegevens in parallelle vorm verzendt. Hieruit worden de gegevens nu serieel, bit voor bit, via de transmissielijn (draad) naar de ontvangende UART verzonden. Dit zal op zijn beurt de seriële gegevens omzetten in parallel voor het ontvangende apparaat.

De UART-lijnen dienen als communicatiemedium om de ene gegevens naar de andere te verzenden en te ontvangen. Houd er rekening mee dat een UART-apparaat een zend- en ontvangstpin heeft die speciaal is bedoeld voor zenden of ontvangen.

Voor UART en de meeste seriële communicatie moet de baudrate op zowel het verzendende als het ontvangende apparaat hetzelfde worden ingesteld. De baudrate is de snelheid waarmee informatie wordt overgedragen naar een communicatiekanaal. In de seriële poortcontext zal de ingestelde baudrate dienen als het maximale aantal bits per seconde dat moet worden overgedragen.

Tabel 1 vat samen wat we moeten weten over de UART.

Tabel 1. UART-samenvatting

Wires2Speed9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1000000, 1500000TransmissiemethodenAsynchronousMaximum aantal masters1Maximum aantal slaves1

De UART-interface gebruikt geen kloksignaal om de zender- en ontvangerapparaten te synchroniseren; het verzendt gegevens asynchroon. In plaats van een kloksignaal genereert de zender een bitstream op basis van zijn kloksignaal, terwijl de ontvanger zijn interne kloksignaal gebruikt om de binnenkomende gegevens te samplen. Het synchronisatiepunt wordt beheerd door op beide apparaten dezelfde baudrate te hebben. Als u dit niet doet, kan dit van invloed zijn op de timing van het verzenden en ontvangen van gegevens, wat discrepanties kan veroorzaken tijdens de gegevensverwerking. Het toegestane verschil in baudrate is maximaal 10% voordat de timing van bits te ver weg raakt.

Gegevensoverdracht

In een UART is de transmissiemodus in de vorm van een pakket. Het stuk dat de zender en ontvanger verbindt, omvat het maken van seriële pakketten en bestuurt die fysieke hardwarelijnen. Een pakket bestaat uit een startbit, dataframe, een pariteitsbit en stopbits.


Figuur 3. UART-pakket.

Begin bit

De UART-gegevenstransmissielijn wordt normaal gesproken op een hoog spanningsniveau gehouden wanneer deze geen gegevens verzendt. Om de overdracht van gegevens te starten, trekt de verzendende UART de transmissielijn van hoog naar laag gedurende één (1) klokcyclus. Wanneer de ontvangende UART de overgang van hoog naar laag voltage detecteert, begint het de bits in het dataframe te lezen met de frequentie van de baudrate.


Figuur 4. Startbit.

Dataframe

Het dataframe bevat de feitelijke gegevens die worden overgedragen. Het kan vijf (5) bits tot acht (8) bits lang zijn als een pariteitsbit wordt gebruikt. Als er geen pariteitsbit wordt gebruikt, kan het dataframe negen (9) bits lang zijn. In de meeste gevallen worden de gegevens met het minst significante bit eerst verzonden.


Figuur 5. Gegevensframe.

Pariteit

Pariteit beschrijft de evenheid of onevenheid van een getal. Het pariteitsbit is een manier voor de ontvangende UART om te zien of er gegevens zijn gewijzigd tijdens de verzending. Bits kunnen worden gewijzigd door elektromagnetische straling, niet-overeenkomende baudsnelheden of gegevensoverdracht over lange afstanden.

Nadat de ontvangende UART het dataframe heeft gelezen, telt deze het aantal bits met een waarde van 1 en controleert of het totaal een even of oneven getal is. Als de pariteitsbit een 0 (even pariteit) is, moet de 1 of logisch-hoge bit in het dataframe optellen tot een even getal. Als de pariteitsbit een 1 (oneven pariteit) is, moeten de 1 bit of logische pieken in het dataframe optellen tot een oneven getal.

Wanneer het pariteitsbit overeenkomt met de gegevens, weet de UART dat de verzending vrij van fouten was. Maar als de pariteitsbit een 0 is, en het totaal oneven, of de pariteitsbit is een 1, en het totaal is even, dan weet de UART dat bits in het dataframe zijn veranderd.


Figuur 6. Pariteitsbits.

Stopbits

Om het einde van het datapakket aan te geven, stuurt de verzendende UART de datatransmissielijn van een laag voltage naar een hoog voltage gedurende één (1) tot twee (2) bit(s) duur.


Figuur 7. Stopbits.

Stappen van UART-transmissie

Ten eerste:de verzendende UART ontvangt gegevens parallel van de gegevensbus.


Figuur 8. Gegevensbus naar de verzendende UART.

Ten tweede:de verzendende UART voegt de startbit, pariteitsbit en stopbit(s) toe aan het dataframe.


Figuur 9. UART-dataframe aan de Tx-zijde.

Ten derde:het hele pakket wordt serieel verzonden, beginnend van startbit tot stopbit van de verzendende UART naar de ontvangende UART. De ontvangende UART bemonstert de datalijn met de vooraf geconfigureerde baudrate.


Figuur 10. UART-transmissie.

Ten vierde:de ontvangende UART verwijdert het startbit, pariteitsbit en stopbit van het dataframe.


Figuur 11. Het UART-dataframe aan de Rx-zijde.

Ten vijfde:de ontvangende UART zet de seriële gegevens terug in parallel en draagt ​​deze over naar de gegevensbus aan de ontvangende kant.


Figuur 12. UART ontvangen op databus.

Frame-protocol

Een belangrijke functie die beschikbaar is in de UART maar nog niet volledig wordt gebruikt, is de implementatie van een frameprotocol. Het belangrijkste gebruik en belang hiervan is een toegevoegde waarde voor beveiliging en bescherming op elk apparaat.

Als twee apparaten bijvoorbeeld hetzelfde UART-frameprotocol gebruiken, bestaat de neiging dat, wanneer verbinding wordt gemaakt met dezelfde UART zonder de configuratie te controleren, het apparaat wordt aangesloten op verschillende pinnen die storingen in het systeem kunnen veroorzaken.

Aan de andere kant zorgt de implementatie hiervan voor veiligheid vanwege de noodzaak om de ontvangen informatie te ontleden in overeenstemming met het ontwerpframeprotocol. Elk frameprotocol is speciaal ontworpen om uniek en veilig te zijn.

Bij het ontwerpen van een frameprotocol kunnen ontwerpers de gewenste headers en trailers, inclusief CRC, op verschillende apparaten instellen. In Afbeelding 13 worden twee (2) bytes ingesteld als onderdeel van de header.

Ten tweede:controleer onder geheugenkaart het UART-adres.


Afbeelding 13. Voorbeeld UART-frameprotocol.

Op basis van het voorbeeld kunt u een koptekst, trailer en CRC instellen die uniek zijn voor uw apparaat.

Kop 1 (H1 is 0xAB) en Kop 2 (H2 is 0xCD)

Header is de unieke identificatie die bepaalt of u communiceert met

het juiste apparaat.

Command (CMD) Selectie

De opdracht hangt af van de lijst met opdrachten die is ontworpen om de communicatie tussen twee apparaten tot stand te brengen.

Gegevenslengte (DL) per opdracht

De lengte van de gegevens is gebaseerd op de gekozen opdracht. U kunt de lengte van gegevens maximaliseren, afhankelijk van de gekozen opdracht, zodat deze kan variëren op basis van de selectie. In dat geval kan de datalengte worden aangepast.

Data n (variërende gegevens)

Gegevens zijn de lading die van apparaten moet worden overgedragen.

Aanhangwagen 1 (T1 is 0xE1) en Aanhangwagen 2 (T2 is 0xE2)

Trailers zijn gegevens die worden toegevoegd nadat de verzending is beëindigd. Net als de koptekst kunnen ze op unieke wijze worden geïdentificeerd.

Cyclische redundantiecontrole (CRC-formule)

De formule voor het controleren van de cyclusredundantie is een toegevoegde foutdetectiemodus om onbedoelde wijzigingen in onbewerkte gegevens te detecteren. De CRC-waarde van het verzendende apparaat moet altijd gelijk zijn aan de CRC-berekeningen aan de kant van de ontvanger.

Het is raadzaam om beveiliging toe te voegen door frameprotocollen voor elk UART-apparaat te implementeren. Het frameprotocol heeft identieke configuraties nodig op zowel de zendende als de ontvangende apparaten.

UART-bewerkingen

Wanneer u een hardwarecommunicatieprotocol gebruikt, is het een vereiste om het gegevensblad en de hardwarereferentiehandleiding te controleren.

Dit zijn de te volgen stappen:

Ten eerste:controleer de datasheet-interface van het apparaat.


Figuur 14. Gegevensblad microcontroller.


Figuur 15. Geheugenkaart microcontroller.

Ten derde:controleer de specifieke details voor de UART-POORT, zoals de bedieningsmodus, de lengte van de databits, de pariteitsbit en stopbits. Voorbeeld UART-poortdetails in gegevensblad:

UART-poort
De voorbeeld-MCU's bieden een full-duplex UART-poort, die volledig compatibel is met standaard pc-UART's. De UART-poort biedt een vereenvoudigde UART-interface voor andere randapparatuur of hosts, en ondersteunt full-duplex, DMA en asynchrone overdracht van seriële gegevens. De UART-poort biedt ondersteuning voor vijf tot acht databits en geen, even of oneven pariteit. Een frame wordt beëindigd met anderhalf of twee stopbits.

Ten vierde:controleer de details van de UART-bewerking, inclusief de berekening van de baudrate. De baudrate wordt geconfigureerd met behulp van de volgende voorbeeldformule. Deze formule varieert afhankelijk van de microcontroller.

Voorbeelddetails van UART-bewerkingen:

  • 5 tot 8 databits
  • 1, 2 of 1 en ½ stopbits
  • Geen, of even of oneven pariteit
  • Programmeerbare oversample-snelheid met 4, 8, 16, 32
  • Baudsnelheid =PCLK/((M + N/2048) × 2 OSR + 2 × DIV

waar,

OSR (oversample rate)
UART_LCR2.OSR =0 tot 3
DIV (baudrate divider)
UART_DIV =1 tot 65535
M (DIVM fractionele baudrate M)
UART_FBR.DIVM =1 tot 3
N (DIVM fractionele baudrate M)
UART_FBR.DIVN =0 tot 2047

Ten vijfde:controleer voor de baudrate welke perifere klok (PCLK) moet worden gebruikt. In dit voorbeeld is er een 26 MHz PCLK en 16 MHz PCLK beschikbaar. Merk op dat OSR, DIV, DIVM en DIVN per apparaat verschillen.

Tabel 2. Baudrate-voorbeeld gebaseerd op 26 MHz PCLK

Badrate OSR DIV DIVM DIVN 960032431081152003411563

Tabel 3. Baudrate-voorbeeld op basis van 16 MHz PCLK

Badrate OSR DIV DIVM DIVN 96003173108115200322348

Ten zesde:het volgende deel is om de gedetailleerde registers voor UART-configuratie te controleren. Bekijk de parameters bij het berekenen van de baudrate, zoals UART_LCR2, UART_DIV en UART_FBR. Tabel 4 zal leiden tot een specifiek te behandelen register.

Tabel 4. Beschrijvingen UART-register

Naam Beschrijving UART_DIVBaudrate dividerUART_FIBRFractionele baudrateUART_LCR2Tweedelijnsbesturing

Ten zevende:controleer onder elk register de details en vervang de waarden om te berekenen voor de baudrate, en begin dan met het implementeren van de UART.

Waarom is het belangrijk?

Bekendheid met het UART-communicatieprotocol is een voordeel bij het ontwikkelen van robuuste, kwaliteitsgedreven producten. Als u weet hoe u gegevens moet verzenden met slechts twee draden, en hoe u een heel pakket gegevens of een lading moet vervoeren, kunt u ervoor zorgen dat gegevens foutloos worden overgedragen en ontvangen. Aangezien UART het meest gebruikte hardwarecommunicatieprotocol is, kan deze kennis ontwerpflexibiliteit in toekomstige ontwerpen mogelijk maken.

Gebruiksvoorbeelden

U kunt UART voor veel toepassingen gebruiken, zoals:

  • Foutopsporing:vroege detectie van systeemfouten is belangrijk tijdens de ontwikkeling. Het toevoegen van UART kan in dit scenario helpen door berichten van het systeem vast te leggen.
  • Tracing op functieniveau van de productie:logboeken zijn erg belangrijk bij de productie. Ze bepalen functionaliteiten door operators te waarschuwen voor wat er op de productielijn gebeurt.
  • Updates van klanten of klanten:Software-updates zijn zeer belangrijk. Het hebben van complete, dynamische hardware met update-compatibele software is belangrijk om een ​​compleet systeem te hebben.
  • Testen/verificatie:door producten te verifiëren voordat ze het productieproces verlaten, kunnen klanten producten van de best mogelijke kwaliteit worden geleverd.

Referenties

"Basisprincipes van UART-communicatie." Elektronica Hub, juli 2017.

Campbell, Scott. "Basisprincipes van UART-communicatie." Basisprincipes van het circuit . Keim, Robert.

"Terug naar de basis:de universele asynchrone ontvanger / zender." Alles over circuits , december 2016.

"Wat is het UART-protocol? UART-communicatie uitgelegd.” Pijl.


Ingebed

  1. Het fabricageproces van de schacht begrijpen
  2. De betekenis van cloudcultuur begrijpen
  3. De voordelen van voorspellend onderhoud begrijpen
  4. De basisprincipes van een freesmachine begrijpen
  5. De op lengte gesneden lijn begrijpen
  6. De verschillende soorten restspanning begrijpen
  7. De werking van schokdemper begrijpen
  8. De verschillende soorten vloeistofstromen begrijpen
  9. De term koppeling begrijpen
  10. De flexibiliteit van een materiaal begrijpen
  11. De toepassingen van dieselmotoren begrijpen