Fråga:
Avkoda / analysera följande UART-signaler
user405714
2020-05-25 21:15:41 UTC
view on stackexchange narkive permalink

Jag har skickat en 2 och en 9 med UART.Överföringshastigheten är 9600, det finns ingen paritet och den har 8 databitar.

Som vi vet representeras 9 som 1001 i binär.Detta är dock vad jag får från min UART-signal:

enter image description here

A 2 representeras som 0010 men det här får jag från min UART-signal: enter image description here Jag vet att jag måste vara uppmärksam på startbiten, men förutom det har jag svårt att se logiken i den här signalen.

NOTE:

Signalen fungerar, men jag behöver bara hjälp med att analysera den.

Utan att ens titta på vågformen kan du förvirra binära tal och ASCII-teckenkoder, t.ex. det numeriska värdet 2 mot tecknet '2' som har ascii-koden 0x32.Vänligen använd inte slumpmässiga taggar, taggar är för vad en fråga handlar om * nu, vad var tangentiellt involverat men spelar ingen roll i ditt inlägg.
Ditt omfång ser tillräckligt modernt ut för att ha UART-avkodning, även om det kanske också är tillräckligt nytt för att du måste betala för privilegiet.
Fem svar:
Michael Karas
2020-05-25 21:37:18 UTC
view on stackexchange narkive permalink

Låt oss kommentera ditt första omfång.När vi gör detta, notera att den lägsta ordningsbiten i det binära värdet överförs först.Konventionell notering i detta fält är att ordna bitarna i en byte så här:

[Bit 7] [Bit 6] [Bit 5] [Bit 4] [Bit 3] [Bit 2] [Bit 1] [Bit 0]

Så när jag kommenterar och sedan utvärderar vänds bitpositionerna från de positioner som visas på de antecknade scope-bilderna.

enter image description here

Bitmönstret som representeras där är 0b00111001.

Det är samma som 0x39.

0x39 är ASCII-koden för ett "9" -tecken.

Låt oss göra detsamma för ditt andra omfång.

enter image description here

Här representeras bitmönstret som 0b00110010.

Det är samma som 0x32.

0x32 är ASCII-koden för "2" -tecknet.

ASCII-förklaringen är vettigt men jag förstår inte varför bit 0 hoppas över.
För tecknet 9 skriver du bara 0b00111001, men om vi inkluderar bit 0 skulle det vara 0b100111001
Startbitar är alltid en nollnivåbit och har samma bredd.Dina andra bilder röda linjer markerar faktiskt bit 1. Bit 0 hoppas inte över.
Stoppbitar är alltid en nivåbit och har samma bredd.Stoppbiten ingår inte i UART 8-bitarsdata.
Säger du att bit 0 är startbiten?
Nej. Startbiten är tydligt markerad i mina kommentarer och är inte bit 0.
Men varför tar vi inte med det i det bitmönster du skrev ner då?
Speciellt om bit 0 är en '1' som i den första bilden.
Jag skrev bitmönstren för bara 8-bitars datadelen av UART-överföringen.Jag inkluderade inte start- och stoppbitarna.
Hur får man sedan ett '1' i slutet av 0b00111001 när den sista biten på bilden före stoppbiten är '0'?Jag pratar om den första bilden i det här fallet.
Jag säger att bitmönstren du skriver ner inte ser ut som de bitmönster jag ser på bilderna.
Du läser dem bakåt.LSB betyder att minst betydande bit kommer först.Du måste vända dem från vänster till höger.
Jag betecknade bitnumren på bilderna.I denna disciplin är bit 0 den minst signifikanta biten.
Mattman944
2020-05-25 21:27:51 UTC
view on stackexchange narkive permalink

Du skickade antagligen en ASCII 9, inte en binär 9. ASCII 9 är 0x39.Bitar skickas först LSbit.

0011 1001 omvänd är 1001 1100

enter image description here

Andy aka
2020-05-25 21:26:34 UTC
view on stackexchange narkive permalink

UARTs skickar vanligtvis den minst betydande biten först, så du får den här för 9 och lägre för 2: -

enter image description here

UART teckenram: -

enter image description here

Oh elände, en nedröstning - känner någon sig tillräckligt manlig för att äga upp detta?
Jag nedröstade inte, men ditt svar är det enda som inte nämner ASCII.
Justme
2020-05-25 21:27:15 UTC
view on stackexchange narkive permalink

Först och främst är det inte siffrorna 9 och 2 utan ASCII-teckensymbolerna '9' och '2', vilka är lika med 0x39 och 0x32.

Bitarna skickas också LSB först.Därför ser du en ledande 0 startbit och sedan 10011100 för '9' och 01001100 för '2'.

aMike
2020-05-25 21:24:17 UTC
view on stackexchange narkive permalink

2 som du skickade är faktiskt karaktär två, inte decimalvärdet 2. ASCII-koden för 2 är 0x32 eller 0b00110010, som matchar en av dinabilder.Bitarna skickas också från LSB till MSB, så nivåerna du ser i 'scope skulle vara 0,1,0,0,1,1,0,0 från vänster till höger.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 4.0-licensen som det distribueras under.
Loading...