3.18. Dasar-dasar UART¶
UART (Universal Asynchronous Receiver-Transmitter) adalah cara tertua dan paling sederhana untuk memindahkan byte antara dua mikrokontroler, atau antara mikrokontroler dan PC host. Dua kabel membawa data -- satu untuk setiap arah -- dan ground bersama mengembalikan sinyal. Tidak ada sisi yang menjalankan clock bersama; keduanya menyepakati laju baud di awal dan memulihkan timing bit dari jalur data itu sendiri.
3.18.1. Bingkai¶
Setiap karakter pada kabel dibungkus dalam sebuah bingkai: sebuah bit awal, bit-bit data, bit paritas opsional, dan satu atau dua bit berhenti.
Satu bingkai UART: sebuah bit awal, delapan bit data, dan sebuah bit berhenti, masing-masing satu periode bit (1 / baudrate detik) lebarnya.¶
Jalur berada dalam keadaan idle tinggi. Penerima mengamati tepi turun, yang menandai awal bingkai baru. Kemudian ia mengambil sampel jalur data sekali per periode bit -- biasanya di tengah setiap bit -- dan merakit ulang bit-bit menjadi sebuah karakter. Bit berhenti mengembalikan jalur ke keadaan idle sehingga bit awal berikutnya dapat terdeteksi.
3.18.2. Laju baud¶
Periode bit -- dan kecepatan tautan -- ditentukan oleh laju baud, jumlah bit per detik. 9600, 19200, 38400, 57600, 115200, 230400, 460800 dan 921600 adalah nilai-nilai standar; 115200 adalah nilai default yang paling umum. Kedua ujung harus menyepakati laju baud dalam beberapa persen atau penerima mengambil sampel bit pada titik yang salah dan data kembali dalam kondisi kacau.
Laju baud yang lebih tinggi memindahkan lebih banyak data per detik tetapi lebih sensitif terhadap panjang kabel, kapasitansi, dan presisi clock di setiap ujung. Untuk tautan pendek antara dua board di meja kerja yang sama, 115200 hingga 921600 bekerja dengan nyaman.
3.18.3. Pengkabelan¶
Sebuah tautan UART menggunakan tiga kabel:
Pengkabelan UART: TX pada satu board terhubung ke RX pada board lain, dan kedua ground dihubungkan bersama.¶
TX → RX, dua arah. Pin transmit setiap board adalah pin receive board lainnya. Kesalahan umum pemula adalah mengkabelkan TX → TX -- dua output saling bertentangan, tanpa data pada kedua penerima.
Ground bersama. Level sinyal direferensikan ke ground, sehingga kedua board harus memiliki ground bersama atau penerima melihat tegangan yang salah pada jalur.
3.18.4. Level tegangan dan lapisan fisik¶
Level sinyal pada pin UART kamera adalah 3.3 V CMOS: ground untuk logika nol, 3.3 V untuk logika satu. Apa pun yang berbicara UART CMOS 3.3 V -- mikrokontroler lain, adaptor USB-ke-serial yang diatur ke 3.3 V, modul GPS 3.3 V -- dapat dikabelkan langsung.
Catatan
Perangkat UART CMOS 5 V (mikrokontroler yang lebih lama, modul GPS tertentu, beberapa breakout sensor yang lebih lama) menggunakan framing UART yang sama pada level logika 5 V. Mengkabelkan mereka langsung ke kamera tidak aman: TX 5 V yang mengendalikan RX kamera melebihi tegangan input maksimum-absolut pada kamera yang tidak toleran 5 V, dan TX 3.3 V kamera mungkin tidak mencapai ambang batas tinggi perangkat 5 V untuk logika satu yang bersih.
Menerjemahkan antara dua tegangan membutuhkan driver jalur aktif -- IC level-shifter bidireksional khusus dengan transistor drive-nya sendiri di kedua sisi setiap jalur. Penggeser MOSFET-dan-pull-up pasif dari Penggeseran level tidak cukup di sini: tepi naik mereka bergantung pada pengisian jalur melalui resistor, yang baik pada kecepatan saklar tetapi jauh terlalu lambat untuk UART. Pada 115200 baud setiap bit berlangsung sekitar 8 µs, dan slew RC penggeser pasif mengaburkan satu bit ke bit berikutnya.
Driver jalur aktif menghasilkan tepi yang bersih di kedua arah pada kecepatan UART penuh. Pilih komponen yang dirating untuk laju baud yang akan digunakan tautan, kabelkan TX dan RX kamera ke sisi 3.3 V penggeser, dan kabelkan TX dan RX perangkat 5 V ke sisi 5 V penggeser.
Tiga lapisan fisik yang lebih lama menggunakan framing yang sama tetapi tegangan yang berbeda, dan membutuhkan konverter level antara mereka dan mikrokontroler 3.3 V:
RS-232. Digunakan oleh port serial pada PC desktop dan beberapa peralatan industri. Jalur berayun antara kira-kira
±5 Vdan±15 V, dengan idle pada rel negatif. Polaritas terbalik dan tegangan tinggi dibandingkan CMOS; chip dari keluarga MAX232 / MAX3232 (atau sejenisnya) menangani konversi.RS-422. Standar pensinyalan diferensial untuk tautan titik-ke-titik (satu driver, hingga sepuluh penerima). Driver mengirim pada sepasang kabel seimbang; penerima melihat perbedaan di antara keduanya dan mengabaikan noise mode-umum di sepanjang jalan. Tautan full-duplex menggunakan dua pasang -- satu untuk setiap arah. RS-422 mencapai puluhan meter hingga satu kilometer tergantung pada laju baud, dan chip transceiver RS-422 duduk antara TX / RX kamera dan pasangan seimbang.
RS-485. Saudara multi-drop dari RS-422 -- pensinyalan diferensial yang sama, tetapi dirancang untuk menempatkan hingga 32 driver dan penerima pada satu bus. Sebagian besar tautan adalah half-duplex pada sepasang kabel tunggal, dengan driver dan penerima setiap node berbagi kabel yang sama dan perangkat lunak yang mengatur siapa yang berbicara. Digunakan dalam bus otomasi industri (Modbus, DMX512, Profibus) di mana kabel berjalan jauh dan noise parah; chip transceiver RS-485 duduk antara TX / RX kamera dan pasangan diferensial.
Keduanya masih mengirim bingkai UART pada level bit yang mendasarinya. Konfigurasi machine.UART kamera (laju baud, bit, paritas, bit berhenti) sama terlepas dari lapisan fisik mana yang membawa sinyal di sisi lain transceiver.