Apakah ada clock rate minimum yang ditentukan oleh I2C? Saya tahu clock rate yang paling banyak digunakan adalah 100kHz dan ada mode "cepat" dari 400kHz yang didukung oleh beberapa perangkat, dan mode yang lebih cepat namun didukung oleh perangkat lain (saya pikir 1MHz?). Karena sinyal SCK dihasilkan oleh master, saya kira seseorang dapat beroperasi pada kecepatan yang jauh lebih lambat daripada yang lain - apakah ada batasan yang lebih rendah dalam praktiknya? Sejauh mana perangkat budak peduli dengan laju jam (mis. Apakah mereka memiliki timeout pendek)? Alasan saya bertanya adalah bahwa saya bertanya-tanya apakah mungkin dapat menjalankan I2C dalam jarak yang lebih jauh (misalnya 20 kaki) untuk memprogram EEPROM I2C andal dalam pengaturan tester produksi. Saya berasumsi itu tidak akan bekerja dengan baik pada jarak itu pada kecepatan data standar.
sumber
Jawaban:
Tidak, tidak ada frekuensi minimum, frekuensi clock minimum adalah 0, atau DC. Lihat spesifikasinya , halaman 48.
Tetapi Anda harus memperhatikan waktu naik dan turun. Itu adalah maksimum 1000 ns dan 300 ns, resp. Dan kabel yang lebih panjang, dengan beberapa kapasitansi akan mempengaruhi tepi, terlepas dari frekuensi.
Kapasitansi itu, bersama dengan resistensi pull-up yang akan menentukan waktu naik. Fall time bukan masalah karena FET yang menarik garis rendah memiliki resistansi yang sangat rendah, dan kemudian konstanta waktu jatuh akan sangat rendah juga. Jadi kita pergi dengan waktu naik. Untuk mendapatkan kenaikan 1000 ns pada kabel 200 pF, resistor pull-up Anda tidak boleh lebih besar dari 2,2 kΩ. (naik waktu ke 90% dari nilai akhir.)
Grafik menunjukkan resistensi pull-up maksimum (dalam Ω) versus kapasitansi kabel (dalam pF) untuk mendapatkan kenaikan 1000 ns. Perhatikan bahwa perangkat I2C tidak harus tenggelam lebih dari 3 mA, oleh karena itu pada 3,3 V kapasitansi bus tidak boleh lebih tinggi dari sekitar 395 pF, jika tidak, resistensi pull-up harus lebih kecil dari 1100 Ω, dan memungkinkan lebih banyak dari 3 mA. Itulah garis putus-putus kehijauan. Untuk operasi 5 V, kapasitas yang diizinkan bahkan 260 pF, untuk nilai pull-up 1667 ((garis putus-putus ungu).
sumber
Saya telah menjalankan I2C pada sekitar 100Hz tanpa masalah. Seperti kata @stevenvh, hanya khawatir tentang kecepatan maks dan kapasitansi saluran.
sumber
Anda harus dapat menyelesaikan masalah panjang saluran dengan pemilihan driver dan pencocokan impedansi yang cermat.
Pilihan lain, dengan asumsi jangka panjang adalah bagian dari pengaturan dan bukan produk, mungkin menggunakan sesuatu yang menangani jarak dengan baik seperti RS422 (atau bahkan berbicara RS232) untuk berbicara dengan mikrokontroler yang ditempatkan di konektor tali uji, yang kemudian akan berbicara i2c pada jarak yang cukup pendek ke target.
Atau Anda bisa melakukan ini tanpa intelijen, menggunakan papan kecil yang menjembatani protokol pensinyalan diferensial dengan Schmidt memicu penerima ke dan dari pensinyalan i2c pada target.
Proses Anda mungkin tidak cukup lama sehingga waktu propagasi sinyal (masalah penyelesaian yang tidak ada) akan memerlukan laju clock yang lambat untuk menghindari memutar bus saat data lama masih dalam penerbangan.
Tentu saja Anda ingin melakukan verifikasi readback dari data yang baru saja Anda programkan.
Hanya sebagai perbandingan, monitor VGA IIRC memiliki pembacaan ID i2c (atau i2c-like), yang mungkin masih berfungsi jika Anda menambahkan kabel ekstensi 6 kaki ke kabel stok 3 atau 4 kaki.
sumber