Pengaturan baud rate komunikasi serial dan algoritma baud rate
Ketika komunikasi serial dari mikrokomputer chip tunggal digunakan, baud rate harus diatur, dan baud rate harus diatur ke 9600, 19200 ...? Apakah ini tradisi? Dari apa? Osilator kristal yang terkait juga umumnya 11,0592 MHZ.
Apakah pertama-tama mengatur osilator kristal dan kemudian mengatur baud rate atau mengatur baud rate terlebih dahulu dan kemudian mengatur osilator kristal. Mengapa ini harus diatur?
Ada dua pernyataan yang dapat dipercaya:
1: Menurut karakteristik fisik listrik, media transmisi, dll dikombinasikan dengan persyaratan penggunaan perangkat serial
Untuk memastikan komunikasi yang efektif, sesuai dengan karakteristik fisik listrik, media transmisi, dll dikombinasikan dengan persyaratan penggunaan perangkat serial, ditentukan bahwa tingkat transmisi maksimum RS232 hanya dapat 115200, dan kemudian diperoleh dengan dua langkah untuk mendapatkan 57600, 28800, 19200; untuk beradaptasi dengan tingkat ini, desain frekuensi kristal yang sesuai.
2: Ini ditentukan oleh karakteristik jalur telekomunikasi.
Bandpass dari saluran telepon adalah 300--3KHz. Pada saat itu, hayes pertama kali terlibat dalam modem, sehingga sinyal 2400HZ digunakan, baud rate yang sesuai adalah 2400. Karena frekuensi dasar ditentukan, lulus ditingkatkan mengadopsi metode tingkat dikalikan pada 2400 kemudian, jadi pembentukan 9600.19200. . . .
Either way, ada baud rate dan kemudian frekuensi kristal.
Perhitungan baud rate komunikasi serial mikrokomputer chip tunggal.
Dalam mode 0 dan mode 2, baud rate port serial ditetapkan, dan mode 0 adalah Fosc / 12. Mode 2 adalah Fosc / 32 atau Fosc / 64, yang ditentukan oleh bit SMOD dari daftar PCON.
Dalam Mode 1 dan Mode 3, baud rate adalah nilai variabel. Kecepatan baud dapat dihasilkan oleh Timer 1 (8052 dapat dihasilkan oleh Timing 2). Berapa baud rate? Baud rate dengan waktu 1 tingkat overflow yang akan ditentukan:
Baud Rate = (2SMOD / 32) * (Timer 1 Overflow Rate)
Catatan: 2SMOD di sini SMOD adalah indeks, SMOD adalah bit baud rate double baud rate, bit ini ada dalam daftar PCON.
Ketika menggunakan timer 1 sebagai generator baud rate, biasanya perlu mengkonfigurasi timer 1 untuk beroperasi dalam mode auto-reload 8-bit, dan juga untuk menonaktifkan timer 1 interrupt, lalu overflow timer 1 bagaimana cara menghitung? Laju overflow adalah frekuensi overflow. Dengan asumsi frekuensi kristal 12MHz dan nilai TH1 adalah 0xFE, hanya dua pulsa clock yang akan diperlukan untuk overflow, dan periode overflow adalah 2us, maka frekuensi overflow adalah 500KHz. Menurut bagian timer, waktu waktu memiliki rumus berikut:
Waktu waktu = (nilai hitungan maksimum - nilai awal counter) * siklus mesin = (nilai hitungan maksimum - nilai awal counter) * (12 / frekuensi kristal (Hz)) (s) = (256-TH1) * (12 / OSC_FREQ ( Hz)) (s).
Maka frekuensi overflow secara alami:
OSC_FREQ (Hz) / ((256-TH1) * 12).
Jadi tingkat push-to-baud terakhir adalah:
(2SMOD / 32) * (OSC_FREQ (Hz) / ((256-TH1) * 12)).
Rumus perhitungan baud rate tersedia, dan tentu saja, nilai awal TH1 dapat diturunkan sesuai dengan baud rate:
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)
Dengan asumsi frekuensi kristal adalah 11,0592 MHz, baud rate adalah 9600, SMOD = 0, apa yang seharusnya menjadi nilai awal TH1? Menurut rumus di atas, dapat dihitung TH1 = 256-11059200 / (9600 * 32 * 12) = 0xFD.





