Komunikasi Serial UART
Cara Kerja Komunikasi Serial UART Pada Perangkat Mikrokontroller – Salah satu komunikasi serial yang paling banyak digunakan pada mikrokontroller adalah UART atau Universal Asynchronous Receiver Transmitter.
Dalam komunikasi kita akan mengenal pin TX dan RX. TX adalah Transmitter (Pengirim) dan Rx adalah Receiver (Penerima).
Pada komunikasi serial umumnya seperti I2C, kita mengetahui bahwa komunikasi tersebut membutuhkan sebuah sinyal data (SDA) dan sinyal clock (SCL).
Clock digunakan untuk untuk mensinkroknkan data antar perangkat pengirim dan penerima. Jadi antar perangkat kita harus menggunakan 2 kabel sekaligus yaitu SDA dan SCL
Pada komunikasi serial UART, dalam melakukan proses komunikasi, kita menggunakan satu Pin saja. Jika mengirim data gunakan pin TX dan jika menerima data gunakan pin RX.
Ketika kita ingin mengirimkan data dari perangkat A ke perangkat B, maka pin yang digunakan pada perangkat A adalah TX dan perangkat B adalah RX.
Jika kita ingin perangkat B mengirim data ke perangkat A, maka pin yang digunakan pada perangkat B adalah TX dan perangkat A adalah RX.
Komunikasi UART menggunakan 1 kabel saja
Lalu bagiaman caranya penerima (RX) dapat mengetahui dan memahami data yang dikirim oleh pengirim tersebut dengan hanya 1 kabel saja?
Caranya adalah peraturan data pengirim dan penerima harus memiliki nilai yang sama. Adapun peraturan tersebut adalah :
- Kecepatan pengiriman data (baud rate)
- Panjang data (data legth dalam bit)
- Adanya bit Start dan Stop.
Jadi, jika pengirim A kita set baud rate adalah 9600 bps, maka perangkat B kita set juga dengan nilai baud rate 9600.
Begitu juga dengan panjang data, jika data pengirim A kita gunakan adalah 8 bit, di penerima B kita set juga untuk menerima data 8-bit.
Agar penerima B mengetahui adanya data yang dikirim dari perangkat A, maka penerima B harus membaca kondisi pulsa yang dikirimkan dari pengirim A, apakah HIGH atau LOW.
Apa Hubungan Antara Baudrate dan Data?
Nah, misalnya kita gunakan pengaturan kecepatan transfer data yang sama antara perangkat A dan perangkat B dengan nilai baud rate 9600 bps, maka 1/9600 = 104us (dibaca 104 mikro second).
Jadi, perangkat A akan menggunakan waktu 104us untuk membuat satu siklus pulsa data baik LOW atau HIGH. Dan pulsa yang diterima perangkat B akan dibaca per 104us juga.
Contohnya, Perangkat B mendapatkan sinyal pulsa yang dikirimkan dari perangkat A, maka perangkat B akan membaca pulsa tersebut selama 104us.
Jika pulsa yang terbaca dalam rentang waktu 104us adalah LOW, maka data adalah 0, kemudian dibaca lagi selama 104us kedepan, misalnya pulsa yang terbaca adalah HIGH, maka data adalah 1.
Bagaimana Penerima dapat memproses data tersebut?
Jika Perangkat A ingin mengirimkan data 8-bit pada pin TX, maka data akan dikirimkan adalah 9-bit, satu data paling depan adalah bit Start.
Bit Start adalah LOW (0) dan bit Stop adalah HIGH (1).
Jika perangkat B, membaca pulsa selama 104us pertama dan didapatkan bahwa data adalah 0, maka perangkat B akan membaca 8 data setelahnya.
Lama nya waktu untuk membaca data sebanyak 8 bit kedepan adalah 832us, karena setiap 1 data bit akan dibaca per 104us * 8data.
Jika perangkat B membaca sinyal pertama selama 104us dan didapatkan data adalah 1, maka perangkat B tidak membaca data seterusnya.
Semoga artikel ini bermanfaat.