Apakah baudrate dalam komunikasi serial (USB atau RS232) harus tepat?

8

Dalam komunikasi serial, apakah baudrate berarti kita harus menggunakan kecepatan clock yang tepat atau rentang kecepatan yang dapat kita gunakan?

dan jika itu nilai yang tepat, seberapa tepat seharusnya? misalnya, dapatkah saya menggunakan 555 sebagai jam dari rangkaian komunikasi serial?

soundslikefiziks
sumber
UART biasanya dapat mentolerir penyimpangan sekitar ~ 3%. Tergantung pada yang spesifik.
Eugene Sh.
Untuk USB, itu akan ditentukan dalam standar, yang gratis untuk diunduh.
The Photon

Jawaban:

6

Pengaturan waktu harus cukup akurat sehingga tidak terpisah sebelum protokol melakukan sinkronisasi ulang.


UART menyinkronkan ulang serial pada setiap byte dan byte sekitar 10 bit (8 bit data plus start dan stop). Kami menganggap bahwa UART kami menargetkan bagian tengah dari setiap bit. Jika semuanya sempurna dan hanya satu ujung yang tidak akurat yang memungkinkan perbedaan sekitar 5% antara kedua ujung tautan.

Namun:

  1. Kedua ujung tautan mungkin tidak akurat relatif terhadap nominal. Dalam kasus terburuk satu ujung mungkin di bawah nominal sedangkan yang lainnya lebih dari nominal.
  2. Mungkin ada ketidakakuratan sistematis. Sebagai contoh, sebagian besar UARTS memiliki kisaran pengaturan generator baud rate yang terbatas.
  3. UART Anda didasarkan pada jam master dengan kecepatan terbatas. Bahkan jika clocking dan generator baud rate sempurna ini akan menghasilkan itu tidak mengenai bagian tengah yang tepat dari setiap bit.

Intinya adalah bahwa kesalahan 1% pada jam Anda hampir pasti baik-baik saja. Kesalahan 5% hampir pasti merupakan masalah. Di antara kedua angka itu mungkin atau mungkin tidak menjadi masalah tergantung pada gambaran keseluruhan.

Itu adalah tugas berat untuk osilator RC. Katakanlah R Anda memiliki toleransi 1% dan C Anda memiliki toleransi 2%. Itu memberi sekitar 3% toleransi untuk konstanta waktu jaringan RC dan itu sebelum Anda berpikir tentang kesalahan yang diperkenalkan oleh chip driver Anda.

Jadi intinya adalah Anda harus melihat resonator kristal atau keramik.


Sedangkan untuk USB saya tidak memiliki pengalaman untuk menganalisis dari prinsip pertama tetapi https://www.silabs.com/community/interface/knowledge-base.entry.html/2004/03/15/usb_clock_tolerance-gVai mengatakan 1,5% untuk kecepatan rendah dan 0,25% untuk kecepatan penuh.

Peter Green
sumber
Jika seseorang dapat memprogram baud rate dalam 3% atau langkah-langkah yang lebih halus dan dapat menggunakan urutan "pelatihan" yang sesuai, akurasi RC mungkin tidak menjadi masalah. Jika seseorang tahu bahwa ujung yang lain akan bergantian mengirim 0xF8 dan 0xF0 berulang-ulang (rendah untuk empat dan lima kali bit, masing-masing) menetapkan tingkat baud seseorang 33% lebih cepat harus menyebabkan seseorang secara konsisten menerima 0xF0 (5,33 bit kali) dan 0x80 (6,67 bit) waktu). Menerima nilai-nilai lain akan membuat orang tahu bahwa ia lebih cepat atau lebih lambat daripada kecepatan "33% lebih", sementara penerimaan 0xF0 0x80 berulang akan menunjukkan bahwa seseorang harus mengurangi kecepatan 25% dan memulai komunikasi nyata.
supercat
8

The UART biasanya digunakan dalam RS232-jenis sistem seri bekerja dengan sampling data baris di suatu tempat pertengahan bit menurut sebuah divisi dari yang telah ditetapkan baud rate frekuensi clock dasar. Dengan demikian, jika data dan penerima yang dikirim tidak berada pada frekuensi yang sama, "titik-sampel" akan berkeliaran lebih dekat ke tepi bingkai bit pada bit-bit berikutnya.

Dengan UART normal, panjang bit untuk byte adalah 10 atau 11 bit. 1 Mulai, 8 data, dan 1 atau 2 bit stop. Setengah sedikit mengembara pada bit ke 10 berarti 0,5 / 10 = 5% kesalahan.

Namun, pada kenyataannya toleransi Anda kurang dari itu karena Anda juga perlu menambahkan latensi periode frekuensi dasar Anda yang akan menambahkan offset dari tepi terkemuka bit mulai. Semakin tinggi frekuensi basis Anda, semakin sedikit efek yang dimilikinya.

Sedangkan untuk menggunakan timer 555 untuk tujuan ini, saya tidak akan merekomendasikan itu kecuali Anda berencana untuk memiliki penyesuaian manual di sirkuit 555.

Sebuah USART di sisi lain menggunakan metode kontrol yang lebih kompleks yang upaya untuk mensinkronkan transmisi untuk data yang diterima. Ini bisa melalui menggunakan pola data yang memiliki jam tertanam, dengan menggunakan jam berlalu, atau dengan beberapa bentuk penguncian fase ke tepi data yang diterima. (Meskipun bisa dibilang yang terakhir ini benar-benar pseudo-sinkron.)

Trevor_G
sumber
Karena Anda tahu apa yang Anda bicarakan, saya pikir saya akan menyebutkan singkatan "U S ART", yang seharusnya menjadi bagian dari jawaban ini. Yah, itu akan membuat jawaban lengkap menurut pendapat saya , dan setelah itu layak mendapat +1 dari saya.
Harry Svensson
1
@ HarrySvensson hmm .. Saya setuju .. tetapi mencoba untuk memutuskan adalah bahwa hanya membuat jawabannya lebih membingungkan untuk kemasan 555 OP.
Trevor_G
1
USART berbeda karena dapat sinkron. Dan jika itu digunakan sebagai antarmuka yang sinkron, maka jam adalah umum untuk kedua ujungnya, dan kemudian kecepatan jam tidak masalah.
Gbarry
1
Oh well, itu bisa di komentar saja, terima kasih @barry. Saya tidak keberatan. +1 ke Trevor.
Harry Svensson
@ HarrySvensson Saya memang menambahkan penjelasan bergelombang tangan singkat tentang perbedaan untuk kelengkapan ..
Trevor_G