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?
serial
clock-speed
baudrate
soundslikefiziks
sumber
sumber
Jawaban:
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:
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.
sumber
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.)
sumber