Menguasai UART: Universal Asynchronous Receiver/Transmitter Dijelaskan
UART, atau Universal Asynchronous Receiver‑Transmitter, tetap merupakan protokol hardware yang paling banyak digunakan untuk komunikasi titik-ke-titik. Panduan ini memandu Anda dalam mengonfigurasi UART, memahami format paketnya, dan mengimplementasikan protokol frame aman yang penting selama pengembangan produk.
Saat dikonfigurasi dengan benar, UART dapat mendukung berbagai aliran data serial sambil hanya membutuhkan dua kabel. Penyambungan minimal ini mengurangi biaya dan kompleksitas, membuat UART ideal untuk sistem embedded, mikrokontroler, dan PC.
Kami akan membahas dasar-dasar UART—transmisi paket, format frame standar, dan frame kustom yang menambahkan nilai keamanan dan kepatuhan. Artikel ini juga menawarkan langkah praktis untuk menafsirkan datasheet dan mengonfigurasi periferal UART.
Pada akhirnya, Anda akan memiliki pemahaman yang kuat tentang standar UART dan cara memanfaatkannya untuk meningkatkan kemampuan produk baru.
“Masalah terbesar dalam komunikasi adalah ilusi bahwa komunikasi telah terjadi.”
—George Bernard Shaw
Protokol komunikasi menyusun interaksi antara perangkat. Mereka mendefinisikan bahasa umum yang memastikan data ditukar dengan andal. Di dunia embedded, UART adalah de facto standar untuk komunikasi hardware perangkat-ke-perangkat.
Tidak seperti protokol berbasis bus, UART hanya membutuhkan garis transmit (Tx) dan receive (Rx), menyederhanakan desain papan dan mengurangi konsumsi daya.
Meskipun populer, banyak implementasi yang mengabaikan desain frame yang tepat, yang dapat merugikan performa dan keamanan. Protokol frame yang terdefinisi dengan baik adalah kunci pertukaran data yang bebas error dan terlindungi.
Komunikasi serial asinkron berarti tidak ada garis jam bersama; alih-alih, transmitter dan receiver mengandalkan baud rate yang cocok untuk tetap sinkron.
Antarmuka
Gambar 1. Dua UART berkomunikasi langsung.
Setiap UART mengekspos dua pin khusus:
Transmitter (Tx)
Receiver (Rx)
Gambar 2. UART dihubungkan dengan bus data.
Dalam susunan ini, UART transmit mengonversi data parallel dari bus menjadi aliran bit serial pada garis Tx-nya. UART receive mensampling aliran ini, merakit ulang bit menjadi data parallel untuk bus lokal.
Kedua sisi harus beroperasi pada baud rate yang sama—kecepatan dalam bit per detik. Ketidakcocokan dapat menyebabkan error framing; UART tipikal mentoleransi deviasi baud rate hingga 10%.
Karena UART asinkron, transmitter menggerakkan aliran bit berdasarkan jamnya sendiri, sementara receiver mensampling bit masuk menggunakan jam internalnya. Start bit, data frame, parity opsional, dan stop bits secara kolektif mendefinisikan paket.
Transmisi Data
Setiap paket UART berisi:
Start Bit: Transisi dari tinggi ke rendah yang menandakan awal frame.
Data Frame: 5–8 bit payload, LSB pertama. Jika parity digunakan, frame bisa 9 bit.
Parity Bit (opsional): Parity genap atau ganjil untuk mendeteksi error satu bit.
Stop Bits: Satu hingga dua bit level tinggi yang menandai akhir frame.
Gambar 3. Struktur paket UART.
Gambar 4. Ilustrasi start bit.
Gambar 5. Contoh data frame.
Gambar 6. Penggunaan parity bit.
Gambar 7. Ilustrasi stop bit.
Alur Transmisi
1. Parallel Input: Transmitter menerima data parallel dari bus.
Gambar 8. Bus data memberi makan transmitter.
2. Frame Assembly: Transmitter menambahkan start bit di depan, menambahkan parity dan stop bits, membentuk paket lengkap.
Gambar 9. Paket UART di transmitter.
3. Serial Transmission: Paket dikirim bit demi bit pada baud rate yang dikonfigurasi.
Gambar 10. Transmisi UART berkelanjutan.
4. Reception: Receiver membuang framing bits dan merekonstruksi data asli.
Gambar 11. Paket di receiver.
5. Parallel Output: Receiver mengonversi data serial kembali menjadi parallel dan meneruskannya ke bus lokal.
Gambar 12. Aliran data ke bus penerima.
Protokol Frame Kustom
Sementara frame UART standar cukup untuk banyak use case, menambahkan lapisan frame kustom meningkatkan keamanan dan memastikan hanya perangkat yang dituju yang berkomunikasi.
Dengan menyematkan header, trailer, dan CRC unik, setiap perangkat dapat memvalidasi bahwa pakat berasal dari sumber terpercaya. Ini sangat berharga di lingkungan yang kritis keselamatan atau aman.
Gambar 13 menunjukkan frame kustom tipikal:
Gambar 13. Contoh protokol frame UART.
Frame biasanya berisi:
Header 1 (0xAB) dan Header 2 (0xCD) – pengidentifikasi unik.
Command (CMD) – menentukan tindakan.
Data Length (DL) – jumlah byte payload.
Payload (Data n) – data aktual.
Trailer 1 (0xE1) dan Trailer 2 (0xE2) – penutup penanda.
CRC – nilai pengecekan error yang dihitung di kedua ujung.
Kedua sisi harus menggunakan aturan framing yang sama; jika tidak, paket akan ditolak.
Langkah Konfigurasi UART
1. Tinjau datasheet untuk memahami antarmuka UART dan penugasan pin.
Gambar 14. Cuplikan datasheet mikrokontroler.
2. Periksa memory map untuk register dan alamat UART.
Gambar 15. Memory map mikrokontroler.
3. Definisikan parameter port UART—data bits, parity, stop bits, dan mode operasi. Deskripsi contoh:
• 5–8 data bits • 1, 1½, atau 2 stop bits • None, even, atau odd parity • Full-duplex, DMA-enabled, asynchronous transfer
4. Hitung baud rate menggunakan clock periferal (PCLK) dan register oversampling dan divider MCU. Rumus umum adalah:
di mana: OSR – oversample rate (0–3) DIV – baud-rate divider (1–65535) M – fractional divider MSB (1–3) N – fractional divider LSB (0–2047)
Tabel contoh di bawah ini mengilustrasikan pengaturan baud rate untuk PCLK 26 MHz dan 16 MHz.
Tabel 2. Contoh Baud Rate Berdasarkan PCLK 26 MHz
Baud Rate
OSR
DIV
DIVM
DIVN
9600
3
24
3
1078
115200
3
4
1
1563
Tabel 3. Contoh Baud Rate Berdasarkan PCLK 16 MHz
Baud Rate
OSR
DIV
DIVM
DIVN
9600
3
17
3
1078
115200
3
2
2
348
5. Konfigurasi register UART sesuai datasheet. Register kunci meliputi:
Tabel 4. Deskripsi Register UART
Nama
Deskripsi
UART_DIV
Divider baud rate
UART_FIBR
Kontrol baud rate fraksional
UART_LCR2
Register kontrol baris (OSR, stop bits, parity)
Setelah register diprogram, UART dapat mentransmisikan dan menerima data dengan andal.
Mengapa UART Penting
Memahami UART sangat penting bagi insinyur yang merancang link serial yang tangguh, hemat biaya, dan throughput tinggi. Penguasaan framing, perhitungan baud rate, dan konfigurasi register memastikan integritas data dan keandalan sistem.
Use Case Umum
Debugging – Log pesan selama pengembangan firmware.
Manufacturing – Diagnostik real-time dan log trace.
Over-the-air Updates – Kirim pembaruan firmware ke perangkat embedded.
Verification – Validasi fungsionalitas perangkat sebelum pengiriman.
Referensi
“Basics of UART Communication.” Electronics Hub, Juli 2017. Campbell, Scott. “Basics of UART Communication.” Circuit Basics. Keim, Robert. “Back to Basics: The Universal Asynchronous Receiver/Transmitter.” All About Circuits, Desember 2016. “What Is UART Protocol? UART Communication Explained.” Arrow.