Berapa tarif UART standar yang ada?

33

Saya tahu 9600, 19200, 38400, 57600, 115200 dan 1.8432 Mbaud, tetapi tidak ada yang lain. Mengapa nilai-nilai ini digunakan, dan itu hanya dua kali lipat setiap kali atau ada sesuatu yang lebih kompleks terjadi (misalnya, 38400 empat kali lipat tidak 115200 baud?)

Alasan saya mengajukan pertanyaan ini adalah saya merancang sesuatu yang mungkin harus berinteraksi dengan berbagai baud rate yang berbeda. Ini akan mulai pada 9600, dan kemudian beralih ke kecepatan baud tertentu. Tetapi saya tidak dapat mendukung tarif sewenang-wenang karena dsPIC33F yang saya gunakan tidak mendukung tarif sewenang-wenang karena terbatas pada penghitung turun BRG 16-bit. Ini serupa dalam hal ini dengan banyak prosesor lainnya.

Thomas O
sumber
Dalam praktiknya, penghitung 16 bit plus scaler pra / pasca lebih dari cukup untuk mendapatkan "cukup dekat" ke tingkat baud yang berubah-ubah. Serial UART dapat mentolerir sedikit ketidakcocokan baud rate.
Peter Green
Uart dimulai di tengah bit START dan harus tetap di dekat tengah bit STOP setelah membuat serial 7-10 bit. Yang membuat presisi jam minimal sekitar 2-3%, lebih disukai lebih baik untuk menangani noise, jitter, penyimpangan dalam frekuensi sumber ...
TEMLIB

Jawaban:

36

Itu sudah lama sekali dimulai dengan teletype - saya pikir 75 baud. Maka itu sebagian besar telah berlipat ganda sejak itu, dengan beberapa kelipatan fraksi (x1.5), misalnya 28.800, di mana ada kendala pada teknologi modem saluran telepon yang tidak cukup memungkinkan untuk menggandakan.

Nilai kristal standar berasal dari baudrate awal ini, dan ketersediaannya menentukan tingkat di masa depan. Misalnya,

7.3728MHz16=460,800baud7.3728MHz64=115,200baud.

Sebagian besar UARTS menggunakan jam 2n×16 dari baudrate, bagian yang lebih modern (misalnya NXP LPC) memiliki pembagi fraksional untuk mendapatkan rentang yang lebih luas dengan menggunakan kelipatan non-biner.

Standar umum lainnya adalah 31.250 (MIDI) dan 250K (DMX), keduanya cenderung dipilih sebagai kelipatan jam 'putaran' yang bagus seperti 1MHz dll.

