Memilih Antara I2C dan SPI: Perbedaan Kunci Dijelaskan
Apakah Anda sedang merancang proyek dan krusial untuk memilih antara I2C versus SPI? Namun, Anda tidak tahu mana yang harus dipilih? Jika iya, kami akan membantu Anda menentukan mana yang lebih baik untuk proyek Anda.
Pertama-tama, I2C dan SPI adalah protokol “rendah”. Namun, keduanya mudah digunakan dan berfungsi sempurna untuk komunikasi antara chip pada PCB Anda.
Namun, memilih protokol yang salah untuk proyek Anda dapat menghasilkan hasil yang tidak diinginkan. Meskipun demikian, kami di sini untuk membantu Anda memahami perbedaan antara kedua protokol yang mirip ini.
Siap? Mari kita mulai!
Apa itu Protokol SPI?
Pada tahun 1980-an, Motorola mengembangkan protokol SPI untuk membangun komunikasi antara mikrokontroler pada masa itu dengan periferal lain seperti EEPROM.
EEPROM
Jadi, protokol SPI menggunakan empat garis sinyal untuk komunikasi antara komponen. Namun, penting untuk dicatat bahwa garis-garis ini tidak mencakup garis ground dan daya. Berikut adalah empat garis sinyal aktif:
- SS: Slave Select line (dikontrol oleh master SPI)
- MOSI: Master Out Slave In (dikontrol oleh master SPI)
- SCLK: Serial Clock (dikontrol oleh master SPI)
- MISO: Master In Slave Out (dikontrol oleh perangkat slave SPI)
Dengan demikian, empat garis ini memungkinkan master SPI (perangkat kontrol) berkomunikasi dengan slave SPI (perangkat periferal).
Antarmuka Protokol SPI
Selain itu, Anda hanya dapat memiliki satu perangkat kontrol pada bus SPI. Namun, tidak ada batasan pada jumlah periferal yang dapat ditambahkan. Juga, menambahkan lebih banyak periferal berarti menambah garis SS. Oleh karena itu, berikut adalah ilustrasi bagaimana Anda dapat menggunakan tiga garis SS terpisah untuk mengontrol periferal yang berbeda.
Antarmuka Protokol SPI Dengan Berbagai Periferal
Selanjutnya, ketika master SPI ingin berkomunikasi dengan periferal dengan mengirim atau menerima data, itu menarik garis SS yang cocok. Akibatnya, garis akan berlevel rendah. Oleh karena itu, garis SCLK aktif dan berosilasi tinggi dan rendah pada frekwensi tertentu.
Secara tambahan, master SPI menggunakan garis MISO untuk mengirim data dan mengambil sampel secara bersamaan. Juga, ingatlah bahwa hanya dapat ada komunikasi antara satu periferal dan master SPI pada satu waktu.
Apa itu I2C
Secara alternatif, pada tahun 1982, Philips Semiconductors (sekarang NXP Semiconductors) mengembangkan protokol I2C pertama untuk menyistematisasi komunikasi antara chip pada satu PCB.
Berbeda dengan setara SCI-nya, protokol I2C memiliki dua garis komunikasi–kecuali garis ground dan daya. Garis-garis ini meliputi:
- SDA: Serial Data line
- SCL: Serial Clock line
Jadi, Anda dapat menyambungkan sejumlah perangkat master dan slave pada satu bus. Juga, Anda harus menjaga kedua garis SCL dan SDA sebagai garis open-drain. Akibatnya, perangkat Anda hanya akan memiliki satu garis rendah pada satu waktu. Selain itu, Anda akan memerlukan resistor pull-up pada garis Anda. Dengan cara itu, Anda dapat menarik garis Anda kembali ke high.
Antarmuka Protokol I2C
Karena desain open-drain protokol I2C, Anda dapat menggunakan beberapa master pada bus yang sama. Namun, jika dua perangkat kontrol mulai berkomunikasi secara bersamaan, akan terjadi arbitrase yang menyebabkan salah satu perangkat berhenti mentransmisikan.
Sementara itu, perangkat kontrol memantau garis SLA selama komunikasi terjadi. Jadi, jika satu perangkat mendeteksi garis SDA rendah saat mentransmisikan, itu akan berhenti mengirim. Dan ini memungkinkan perangkat kontrol lain untuk berkomunikasi.
Juga, perangkat kontrol I2C akan mentransmisikan kondisi START untuk memulai komunikasi. Akibatnya, garis SDA akan rendah sementara garis SCL tetap tinggi.
Kemudian, perangkat kontrol akan mentransmisikan alamat 7-bit dari penerima yang ingin dikirimkan dan bit baca (1) atau bit tulis (0). Titik ini, perangkat pada bus hanya akan merespons jika memiliki alamat 7-bit yang cocok dengan membuat garis SDA rendah.
Perbedaan Antara I2C dan SPI
Kedua SPI dan I2C mirip karena keduanya adalah protokol “rendah”. Secara tambahan, kedua protokol ini kurang memiliki kecepatan dan fitur lain yang dimiliki oleh sepupu-sepatunya yang lebih canggih (SATA, Ethernet, USB, dan lainnya).
Namun, ketika berkaitan dengan prinsip kerja dan fitur. Mari kita lihat lebih dekat perbedaan antara kedua protokol ini.
Konektor USB
Pertama-tama, Anda dapat mengatur empat mode berbeda pada protokol SPI untuk menentukan cara jamnya bekerja. Dan agar komunikasi berfungsi, perangkat master dan slave harus menggunakan model yang sama.
- Mode 0: data diambil pada tepi jam naik, jam idle rendah
- Mode 1: data diambil pada tepi jam turun, jam idle rendah
- Mode 2: data diambil pada tepi jam turun, jam idle tinggi
- Mode 3: data diambil pada tepi jam naik, jam idle tinggi
Selain itu, kecepatan transfer data SPI dapat melebihi 10 Mbps, membuatnya sempurna untuk mentransfer volume data yang besar. Juga, Anda dapat menemukan protokol SPI pada sensor dengan tingkat pembaruan cepat seperti LCD dan akselerometer.
LCD
Secara alternatif, I2C hanya dapat mengirim data dalam paket satu byte pada satu waktu. Selain itu, periferal penerima harus mengakui setiap byte dengan bit ACK. Secara tambahan, protokol I2C memiliki tiga mode dengan kecepatan transfer data yang berbeda.

