I2C vs SPI:Perbedaan Yang Harus Anda Ketahui
Apakah Anda merancang sebuah proyek, dan sangat penting untuk memilih antara I2C vs. SPI? Tapi Anda tidak tahu harus memilih yang mana? Jika ya, kami akan membantu Anda memutuskan mana yang lebih baik untuk proyek Anda.
Pertama, I2C dan SPI adalah protokol “low-end”. Tapi mereka mudah digunakan dan bekerja dengan sempurna untuk komunikasi antar chip pada PCB Anda.
Namun, memilih protokol yang salah untuk proyek Anda dapat mengakibatkan hasil yang tidak diinginkan. Namun demikian, kami di sini untuk membantu Anda memahami perbedaan antara dua protokol serupa ini.
Apakah kamu siap? Mari kita mulai!
Apa itu Protokol SPI?
Pada 1980-an, Motorola mengembangkan protokol SPI untuk membangun komunikasi antara mikrokontroler pada waktu itu dengan periferal lain seperti EEPROM.
EEPROM
Jadi, protokol SPI menggunakan empat jalur sinyal untuk komunikasi antar bagian. Namun, penting untuk dicatat bahwa ini tidak termasuk tanah dan saluran listrik. Berikut adalah empat jalur sinyal aktif:
- SS:Jalur Pilih Budak (dikendalikan oleh master SPI)
- MOSI:Master Out Slave In (dikendalikan oleh master SPI)
- SCLK:Serial Clock (dikendalikan oleh master SPI)
- MISO:Master In Slave Out (dikendalikan oleh perangkat master SPI)
Pada catatan ini, empat baris memungkinkan master SPI (perangkat pengontrol) untuk berkomunikasi dengan SPI budak (perangkat periferal).
Antarmuka Protokol SPI
Selain itu, Anda hanya dapat memiliki satu perangkat pengontrol di bus SPI. Namun, tidak ada batasan jumlah periferal yang dapat Anda tambahkan. Juga, menambahkan lebih banyak periferal berarti meningkatkan jalur SS. Oleh karena itu, berikut adalah ilustrasi bagaimana Anda dapat menggunakan tiga jalur SS terpisah untuk mengontrol periferal yang berbeda.
Antarmuka Protokol SPI Dengan Beberapa orang yang diperbudak
Selanjutnya, ketika master SPI ingin berkomunikasi dengan periferal baik dengan mengirim atau menerima data, ia menarik jalur SS yang cocok. Akibatnya, garis akan berada di bawah. Oleh karena itu, jalur SCLK aktif dan tinggi dan rendah pada frekuensi yang ditentukan.
Selain itu, master SPI menggunakan jalur MISO untuk mengirimkan data dan sampel secara bersamaan. Juga, perlu diingat bahwa hanya ada komunikasi antara satu periferal dan master SPI dalam satu waktu.
Apa itu I2C
Sebagai alternatif, pada tahun 1982, Philips Semiconductors (sekarang NXP Semiconductors) mengembangkan protokol I2C pertama untuk mensistematisasikan komunikasi antar chip pada satu PCB.
Tidak seperti rekan SCI-nya, protokol I2C memiliki dua jalur komunikasi – tidak termasuk ground dan kabel listrik. Baris ini meliputi:
- SDA:Jalur Data Serial
- SCL:Garis Jam Serial
Jadi, Anda dapat melampirkan sejumlah perangkat enslaver dan agen ke satu bus. Juga, Anda harus menjaga jalur SCL dan SDA sebagai jalur pembuangan terbuka. Akibatnya, perangkat Anda hanya akan memiliki satu saluran rendah dalam satu waktu. Selain itu, Anda memerlukan resistor pull-up pada pipa Anda. Dengan begitu, Anda dapat menarik garis Anda kembali ke posisi tinggi.
Antarmuka Protokol I2C
Karena desain saluran terbuka dari protokol I2C, Anda dapat menggunakan beberapa master pada bus yang sama. Namun jika dua perangkat pengontrol mulai berkomunikasi secara bersamaan, akan terjadi arbitrase yang menyebabkan salah satu perangkat berhenti melakukan transmisi.
Sementara itu, perangkat pengontrol memantau jalur SDA saat komunikasi terjadi. Jadi, jika satu perangkat mendeteksi bahwa saluran SDA rendah saat transmisi, itu akan berhenti mengirim. Dan ini memungkinkan perangkat pengontrol lain untuk berkomunikasi.
Juga, perangkat I2C pengontrol akan mengirimkan kondisi MULAI untuk memulai komunikasi. Akibatnya, jalur SDA akan rendah sedangkan jalur SCL tetap tinggi.
Kemudian, perangkat pengontrol akan mengirimkan alamat 7-bit dari penerima yang ingin dikirimi dan bit baca (1) atau bit tulis (0). Pada titik ini, perangkat di bus hanya akan merespons jika memiliki alamat kecepatan 7-bit yang cocok dengan membuat saluran SDA menjadi rendah.
Perbedaan Antara I2C dan SPI
Baik SPI dan I2C serupa karena keduanya merupakan protokol “low-end”. Selain itu, kedua protokol tidak memiliki kecepatan dan fitur lain yang dibanggakan oleh sepupu mereka yang berat (SATA, Ethernet, USB, dan lainnya).
Tetapi ketika datang ke prinsip dan fitur kerja. Mari kita lihat lebih dekat perbedaan antara kedua protokol tersebut.
Konektor USB
Pertama, Anda dapat mengatur empat mode berbeda pada protokol SPI untuk menentukan cara kerja jam. Dan agar komunikasi berfungsi, perangkat enslaver dan agen harus menggunakan model yang sama.
- Mode 0:sampel data di tepi jam naik, jam idle rendah
- Mode 1:sampel data di tepi jam turun, jam idle rendah
- TMode 2:sampel data di tepi jam turun, jam idle tinggi
- Mode 3:sampel data pada tepi jam yang meningkat, jam menganggur tinggi
Selain itu, kecepatan transfer data SPI dapat melampaui 10 Mbps, menjadikannya sempurna untuk mentransfer data dalam jumlah besar. Selain itu, Anda dapat menemukan protokol SPI pada sensor dengan kecepatan pembaruan cepat seperti LCD dan akselerometer.
LCD
Atau, I2C hanya dapat mengirim data dalam paket satu byte pada satu waktu. Plus, periferal penerima harus mengakui setiap byte dengan bit ACK. Selain itu, protokol I2C memiliki tiga mode dengan kecepatan transfer data yang berbeda.
Sedikit ACK
Model standar mencapai maksimum 100 kbps, mode cepat mencapai 400 kbps, dan mode kecepatan tinggi mencapai 3,4 Mbps. Oleh karena itu, protokol I2C secara signifikan lebih lambat daripada protokol SPI. Hasilnya, protokol I2C bekerja paling baik di sensor suhu dan konverter analog-ke-digital.
Sensor Suhu
Membandingkan I2C dan SPI
Tabel di bawah ini lebih jauh menunjukkan perbedaan signifikan antara I2C dan SPI:
Fitur | SPI | I2C |
Sematkan drive | Mode tekan-tarik | Mode pembuangan terbuka |
Maks. Kecepatan | Tidak ada (Tetapi 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 jalur ekstra) | 2 |
Tidak. Periferal | Jumlah pin yang tersedia untuk jalur SS pada master SPI adalah satu-satunya batasan jumlah periferal yang dapat Anda miliki | Maks. dari 112 dengan pengalamatan 7-bit |
Kontrol aliran | Tidak | Ya |
Protokol SPI vs I2C – Pro dan Kontra
SPI
Pro
- Protokol SPI menggunakan sedikit daya
- Ini juga mendukung komunikasi full-duplex berkecepatan tinggi
Kontra
- Ada berbagai versi dan varian khusus yang menyebabkan masalah kompatibilitas
- Anda memerlukan jalur sinyal tambahan untuk berkomunikasi dengan beberapa periferal di bus yang sama
- Hanya mendukung komunikasi jarak pendek. Anda tidak dapat mentransfer data ke perangkat di papan terpisah
I2C
Pro
- Anda tidak perlu jalur tambahan untuk mengontrol beberapa perangkat di bus yang sama
- Dapat mengirimkan data ke PCB lain tetapi dengan kecepatan transmisi rendah
- Memiliki sensitivitas noise yang lebih rendah
- Dapat mengirimkan data jarak jauh
- Lebih murah untuk digunakan daripada SPI
Kontra
- 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 Harus Anda Pertimbangkan Saat Memilih Antara SPI dan I2C
Memilih protokol terbaik untuk proyek Anda melampaui label harga. Jadi, berikut adalah beberapa hal yang perlu dipertimbangkan sebelum menentukan pilihan Anda:
Pin Terbatas
Berikut adalah kelebihan dan kekurangan protokol SPI dan I2C:jika Anda tidak suka menggunakan mikrokontroler dengan lebih dari 100 pin, ini adalah faktor penting untuk dipertimbangkan. Dalam hal ini, Anda harus memilih protokol yang memerlukan jalur komunikasi yang lebih sedikit.
Kekuatan
Tergantung pada desain Anda, Anda mungkin ingin meminimalkan atau memaksimalkan konsumsi daya. Jadi, Anda harus memastikan bahwa Anda memilih protokol yang paling sesuai dengan kebutuhan konsumsi Anda.
Kecepatan
Ketika datang untuk mentransfer data dalam jumlah besar, setiap mikrodetik sangat penting. Jadi, jika Anda membutuhkan kecepatan, gunakan protokol yang memenuhi standar kecepatan Anda.
Ukuran PCB
Sangat 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 adalah fitur dari setiap protokol untuk membantu Anda membuat keputusan terbaik untuk desain Anda:
Fitur | SPI | I2C |
Kecepatan | Jika desain Anda memerlukan transmisi berkecepatan lebih tinggi, protokol SPI adalah pilihan terbaik. | Anda dapat memilih I2C untuk desain perangkat berkecepatan rendah |
Ukuran PCB | Jika Anda tidak peduli dengan ukuran PCB, Anda tidak akan salah memilih SPI atau I2C. | Jika PCB Anda memiliki ukuran yang lebih kecil dan track yang lebih sedikit, pertimbangkan untuk memilih I2C |
Pin Terbatas | Pilih protokol SPI jika Anda tidak keberatan menambahkan jalur komunikasi tambahan. | Jika Anda tidak nyaman dengan banyak trek, maka I2C adalah pilihan yang ideal. |
Kekuatan | Untuk perangkat dengan konsumsi daya yang lebih rendah, gunakan protokol SPI | Untuk perangkat konsumsi daya yang lebih tinggi, gunakan protokol I2C |
Memahami UART
UART adalah sirkuit fisik dalam mikrokontroler terintegrasi atau yang membangun komunikasi serial antar perangkat dalam sistem tertanam.
Selain itu, ketika Anda berurusan dengan komunikasi UART, selalu ada komunikasi langsung antara pemancar UART dan penerima UART.
UART vs I2C vs SPI
Berbeda dengan protokol komunikasi lain seperti SPI dan I2C, UART adalah murni fisik. Plus, itu tidak menggunakan paradigma master/slave untuk berkomunikasi. Sebagai gantinya, mikrokontroler menggunakan dua perangkat UART untuk mengirim dan menerima data. Selain itu, Anda hanya memerlukan dua kabel untuk komunikasi UART. Dan kabel akan membantu mengirimkan data dari pin Tx pemancar ke pin Rx penerima.
Antarmuka Protokol UART
Pembulatan ke Atas
Pada kenyataannya, protokol SPI dan I2C digunakan dalam berbagai aplikasi. Terkadang, Anda mungkin menemukan perangkat yang menampilkan antarmuka SPI dan I2C dalam satu chip. Jadi, Anda tidak harus memilih di antara keduanya.
Namun, jika Anda perlu memilih di antara kedua protokol tersebut, SPI lebih baik untuk proyek yang membutuhkan kecepatan transfer lebih cepat. Di sisi lain, jika mikrokontroler Anda memiliki pin terbatas, protokol I2C akan bekerja lebih baik.
Ada pertanyaan? Jangan sungkan untuk menghubungi kami. Kami akan dengan senang hati membantu.