Seriell kommunikation Baud Rate Inställning och Baud Rate Algoritm

Aug 07, 2018 Lämna ett meddelande

Seriell kommunikation baudhastighet inställning och baud rate algoritm


När den seriella kommunikationen av mikroprocessorn med enkelchip används, måste baudhastigheten ställas in och baudhastigheten ska ställas in på 9600, 19200 ...? Är det här en tradition? Från vad? Den motsvarande kristalloscillatorn är också generellt 11,0592MHZ.

Är det först att ställa in kristalloscillatorn och sedan ställa in baudhastigheten eller ställa in baudhastigheten först och sätt sedan in kristalloscillatorn. Varför ska detta ställas in?


Det finns två tillförlitliga påståenden:


1: Enligt fysiska egenskaper hos el, överföringsmedia, etc. i kombination med kraven för användning av seriell enhet

För att säkerställa effektiv kommunikation, i enlighet med de fysiska egenskaperna hos el, överföringsmedia, etc. i kombination med kraven för seriell användning, bestäms det att den maximala överföringshastigheten för RS232 endast kan vara 115200 och sedan erhållen genom två steg för att få 57600, 28800, 19200; För att anpassa sig till dessa hastigheter, designa motsvarande kristallfrekvens.


2: Detta bestäms av telekommunikationslinjens egenskaper.

Bandlinjen på telefonlinjen är 300 - 3KHz. Vid den tidpunkten hayes först förlovat i modemet, så den 2400HZ-signalen som används, är den motsvarande baudhastigheten 2400. Eftersom grundfrekvensen bestäms förbättras det förbättrade passet metoden för hastigheten multipliceras med utgångspunkt från 2400 senare, så bildandet av 9600.19200. . . .


Hur som helst, det finns en baudhastighet och sedan en kristallfrekvens.


Beräkning av baudhastighet för seriekommunikation av microchip med enstaka chip.


I läge 0 och läge 2 är seriell port baudhastighet fixerad och läge 0 är Fosc / 12. Läge 2 är Fosc / 32 eller Fosc / 64, vilket bestäms av SMOD-biten i PCON-registret.


I läge 1 och läge 3 är baudhastigheten ett variabelt värde. Baudräntan kan genereras av Timer 1 (8052 kan genereras av Timing 2). Vad är baudräntan? Baud-hastighet enligt tidpunkt 1 överflödeshastighet som skall bestämmas:

Baud Rate = (2SMOD / 32) * (Timer 1 överflödeshastighet)

Obs: 2SMOD här SMOD är indexet, SMOD är baudhastigheten dubbel baud rate bit, denna bit finns i PCON-registret.


När du använder timer 1 som baudhastighetsgenerator är det vanligtvis nödvändigt att konfigurera timer 1 för att fungera i 8-bitars automatisk omladdningsläge, och även för att inaktivera timer 1 avbryta, då övergång av timer 1 hur beräknas? Överflödeshastigheten är överflödesfrekvensen. Om man antar att kristallfrekvensen är 12 MHz och TH1-värdet är 0xFE, kommer endast två klockpulser att krävas för att överfalla, och överskridningsperioden är 2us, då är frekvensen av överflöde 500 kHz. Enligt tidssektionen har tidpunkten följande formel:

Timingtid = (maximalt talvärde - startvärde för motorn) * Maskincykel = (maximalt talvärde - Startvärdet för motorn) * (12 / kristallfrekvens (Hz)) (s) = (256-TH1) * (12 / OSC_FREQ hz)) (s).


Då är frekvensen av överflödet naturligt:

OSC_FREQ (Hz) / ((256-TH1) * 12).


Så den slutliga push-to-baud-hastigheten är:

(2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12)).


Beräkningsformeln för baudfrekvensen är tillgänglig, och naturligt kan initialvärdet av TH1 härledas enligt baudhastigheten:

BAUD_RATE = (2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12))


32 * 12 * (256-TH1) = (2SMOD * OSC_FREQ (Hz)) / BAUD_RATE


256-TH1 = (2SMOD * OSC_FREQ (Hz)) / (BAUD_RATE * 32 * 12)


TH1 = 256- (2SMOD * OSC_FREQ (Hz)) / (BAUD_RATE * 32 * 12)


Om man antar att kristallfrekvensen är 11,0592 MHz, är baudfrekvensen 9600, SMOD = 0, vad ska initialvärdet för TH1 vara? Enligt ovanstående formel kan den beräknas TH1 = 256-11059200 / (9600 * 32 * 12) = 0xFD.



Skicka förfrågan

whatsapp

Telefon

E-post

Förfrågning