Bit ACK
Model standar mencapai maksimum 100 kbps, mode cepat terbatas pada 400 kbps, dan mode kecepatan tinggi mencapai maksimum 3,4 Mbps. Oleh karena itu, protokol I2C jauh lebih lambat dari protokol SPI. Akibatnya, protokol I2C bekerja paling baik pada sensor suhu dan konverter analog-ke-digital.
Sensor Suhu
Membandingkan I2C dan SPI
Tabel di bawah ini lebih lanjut menunjukkan perbedaan signifikan antara I2C dan SPI:
| Fitur | SPI | I2C |
| Pengemudi pin | Mode push-pull | Mode open-drain |
| Kecepatan Maks. | Tidak ada (Namun Anda dapat menemukan 10 – 100 Mbps) | 100 kbps (metode standar) 400 kbps (cara cepat) 3,4 Mbps (mode kecepatan tinggi) |
| Multi-master | Tidak | Ya |
| Garis sinyal | 4 (perangkat tambahan menambahkan garis tambahan) | 2 |
| Jumlah Periferal | Jumlah pin yang tersedia untuk garis SS pada master SPI adalah satu-satunya batasan jumlah periferal yang dapat Anda miliki | Maks. 112 dengan pengalamatan 7-bit |
| Kontrol aliran | Tidak | Ya |
SPI versus Protokol I2C – Kelebihan dan Kekurangan
SPI
Kelebihan
- Protokol SPI mengonsumsi sejumlah daya yang kecil
- Ini juga mendukung komunikasi full-duplex berkecepatan tinggi
Kekurangan
- Ada versi berbeda dan varian kustom yang menyebabkan masalah kompatibilitas
- Anda membutuhkan garis sinyal tambahan untuk berkomunikasi dengan beberapa periferal pada bus yang sama
- Hanya mendukung komunikasi jarak pendek. Anda tidak dapat mentransfer data ke perangkat pada papan terpisah
I2C
Kelebihan
- Anda tidak memerlukan garis tambahan untuk mengontrol beberapa perangkat pada bus yang sama
- Dapat mentransmisikan data ke PCB lain tetapi dengan kecepatan transmisi rendah
- Memiliki sensitivitas kebisingan yang lebih rendah
- Dapat mentransmisikan data pada jarak yang lebih jauh
- Biaya penggunaan lebih murah dibandingkan SPI
Kekurangan
- Kecepatan transfer lebih lambat dari SPI
- Menggunakan lebih banyak daya daripada protokol SPI
- Kegagalan satu perangkat untuk melepaskan bus komunikasi dapat mengunci protokol I2C
Faktor yang Perlu Dipertimbangkan Saat Memilih Antara SPI dan I2C
Memilih protokol terbaik untuk proyek Anda melebihi harga. Jadi, berikut beberapa hal yang perlu dipertimbangkan sebelum membuat pilihan Anda:
Pin Terbatas
Berikut kelebihan dan kekurangan dari kedua protokol SPI dan I2C: jika Anda tidak suka menggunakan mikrokontroler dengan lebih dari 100 pin, ini adalah faktor krusial untuk dipertimbangkan. Dalam kasus ini, Anda harus memilih protokol yang membutuhkan lebih sedikit garis untuk komunikasi.
Daya
Bergantung pada desain Anda, Anda mungkin ingin meminimalkan atau memaksimalkan konsumsi daya. Jadi, Anda harus memastikan memilih protokol yang paling sesuai dengan kebutuhan konsumsi Anda.
Kecepatan
Saat mentransfer data dalam jumlah besar, setiap mikrodetik krusial. Jadi, jika kecepatan adalah yang Anda butuhkan, pilih protokol yang memenuhi standar kecepatan Anda.
Ukuran PCB
Penting untuk mempertimbangkan ukuran PCB Anda sebelum memilih protokol apa pun. Akibatnya, Anda akan meningkatkan peluang Anda untuk mendapatkan hasil yang diinginkan.
Memilih Antara SPI dan I2C
Berikut fitur setiap protokol untuk membantu Anda membuat keputusan terbaik untuk desain Anda:
| Fitur | SPI | I2C |
| Kecepatan | Jika desain Anda memerlukan transmisi berkecepatan tinggi, protokol SPI adalah pilihan terbaik. | Anda dapat memilih I2C untuk desain perangkat berkecepatan rendah |
| Ukuran PCB | Jika Anda tidak khawatir tentang ukuran PCB Anda, Anda tidak salah dengan SPI atau I2C. | Jika PCB Anda berukuran lebih kecil dan memiliki lebih sedikit jejak, pertimbangkan untuk memilih I2C |
| Pin Terbatas | Pilih protokol SPI jika Anda tidak menambahkan garis tambahan untuk komunikasi. | Jika Anda tidak nyaman dengan banyak jejak, maka I2C adalah pilihan ideal. |
| Daya | Untuk perangkat konsumsi daya rendah, gunakan protokol SPI | Untuk perangkat konsumsi daya tinggi, gunakan protokol I2C |
Memahami UART
UART adalah sirkuit fisik dalam terpadu atau mikrokontroler yang mendirikan komunikasi serial antara perangkat dalam sistem tertanam.
Juga, saat Anda menangani komunikasi UART, selalu ada komunikasi langsung antara pemancar UART dan penerima UART.
UART versus I2C versus SPI
Berbeda dengan protokol komunikasi lain seperti SPI dan I2C, UART murni fisik. Selain itu, itu tidak menggunakan paradigma master/slave untuk berkomunikasi. Sebaliknya, mikrokontroler menggunakan dua perangkat UART untuk mengirim dan menerima data. Secara tambahan, Anda hanya membutuhkan dua kabel untuk komunikasi UART. Dan kabel akan membantu mentransmisikan data dari pin Tx pemancar ke pin Rx penerima.
Antarmuka Protokol UART
Ringkasan
Dalam kenyataannya, protokol SPI dan I2C digunakan dalam berbagai aplikasi. Kadang-kadang, Anda mungkin menemukan diri Anda dengan perangkat yang memiliki antarmuka SPI dan I2C pada satu chip. Jadi, Anda tidak harus memilih antara keduanya.
Namun, jika Anda perlu memilih antara dua protokol, SPI lebih baik untuk proyek yang membutuhkan kecepatan transfer yang lebih cepat. Di sisi lain, jika mikrokontroler Anda memiliki pin terbatas, protokol I2C akan bekerja lebih baik.
Ada pertanyaan? Jangan ragu untuk menghubungi kami. Kami akan lebih dari senang membantu.