Sarjaliikenteen tiedonsiirtonopeuden asetus ja tiedonsiirtonopeuden algoritmi
Kun käytetään yhden sirun mikrotietokoneen sarjaliikennettä, baudinopeus on asetettava ja baudinopeus olisi asetettava arvoon 9600, 19200 ...? Onko tämä perinne? Mistä? Vastaava kideoskillaattori on myös yleensä 11,0592MHZ.
Onko se ensin asetettava kideoskillaattori ja asetettava sitten baudinopeus tai asetettava ensin baudinopeus ja asetettava sitten kideoskillaattori. Miksi tämä olisi asetettava?
On kaksi luotettavaa lausuntoa:
1: Sähkön, siirtovälineen jne. Fyysisten ominaisuuksien mukaan yhdistetty sarjaportin käytön vaatimuksiin
Tehokkaan viestinnän varmistamiseksi sähkön, siirtovälineen jne. Fyysisten ominaisuuksien, yhdistettynä sarjaportin käytön vaatimuksiin, määritetään, että RS232: n maksimilähetysnopeus voi olla vain 115200 ja sen jälkeen saadaan kahdella vaiheella saada 57600, 28800, 19200; sopeutumaan näihin tasoihin, suunnittele vastaava kristallitaajuus.
2: Tähän määräytyvät tietoliikennelinjan ominaisuudet.
Puhelinlinjan kaistanpäästö on 300 - 3 KHz. Tuolloin hevoset kytkeytyivät ensimmäistä kertaa modeemiin, joten 2400HZ-signaalia käytetään, vastaava baudinopeus on 2400. Koska perustaajuus määritetään, parannettu läpäisyasetus , nopeuden menetelmä kerrotaan 2400 jälkeen, joten muodostuminen 9600,19200. . . .
Joko niin, on baudinopeus ja sitten kristallitaajuus.
Yhden sirun mikrotietokoneen sarjamuotoisen tiedonsiirtonopeuden laskeminen.
Tilassa 0 ja tilassa 2 sarjaportin baudinopeus on kiinteä ja tila 0 on Fosc / 12. Mode 2 on Fosc / 32 tai Fosc / 64, joka määräytyy PCON-rekisterin SMOD-bitin mukaan.
Tilassa 1 ja tilassa 3 baudinopeus on muuttuva arvo. Baudinopeutta voidaan generoida ajastimella 1 (8052 voidaan luoda ajastuksen 2 avulla). Mikä on baudinopeus? Ajastin 1: n ylivirtausnopeus:
Baudinopeus = (2SMOD / 32) * (ajastimen 1 ylivirtausnopeus)
Huomaa: 2SMOD tässä SMOD on indeksi, SMOD on baudinopeuden kaksinkertainen baudinopeusbitti, tämä bitti on PCON-rekisterissä.
Kun ajastinta 1 käytetään baudinopeusgeneraattorina, on yleensä tarpeen määrittää ajastin 1 toimimaan 8-bittisessä automaattisella uudelleenlataustilassa ja myös poistaa ajastimen 1 keskeytys ja sitten ajastimen 1 ylivuoto laskettua? Ylivirtausnopeus on ylivuodon taajuus. Olettaen, että kiteiden taajuus on 12 MHz ja TH1-arvo on 0xFE, tarvitaan vain kaksi kellopulssia ylivuotolle ja ylivuotokausi on 2us, niin ylivuodon taajuus on 500 kHz . Ajastinosan mukaan ajoitusajalla on seuraava kaava:
* (12 / kristallitaajuus (Hz)) (s) = (256-TH1) * (12 / OSC_FREQ ( Hz)) (t).
Tällöin ylivuodon tiheys on luonnollisesti:
OSC_FREQ (Hz) / ((256-TH1) * 12).
Joten lopullinen push-to-baud rate on:
(2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12)).
Baudinopeuden laskentakaava on saatavissa ja luonnollisesti TH1: n alkuarvo voidaan johtaa baudinopeuden mukaan:
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)
Olettaen, että kiteen taajuus on 11,0592 MHz, baudinopeus on 9600, SMOD = 0, minkä TH1 alkuarvon pitäisi olla? Edellä olevan kaavan mukaan voidaan laskea TH1 = 256-11059200 / (9600 * 32 * 12) = 0xFD.





