Setio cyfraddau baud cyfathrebu cyfresol a algorithm cyfradd baud
Pan ddefnyddir cyfathrebu cyfresol y microcomputer sglodion sengl, rhaid gosod y gyfradd baud, a dylid gosod y gyfradd baud i 9600, 19200 ...? A yw hyn yn draddodiad? O beth? Mae'r oscillator crisial cyfatebol hefyd yn gyffredinol 11.0592MHZ.
Ydy hi'n gyntaf gosod yr oscillator grisial ac yna gosod y gyfradd baud neu osod y gyfradd baud yn gyntaf ac yna gosod yr oscillator grisial. Pam y dylid gosod hyn?
Mae dau ddatganiad mwy dibynadwy:
1: Yn ôl nodweddion ffisegol trydan, cyfryngau trawsyrru, ac ati, ynghyd â gofynion defnyddio dyfais gyfresol
Er mwyn sicrhau cyfathrebu effeithiol, yn ôl nodweddion ffisegol trydan, cyfryngau darlledu, ac ati, ynghyd â gofynion defnydd cyfresol, penderfynir mai dim ond 115200 yw'r gyfradd drosglwyddo uchaf o RS232, ac yna bydd dau gam i gael 57600, 28800, 19200; i addasu i'r cyfraddau hyn, dylunio'r amlder crisial cyfatebol.
2: Pennir hyn gan nodweddion y llinell delathrebu.
Bandpass y llinell ffôn yw 300--3KHz. Ar y pryd, roedd hayes yn cymryd rhan gyntaf yn y modem, felly mae'r signal 2400HZ yn cael ei ddefnyddio, y gyfradd baud gyfatebol yw 2400. Gan fod yr amlder sylfaenol yn cael ei bennu, mabwysiadwyd y pasiad gwell y caiff y gyfradd ei luosi ar sail 2400 yn ddiweddarach, felly ffurfio 9600.19200. . . .
Yn y naill ffordd neu'r llall, mae cyfradd baud ac yna amledd grisial.
Cyfrifo cyfradd baud o gyfathrebu cyfresol o micro-gyfrifiadur sglodion sengl.
Yn y modd 0 a mode 2, mae'r gyfradd baud porth serial yn sefydlog, ac mae modd 0 yn Fosc / 12. Modd 2 yw Fosc / 32 neu Fosc / 64, sy'n cael ei bennu gan y rhan SMOD o gofrestr PCON.
Yn Modd 1 a Modd 3, mae'r gyfradd baud yn werth amrywiol. Gall Timer 1 gynhyrchu'r gyfradd baud (gellir creu 8052 erbyn Amserlen 2). Beth yw'r gyfradd baud? Cyfradd baud fesul amserydd 1 cyfradd orlif i'w bennu:
Cyfradd Baud = (2SMOD / 32) * (Cyfradd Gorlif Amser 1)
Nodyn: 2SMOD yma SMOD yw'r mynegai, SMOD yw'r dogn dwbl cyfradd baud dwbl, mae hyn yn rhan o gofrestr PCON.
Wrth ddefnyddio amserydd 1 fel y generadur cyfradd baud, fel rheol mae angen ffurfweddu amserydd 1 i weithredu mewn modd auto-ail-lwytho 8-bit, a hefyd i anwybyddu'r amserydd 1 ymyrryd, yna orlif yr amserydd 1 sut i gael ei gyfrifo? Y gyfradd orlif yw amlder gorlif. Gan dybio bod yr amlder grisial yn 12MHz a gwerth TH1 yw 0xFE, dim ond dau orsedd cloc fydd yn gorlifo, ac mae'r cyfnod gorlif yn 2ws, yna mae amlder gorlif yn 500KHz. Yn ôl yr adran amserydd, mae gan yr amser amser y fformiwla ganlynol:
Amser amseru = (gwerth cyfrif mwyaf - gwerth cychwynnol cownter) * cylch peiriant * (gwerth cyfrif uchafswm - gwerth cychwynnol cownter) * (12 / amlder crisial (Hz)) (au) = (256-TH1) * (12 / OSC_FREQ ( Hz)) (au).
Yna mae amlder gorlif yn naturiol:
OSC_FREQ (Hz) / ((256-TH1) * 12).
Felly, y gyfradd derfynol push-to-baud yw:
(2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12)).
Mae fformiwla cyfrifo'r gyfradd baud ar gael, ac yn naturiol, gellir deillio gwerth cychwynnol TH1 yn ôl y gyfradd baud:
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)
Gan dybio bod yr amledd grisial yn 11.0592MHz, y gyfradd baud yw 9600, SMOD = 0, beth ddylai gwerth cychwynnol TH1 fod? Yn ôl y fformiwla uchod, gellir ei gyfrifo TH1 = 256-11059200 / (9600 * 32 * 12) = 0xFD.





