Impostazione della velocità di trasmissione della comunicazione seriale e algoritmo della velocità di trasmissione
Quando viene utilizzata la comunicazione seriale del microcomputer a chip singolo, è necessario impostare la velocità di trasmissione e impostare la velocità di trasmissione su 9600, 19200 ...? È una tradizione? Da cosa? Anche l'oscillatore di cristallo corrispondente è generalmente 11.0592MHZ.
È prima di impostare l'oscillatore di cristallo e quindi impostare la velocità di trasmissione o impostare la velocità di trasmissione prima e quindi impostare l'oscillatore di cristallo. Perché dovrebbe essere impostato?
Ci sono altre due dichiarazioni affidabili:
1: In base alle caratteristiche fisiche dell'elettricità, dei mezzi di trasmissione, ecc. Combinati con i requisiti di utilizzo del dispositivo seriale
Al fine di garantire una comunicazione efficace, in base alle caratteristiche fisiche dell'elettricità, dei mezzi di trasmissione, ecc. Combinati con i requisiti di utilizzo dei dispositivi seriali, si determina che la velocità massima di trasmissione di RS232 può essere solo di 115200 e quindi ottenuta con due passaggi per ottenere 57600, 28800, 19200; per adattarsi a questi tassi, progettare la frequenza di cristallo corrispondente.
2: questo è determinato dalle caratteristiche della linea di telecomunicazione.
Il passabanda della linea telefonica è 300--3KHz. A quel tempo, i hayes si sono impegnati prima nel modem, quindi il segnale 2400HZ utilizzato, la velocità di trasmissione corrispondente è 2400. Poiché la frequenza di base è determinata, il pass migliorato ha adottato il metodo della frequenza moltiplicato sulla base di 2400 dopo, quindi la formazione di 9600.19200. . . .
Ad ogni modo, c'è una velocità di trasmissione e quindi una frequenza di cristallo.
Calcolo della velocità di trasmissione della comunicazione seriale del microcomputer a chip singolo.
In modalità 0 e modalità 2, la velocità di trasmissione della porta seriale è fissa e la modalità 0 è Fosc / 12. La modalità 2 è Fosc / 32 o Fosc / 64, che è determinata dal bit SMOD del registro PCON.
In Modalità 1 e Modalità 3, la velocità di trasmissione è un valore variabile. Il baud rate può essere generato dal Timer 1 (8052 può essere generato dal Timing 2). Qual è il baud rate? Baud rate by timer 1 velocità di overflow da determinare:
Baud Rate = (2SMOD / 32) * (Timer 1 Overflow Rate)
Nota: 2SMOD qui SMOD è l'indice, SMOD è il bit baud rate del baud rate, questo bit è nel registro PCON.
Quando si usa il timer 1 come generatore di baud rate, è solitamente necessario configurare il timer 1 per operare in modalità auto-reload a 8 bit e anche per disabilitare l'interrupt del timer 1, quindi il sovraccarico del timer 1 come si calcola? Il tasso di tracimazione è la frequenza di overflow. Supponendo che la frequenza del cristallo sia 12 MHz e il valore TH1 sia 0xFE, saranno necessari solo due impulsi di clock per l'overflow, e il periodo di tracimazione è 2us, quindi la frequenza di overflow è di 500 KHz . Secondo la sezione del timer, il tempo di sincronizzazione ha la seguente formula:
Tempo di cronometraggio = (valore massimo del conteggio - valore iniziale del contatore) * ciclo della macchina = (valore massimo del conteggio - valore iniziale del contatore) * (12 / frequenza cristallina (Hz)) (s) = (256-TH1) * (12 / OSC_FREQ ( Hz)) (s).
Quindi la frequenza di overflow è naturalmente:
OSC_FREQ (Hz) / ((256-TH1) * 12).
Quindi il tasso push-to-baud finale è:
(2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12)).
È disponibile la formula di calcolo della velocità di trasmissione e , naturalmente, il valore iniziale di TH1 può essere calcolato in base alla velocità di trasmissione:
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)
Supponendo che la frequenza del cristallo sia 11.0592 MHz, la velocità di trasmissione è 9600, SMOD = 0, quale dovrebbe essere il valore iniziale di TH1? Secondo la formula sopra, può essere calcolato TH1 = 256-11059200 / (9600 * 32 * 12) = 0xFD.





