Perangkat I2C: 3.3V dan 5V tanpa pengalihan level pada bus 3.3V?

12

apakah saya benar-benar membutuhkan level-shifter jika saya menggunakan perangkat bertenaga 5V pada bus I2C yang memiliki pull-up ke 3.3V? Dalam pemahaman saya, perangkat hanya akan menarik garis (SDA, SCL) rendah (ke tanah) dan tidak pernah mendorong tegangan suplai ke bus. Jadi saya tidak melihat alasan untuk level-shifter selama semua perangkat mendeteksi tegangan dari pull-up (3.3V) setinggi logis. Seharusnya demikian halnya dengan perangkat yang menggunakan 5V sebagai persediaan.

Dalam kasus saya, saya memiliki IC yang inputnya tidak toleran 5V sebagai master dan saya bisa memberi daya pada budak saya dengan 3.3V tetapi menggunakan 5V lebih mudah di sirkuit saya dan memungkinkan clock-rate yang lebih tinggi (internal) untuk para budak.

Jannis
sumber
2
Jadi untuk meringkas: - Tidak ada chip dalam bahaya ketika menggunakan perangkat dengan 5V sebagai Vdd pada I2C-bus menggunakan pull-up ke 3.3V - Ini mungkin atau mungkin tidak bekerja, tergantung pada toleransi, desain chip internal, ...
Jannis
2
Benar - tidak ada bahaya kerusakan, hanya tidak ada jaminan operasi yang benar.
Adam Lawrence

Jawaban:

15

saya2C

"Karena berbagai perangkat teknologi yang berbeda (CMOS, NMOS, bipolar) yang dapat dihubungkan ke bus-I2C, tingkat logis '0' (RENDAH) dan '1' (TINGGI) tidak tetap dan tergantung pada tingkat terkait VDD. Level referensi input ditetapkan sebagai 30% dan 70% dari VDD; VIL adalah 0,3VDD dan VIH adalah 0,7VDD. Lihat Gambar 38, diagram waktu. Beberapa level input perangkat warisan ditetapkan pada VIL = 1,5 V dan VIH = 3.0 V, tetapi semua perangkat baru memerlukan spesifikasi 30% / 70% ini. Lihat Bagian 6 untuk spesifikasi listrik. " (halaman 9)

0,7×VDD

kutipan dari NXP I2C spec rev.  4

Untuk sistem 5V Anda:

0,7×5V=3.5V

0,3×5V=1.5V

0,7×VDD

Jarak tempuh Anda mungkin beragam, tetapi sebaiknya selalu berada dalam spesifikasi sedapat mungkin ...

Adam Lawrence
sumber
Terima kasih atas stevenvh pembersihan. Saya bergegas kemarin.
Adam Lawrence
11

Jawaban Cees salah, khususnya "selalu" dan "apa pun". Mikrokontroler I / Os mungkin perlu 0,6 Vdd sebagai minimum untuk tingkat tinggi, yang lain memiliki minimum 0,7 Vdd, dan seperti Madmanguruman menunjukkan ini adalah standar untuk I2C. 0,7 Vdd adalah 3,5 V pada pasokan 5 V, jadi 3,3 V sudah terlalu rendah.

Tetapi itu bahkan lebih buruk. Regulator tegangan sering memiliki toleransi 5% pada tegangan output nominalnya, sehingga case terburuk 5 V mungkin 5,25 V, dan kemudian 0,7 Vdd menjadi 3,675 V. Input minimum untuk level tinggi. Jika 3,3 V memiliki toleransi 5% negatif maka 3,3 V menjadi 3,135 V. Jadi dengan toleransi diperhitungkan input mungkin setengah volt terlalu rendah, atau 15%.

Begitu,

Jadi saya tidak melihat alasan untuk level-shifter selama semua perangkat mendeteksi tegangan dari pull-up (3.3V) setinggi logis. Seharusnya demikian halnya dengan perangkat yang menggunakan 5V sebagai persediaan.

adalah kesimpulan sebelum waktunya. Selalu periksa lembar data dan lakukan perhitungan.

stevenvh
sumber
-1

Saya merasa bahwa jawaban yang lain tidak benar-benar menjawab pertanyaan Jannis. Dia bertanya tentang menggunakan perangkat 5V pada bus 3.3V (mungkin 3.3V MCU). Saya setuju bahwa mengikat pull-up ke 3.3V akan baik-baik saja, misalnya aman untuk perangkat master, karena pin SDA / SCL hanya akan menarik ke bawah, seperti yang disebutkannya. Berhati-hatilah bahwa budak dan master perlu berbagi kesamaan (Vss pin equipotential) untuk melindungi MCU dari tegangan lebih, tetapi ini mungkin akan menjadi kasusnya. Jadi metode Jannis harus bekerja, tanpa shifter level.

DavidW_10MI
sumber
2
Selamat datang!! Saya perhatikan Anda adalah kontributor baru, jadi Anda mungkin tidak menyadari bahwa Anda memberikan jawaban atas pertanyaan yang berusia lebih dari enam tahun. Sistem terus-menerus memunculkan pertanyaan lama sehingga ini direvisi, Anda harus mengingatnya.
Edgar Brown