Laporan ini adalah yang pertama dalam kumpulan yang menjelaskan aspek 'yang lebih halus' dari Protokol I2C, yang awalnya diproduksi oleh Philips.
Mengingat Anda mempelajari urutan ini, saya berasumsi Anda sekarang tahu apa itu bus I2C, dan Anda mungkin ingin menghindari kesulitan saat Anda perlu menggunakannya dalam suatu proyek. Jika demikian, Anda telah datang ke tempat yang tepat. Jika tidak, saya akan segera menambahkan beberapa data pengantar I2C di situs web saya.
Agar jelas, urutan ini tidak akan mencakup cara Superior-velocity, karena cara ini sangat unik dari gaya dan desain serta kebiasaan implementasi bus bersama 2-kabel biasa, dan juga tidak terlalu sering diterapkan. Ada banyak materi referensi hebat yang tersedia di Situs Web yang membahas cara ini.
Berikut adalah daftar singkat tentang apa yang akan dilindungi dalam seri selanjutnya:
- Kurang Dimulai
- hilang Berhenti
- Berulang Mulai
- kurang pengetahuan
- hilang ACK/NAK
- fakta segera setelah NAK
- kesalahan berulang-ulang
- resistor tarik-naik
- pengulang bus
- implementasi bekerja dengan komponen komprehensif TWI atau periferal I2C
- implementasi menggunakan peripheral USI
- implementasi menggunakan peripheral USART
- Varian SMBus dari I2C
Sekarang, lanjut ke hal-hal baik!
Untuk postingan ini, kami akan berkonsentrasi pada 3 jenis implementasi yang mungkin Anda temukan dalam model saat ini: komponen total, gabungan komponen/program perangkat lunak, dan aplikasi menyeluruh (atau 'bit-bang' seperti yang kadang disebut).
Banyak mikrokontroler saat ini, bahkan beberapa unit low-close, menyertakan hal-hal seperti peripheral I2C yang sepenuhnya menggunakan perangkat keras. Atmel menyebutnya TWI, Microchip menyebutnya I2C, distributor lain menggunakan penamaan yang serupa. Saat menggunakan metode yang sepenuhnya menggunakan perangkat keras, sebenarnya sulit untuk menghasilkan bentuk kesalahan bus apa pun kecuali tentu saja Anda salah memahami cara kerja peripheral atau seperti apa urutan bus I2C yang akurat. Namun, secara umum, teknik ini memerlukan pemahaman yang paling tidak mendalam tentang protokol itu sendiri.
Periferal USI yang diidentifikasi dalam beberapa produk Atmel adalah gaya komponen minimal yang bergantung pada interaksi aplikasi untuk menjadikannya implementasi akhir. Periferal yang dapat beradaptasi ini sebenarnya dapat digunakan untuk konfigurasi I2C, SPI, dan UART, dan sesuai untuk perangkat dengan penyelesaian minimal di mana menyertakan semua beberapa periferal akan menjadi mahal. Meskipun memerlukan lebih banyak pengodean daripada periferal TWI atau komponen lengkap I2C, dalam beberapa hal jauh lebih mudah beradaptasi. Strategi ini memerlukan pemahaman yang lebih mendalam tentang protokol, karena Anda bertanggung jawab untuk berpindah dari satu titik tertentu ke titik berikutnya, dan Anda dapat mengambil rute yang salah.
Terakhir, memanfaatkan pendekatan perangkat lunak komputer 100% memerlukan pemahaman menyeluruh tentang protokol I2C. Hampir setiap penjual mikrokontroler memberikan catatan perangkat lunak dan contoh kode untuk mengembangkan unit Pembelajaran I2C yang menggunakan alternatif perangkat lunak komputer murni. Tidak seperti UART, I2C adalah protokol yang memiliki clock (bukan timed), sehingga interupsi dalam pelaksanaan protokol ditoleransi dengan baik, yang memungkinkan interupsi untuk dilayani tanpa masalah kehilangan informasi. Kecepatan tertinggi dari resolusi berbasis perangkat lunak pada akhirnya ditentukan oleh kecepatan clock CPU, dan biasanya implementasi Pembelajaran dapat dengan mudah mencapai kecepatan 400KHz.
Implementasi perangkat Slave yang bergantung pada program perangkat lunak jauh lebih menantang. Tanpa bantuan komponen, perangkat lunak komputer harus memantau jalur SDA dan SCL secara bersamaan untuk mendeteksi tepi jam dan mengetahui secara pasti kondisi jalur SDA sebelum SCL naik atau turun. Deteksi masalah Start off atau End umumnya memerlukan penggunaan interupsi, biasanya aplikasi harus 100% dikonsumsi dengan pemantauan SCL dan SDA. Implementasi Slave berbasis perangkat lunak cenderung bergantung pada CPU, yang memerlukan banyak MIPS untuk mendapatkan prosedur 100KHz sekalipun. Dengan demikian, implementasi Slave khusus aplikasi yang akurat bahkan mungkin tidak ada untuk beberapa rumah tangga mikrokontroler, dan yang lainnya mungkin tidak dapat mencapai kecepatan bus 100KHz penuh.
Dengan komponen dan dasar perangkat lunak komputer yang telah ditetapkan, kita akan membahas lebih dalam tentang protokol itu sendiri di artikel mendatang. Terima kasih telah membaca!
(Hak Cipta 2010 Robert G. Fries)