mikeselectricstuff
sumber
4
Saya tidak berpikir pembagi fraksional adalah untuk mendapatkan bitrate yang tidak standar, melainkan bitrate standar dari frekuensi clock MCU yang tidak standar.
Johan.A
3
Saya diperbaharui dua tahun 1926 teletype, kembali di perguruan tinggi (1976) dan ya mereka berlari sekitar 75 baud. Mereka dicap sebagai teletype baudot. Dicolokkan ke 110vac dan motor menyediakan waktunya, dengan koneksi listrik di antara mereka. Saya mencelupkannya ke bensin untuk membersihkannya. (Beri aku waktu istirahat - umurku 18 tahun. Tapi berhasil!) Ctrl-G membunyikan bel yang jujur ​​dan baik. Sayangnya, saya bahkan tidak ingat dengan siapa saya memberikannya. :-( Jadi, ya, Anda akan mengetik pada keyboard mekanik, secara mekanis akan cerita bersambung keystrokes Anda, dan membuat-dan-pecah kontak yang sisi lain membaca.
Doug Null
Yay, Roaring '20-an! Teknologi apa yang berkualitas untuk bertahan 50 tahun, dan berakhir di gudang John Silva di Hayward, California.
Doug Null
32

RealTerm, program terminal Windows freeware, mencantumkan tarif UART ini di menu Baud-nya:

110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600

Namun ini sebenarnya bit per detik (bps), bukan baud - lihat di bawah.

110 baud digunakan oleh 8-level Teletypes seperti ASR-33. Saya tidak tahu di mana 150 Baud digunakan, tetapi ini merupakan penggandaan dari 75 baud, yang biasa digunakan (bersama dengan 60 baud) untuk TTY 5 tingkat.

300 bps adalah standar untuk modem telepon pertama yang banyak digunakan pada tahun 1960-an. Sejumlah 30 karakter per terminal kedua muncul pada waktu yang bersamaan.

Di atas 300 bps / 300 baud, yang menggunakan pengalihan frekuensi sederhana (FSK), angka untuk bps dan baud (simbol atau nada per detik) tidak sama. Misalnya, modem 1200 bps benar-benar berjalan pada 600 baud, dan modem 4800 bps berjalan pada 1600 baud. Lihat tabel di bawah Bandwidth di artikel ini . Perbedaannya adalah karena selain menggunakan sejumlah pulsa nada per detik, penguncian fase-shift dan metode lain digunakan untuk mengekstraksi bandwidth tambahan dari baud rate yang sama untuk mendapatkan bps yang lebih tinggi dan lebih tinggi. (Jadi modem 56K sebenarnya hanya berjalan pada 8000 baud.)

Seperti yang Anda lihat, daftar tarif UART pada dasarnya dimulai pada 75 dan terus berlipat ganda (melompati 600), hingga mencapai 38400, di mana dikalikan 1,5 untuk mendapatkan 57600. 56K bps adalah batas untuk saluran telepon analog. Tingkat yang lebih tinggi 115200 ke atas (sekali lagi dua kali lipat mulai dari 57600) digunakan untuk koneksi kabel.

Seperti disebutkan mikeselectricstuff, 14400 dan 28800 bps diperkenalkan sebagai 1,5 x 9600 dan 1,5 x 19200 ketika kecepatan modem tidak dapat digandakan pada saat itu, tetapi jarang digunakan lagi.

tcrosley
sumber
7
Bukan untuk menjadi luar biasa, tetapi program hanya dapat mendukung kecepatan yang dimungkinkan oleh perangkat keras. Bahkan mungkin tidak repot bertanya dan hanya mencantumkan kecepatan standar. Menanyakan perangkat keras saya zip(*serial.Serial('COM10').getSupportedBaudrates()),, itu menjawab:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
Nick T
2
Saya menggunakan coupler akustik setengah dupleks 600 bit / s pada tahun delapan puluhan. 75 bit / s digunakan dalam sistem BTX jerman dalam arah pengunggahan untuk waktu yang lama, unduhan adalah 1200 bit / s.
starblue
2
Saya juga melihat 62,5 kbaud. Sebenarnya, itu juga tergantung pada jam utama Anda, Anda dapat menghitung baudrate apa yang akan menyebabkan kesalahan yang cukup rendah.
vsz
5

Untuk waktu yang lama, sudah umum untuk menggunakan submultiples dari 115.200 untuk komunikasi - baik kekuatan dari dua submultiples dari 38.400 atau 57.600 atau 115.200. Sebagian besar perangkat keras PC mendukung tarif tersebut. Beberapa perangkat keras PC dapat mendukung 230.400 atau 460.800. Perhatikan bahwa banyak pengontrol yang disematkan seperti kecepatan data yang merupakan sub-kelipatan dari kecepatan clock mereka sendiri, dan beberapa chip USB-ke-serial dapat mendukung submultiple integer dengan 3,000,000bps, sehingga kecepatan seperti 1,000,000bps atau 1,500,000bps mungkin akan menjadi lebih umum untuk perangkat untuk terhubung ke PC melalui chip USB.

BTW, satu tarif lain yang layak disebutkan: 31.250bps adalah tarif yang digunakan untuk MIDI standar.

supercat
sumber
4

IBM PC asli memiliki 8250 UART. Ini mengambil jam 1,8432 MHZ dan membaginya dengan bilangan bulat untuk menghasilkan jam internalnya, dan jam itu berjalan pada 16 siklus ke bit.

Pengaturan 1 di register pembagi memberi Anda 115.200, 2 mendapat 57.600, 3 mendapat 38.400, 6 mendapat 19.200, dll.

Taruhan terbaik Anda adalah menggunakan jam yang berjalan di beberapa kelipatan 1,8432 MHz dengan DSPIC.

Jasen
sumber