SPI, I2C, UART: Protokol Komunikasi dan Aplikasinya
Pengembangan mikrokontroler adalah proses kardinal dalam perakitan elektronik. Namun, masukan protokol serial dan antarmuka komunikasi memfasilitasi upaya ini. Dalam artikel ini, kami bermaksud untuk secara menyeluruh menjelajahi protokol komunikasi serial seperti antarmuka SPI I2C UART dan UART. Kami akan menganalisis fitur, kelebihan, kekurangan, dan contoh protokol serial.
1. Antarmuka UART
Apa itu UART?
Gambar 1: Protokol UART pada Arduino
Universal Asynchronous Reception and Transmission (UART) adalah protokol komunikasi serial yang memfasilitasi komunikasi host dengan perangkat tambahan. Utama, memungkinkan transmisi data serial. Selain itu, mampu komunikasi asinkron dan transmisi dua arah.
Protokol sederhana ini juga memiliki dua garis data: satu untuk transmisi (Tx) dan satu lagi untuk penerimaan sinyal (Rx). Biasanya, transmisi sinyal melalui pin digital 0, sementara penerimaan melalui pin digital 1.
Juga, membantu dalam sinkronisasi manajemen komputer dan perangkat serial eksternal.
Bagaimana cara kerjanya?
Gambar 2: Papan USB UART DIY elektronik
Esensinya, UART mengelola komunikasi sinyal antara dua perangkat melalui cara berikut:
- Simplex
- Half Duplex
- Full Duplex
Simplex melibatkan transmisi data satu arah, sementara half-duplex berarti komunikasi tidak bersamaan antara dua perangkat ke arah mana pun. Terakhir, full duplex melibatkan transfer data bersamaan ke arah mana pun.
Secara umum, setelah koneksi, terjadi transfer data dari garis data UART pemancar ke UART penerima. Ini terjadi melalui prinsip berikut;
- Pertama, UART pemancar akan mengonversi data paralel dari perangkat master menjadi bentuk serial untuk transfer ke UART penerima. Sebaliknya, UART penerima mengubah data serial menjadi data paralel untuk digunakan oleh perangkat penerima yang terhubung.
- Karena UART melibatkan komunikasi asinkron, tidak memiliki jam. Oleh karena itu, UART akan menghasilkan bit start dan stop untuk menunjukkan awal dan akhir pesan.
- Kedua UART harus berfungsi pada BAUD rate atau kecepatan transmisi data UART yang sama. Idealnya, ini untuk memastikan waktu yang akurat dari bit data karena perbedaan lebih dari 10% membuat data tidak berguna.
Protokol Kerja UART
Transmisi dan Penerimaan Data
- Untuk transmisi, UART pemancar perlu menerima data dari bus data seperti CPU.
- Selanjutnya, menambahkan tiga bit, yaitu bit start, bit parity, dan bit stop. Tiga bit ini akan membentuk paket data yang ditransmisikan ke UART penerima melalui pin TX.
- Transmisi data berhenti setelah data di UART pemancar habis.
Kontrol Interupsi
Interupsi data berguna untuk pengiriman otomatis isi buffer. Anda dapat memicu kontrol interupsi dalam skenario berikut:
- Pertama, gunakan saat Anda mengalami FIFO (First in, First out) Overflow Error, line break error, frame error, atau Parity Error.
- Juga, aktifkan saat penerimaan data, pengiriman, atau saat Anda mengalami timeout penerimaan.
Operasi FIFO
Gambar 3. Antarmuka UART pada Arduino
Modul UART keluarga Stellaris memiliki dua FIFO 16-byte, satu untuk penerimaan data dan satu lagi untuk transmisi. Juga, Anda dapat mengonfigurasinya pada kedalaman yang berbeda untuk mengirim interupsi yang berbeda. Misalnya, Anda mungkin memiliki kedalaman 1/8, 1/4, 1/2, dan seterusnya.
Proses kerja transmisi FIFO
- Utama, transmisi data dimulai setelah entri data. Juga, karena memakan waktu, entri data berlanjut sampai FIFO transmisi penuh.
- Setelah penuh, Anda harus menghentikan entri data agar tidak kehilangan semua data baru.
- Selanjutnya, FIFO transmisi mengirimkan data bit demi bit sampai kosong. Akhirnya, FIFO transmisi akan menciptakan slot tambahan.
Proses kerja penerimaan FIFO
- Setelah menerima data dari langkah di atas, perangkat keras menyimpannya di FIFO penerimaan. Idealnya, penerimaan dan penghapusan data oleh program FIFO penerimaan adalah proses otomatis. Jadi, akan cukup ruang di FIFO penerimaan.
- Juga memiliki transceiver FIFO yang penting dalam menyelesaikan masalah efisiensi CPU. Selanjutnya, membantu menyelesaikan masalah interupsi transceiver UART yang sering terjadi.
- Terakhir, FIFO tidak kehilangan data karena menyegel semua kemungkinan jalur kehilangan sebelumnya.
Loopback
UART memiliki loopback internal untuk debugging dan diagnostik tentang di mana input RX akan menerima data yang dikirim.
Protokol Serial Infrared
UART memiliki modul IrDA Serial Infrared (SIR) yang berfungsi sebagai modul encoder/decoder. Berguna dalam menterjemahkan antarmuka serial SIR half-duplex dan aliran data UART asinkron.
Selain itu, protokol komunikasi serial menyediakan input yang didekode dan output yang dikodekan secara digital ke UART.
Keuntungan Menggunakan UART
- Protokol komunikasi sederhana adalah modul yang terdokumentasi dengan baik dan juga mudah digunakan.
- Kedua, tidak memerlukan garis jam serial.
- Ketiga, memiliki bit parity yang memungkinkan pemeriksaan kesalahan.
Kekurangan Menggunakan UART
- Antarmuka UART memiliki batasan ukuran frame data 9 bit dan kecepatan transfer yang lambat.
- Selain itu, tidak mampu menggunakan banyak sistem master dan perangkat slave.
- Juga, memiliki baud rate wajib dalam 10% sebagai perlindungan dari kehilangan data.
- Keempat, umumnya memiliki kecepatan yang lebih lambat selama transfer data antara perangkat.
Contoh UART pada Mikrokontroler
- UART Seeeduino V4.2
- USB to UART 5V
- Base Shield V2
- USB CP2102 Serial Converter
2. Antarmuka I2C
Apa itu I2C?
Gambar 4: Sensor Tekanan Diferensial menggunakan I2C
Protokol komunikasi Inter-integrated-circuit (I2C) mirip dengan UART. Namun, sementara UART ditetapkan untuk komunikasi PC-perangkat, I2C berguna dalam aplikasi sensor dan modul.
Selain itu, bus serial sinkron dua kabel dua arah dapat menghubungkan banyak perangkat tanpa mengkompromikan jalur komunikasi. Ini berkat properti bus dan sistem alamat bersama.
Tetapi fitur ini datang dengan biaya komunikasi yang relatif lambat antara perangkat dibandingkan SPI. Kecepatannya bergantung pada kebisingan eksternal, kualitas kabel, dan kecepatan data.
Terakhir, antarmuka dua kabel memungkinkan koneksi ke perangkat kecepatan rendah seperti EEPROM, konverter Analog/Digital, dan mikrokontroler.
Bagaimana cara kerjanya?
Protokol I2C memiliki dua garis: port penerimaan garis data serial (SDA) dan garis jam serial (SCL). SCL memfasilitasi sinkronisasi transmisi sementara SDA mewakili garis data untuk mengirim dan menerima bit data.
Selama transfer, perangkat master memicu transmisi data bus. Secara bersamaan, menghasilkan jam yang membuka perangkat transfer. Dalam skenario ini, perangkat yang dialami dalam transmisi adalah perangkat slave.
Perlu diperhatikan, perangkat master dan slave tidak memiliki laju transmisi data konstan. Sebaliknya, hubungan mereka bergantung pada arah transfer data pada waktu transmisi.
Juga, perangkat master tunggal harus memberitahu perangkat slave select sebelum memulai transmisi data. Sebaliknya, perlu memberitahu slave sebelum menerima data dari slave.
Juga penting untuk menghubungkan resistor pull-up ke suplai daya I2C untuk fungsi optimal.
Protokol Kerja I2C
Gambar 5: Modul Layar OLED 128X64 IIC I2C 0,96 inci
Metode Transmisi Data
Prosedur koneksi adalah sebagai berikut:
- Output master akan mengirim sinyal transmisi ke slave yang terhubung, terutama dengan mengubah garis SDA dari tegangan tinggi ke rendah. Selanjutnya, akan mengubah garis SCL dari tegangan tinggi ke rendah.
- Kemudian, master mengirim alamat 7-bit atau 10-bit dan bit baca/tulis ke setiap slave.
- Ketiga, slave membandingkan alamat dengan alamat mereka sendiri. Jika cocok, akan mengembalikan bit ACK dengan mengubah garis SDA ke rendah. Namun, jika tidak cocok, slave akan biarkan garis SDA tetap tinggi.
- Selanjutnya, master mengirim frame data atau menerimanya (tergantung pada alamat yang cocok). Kemudian, setelah transmisi data selesai, komponen penerima mengembalikan bit ACK ke pengirim data. Ini untuk mengakui transmisi lengkap.
- Terakhir, master mengubah SCL ke tinggi dan kemudian SDA untuk mengakhiri komunikasi.
Sinkronisasi Jam
Setiap master harus menghasilkan sinyal jamnya sendiri di garis SCL untuk transmisi data. Selain itu, hanya selama periode tinggi jam data yang tetap valid dalam transmisi I2C.
Mode Transmisi
Utama transmisi melalui dua cara, yaitu:
Mode Cepat
Perangkat pada mode cepat menerima dan mentransmisikan data dengan laju 400kbit/s. Juga, bus I2C mode cepat dapat secara signifikan menekan glitches, dan output mereka memiliki fungsi kontrol kemiringan.
Mode Kecepatan Tinggi
Bus I2C pada mode kecepatan tinggi akan mentransmisikan/menerima data dengan laju bit 3,4 Mbit/s. Jadi, memiliki laju transmisi data yang lebih cepat daripada mode cepat sebelumnya.
Keuntungan I2C
- Memiliki jumlah pin/sinyal yang sangat terbatas bahkan ketika Anda telah menghubungkan banyak perangkat pada master.
- Kedua, perangkat I2C menawarkan fleksibilitas berkat kemampuan multi-master dan multi-slave.
- Juga, mudah digunakan karena Anda hanya perlu dua kabel dua arah untuk membuat koneksi ke banyak perangkat.
- Selain itu, menawarkan adaptabilitas yang luas dan juga dapat mendukung banyak master.
Kekurangan I2C
- Memiliki kecepatan yang relatif lambat dan harus menggunakan resistor pull-up, berbeda dengan SPI yang hanya memerlukan resistor push-pull. Selain itu, desain open-drain membatasi kecepatannya.
- Selain itu, resistor menempati ruang yang sangat penting dalam perakitan PCB.
- Tidak mudah digunakan ketika Anda telah menghubungkan banyak perangkat.
Contoh I2C pada Mikrokontroler
- Raspberry Pi 4-Channel 16-Bit ADC
- I2C Hub (6 Port)- Grove
- I2C Driver/Adapter
- I2C Arduino
3. Antarmuka SPI
Apa itu SPI?
Gambar 6: Antarmuka SPI berguna dalam Modul Layar
Serial Peripheral Interface (SPI) ditetapkan untuk digunakan pada mikrokontroler. Juga, karena berfungsi dalam full duplex, memungkinkan transmisi dan penerimaan data bersamaan.
SPI relatif lebih cepat dari I2C, dengan laju transmisi data minimal 8 bit. Utama, protokol sederhana modul ini memungkinkan laju data yang lebih cepat. Jadi, penting dalam aplikasi yang memerlukan kecepatan, seperti modul layar dan Kartu SD.
Juga penting dalam aplikasi yang melibatkan perubahan tiba-tiba informasi, misalnya termometer.
Bagaimana cara kerjanya?
Gambar 7: Kartu SD menggunakan SPI
Perangkat bentuk SPI akan bekerja dalam salah satu dari dua cara berikut:
- Pertama, memilih perangkat dengan garis Chip Select. Perhatikan bahwa setiap perangkat memerlukan garis Chip Select uniknya sendiri.
- Atau, juga berfungsi melalui daisy chaining.
Anda dapat menghubungkan sebanyak yang Anda inginkan dalam antarmuka SPI. Namun, dalam banyak kasus, Anda akan terbatas oleh garis select perangkat keras yang tersedia. Terakhir, selama komunikasi titik-titik, modul tidak perlu melakukan operasi pengalamatan.
Protokol Kerja SPI
SPI berfungsi melalui empat port, yaitu:
- Master Data Output, Slave Data Input (MOSI)
- Master data input, slave data output (MISO)
- Sinyal jam (SCLK)
- Sinyal enable slave (NSS)
Saat menggunakan sistem multi-slave, setiap slave masing-masing memerlukan sinyal enable unik. Persyaratan ini menyulitkan persyaratan perangkat keras dibandingkan komunikasi I2C.
Juga, antarmuka SPI memiliki dua shift register. Ini memungkinkan transmisi data serial sinkron antara satu perangkat master, seperti CPU, ke perangkat periferal.
Keuntungan menggunakan SPI
- Mudah digunakan karena, berbeda dengan I2C, tidak memiliki sistem pengalamatan slave yang kompleks.
- Kedua, merupakan protokol tercepat dari semua antarmuka serial yang telah kita bahas (Lebih cepat dari UART dan I2C).
- Tidak memiliki bit start dan stop seperti dalam komunikasi UART. Jadi, memungkinkan transmisi data berkelanjutan tanpa gangguan.
- Terakhir, memiliki garis MISO dan MOSI terpisah yang memungkinkan pengiriman dan penerimaan data bersamaan.
Kekurangan menggunakan SPI
- Sebagian besar port pinnya terisi, yang membatasi jumlah perangkat yang dapat Anda hubungkan.
- Juga, tidak memiliki kontrol aliran yang ditentukan, dan berbeda dengan I2C, tidak ada mekanisme untuk mengakui data telah dikirim/diterima.
- Memerlukan penggunaan 4 garis, seperti yang telah kita soroti di atas, dan berbeda dengan UART, tidak memiliki mekanisme pemeriksaan kesalahan.
- Keempat, juga memiliki satu master tunggal.
Contoh SPI pada Mikrokontroler
- SPI Seeeduino V4.2
- SPI Driver/Adapter-Mudah Mengemudikan Perangkat SPI
Membandingkan UART, I2C, dan SPI
Perangkat komunikasi mana yang “terbaik”? UART, SPI, atau I2C?
Tidak ada perangkat komunikasi yang unggul di antara ketiga ini, karena masing-masing memiliki kelebihan dan kekurangan utamanya. Jadi, pilih protokol yang paling cocok tergantung pada proyek Anda. Misalnya, SPI akan melayani Anda paling baik jika Anda mencari kecepatan.
Tetapi jika Anda ingin menghubungkan banyak perangkat tanpa memiliki susunan yang kompleks, pilih I2C.
Kesimpulan
Kami telah mengungkap semua wawasan kunci yang perlu Anda ketahui tentang antarmuka komunikasi UART, I2C, dan SPI serta berbagai laju transfernya. Juga, kami di sini untuk menjawab pertanyaan apa pun tentang protokol komunikasi. Hubungi kami, dan kami akan segera datang membantu Anda.