Konversi I2C 3.3 hingga 5.0 V

35

Saya mencoba untuk menghubungkan perangkat 3.3VI 2 C ke Arduino 5V.

Saya tidak punya masalah dengan saluran SCL. Saya dapat menggunakan pembagi tegangan sederhana tetapi saya memiliki masalah dengan garis SDA karena ini adalah dua arah.

Saya sama sekali tidak yakin bagaimana menangani ini. Saya telah menambahkan sepasang dioda, dengan pembagi tegangan pada sisi input slave dan tidak ada tambahan pada input master.

Apakah ada solusi lain?

JohnC
sumber
Pembaca masa depan harus menyadari bahwa meskipun OP hanya menggunakan SCL dalam satu arah, I2C umumnya memungkinkan SCL menjadi dua arah.
The Photon

Jawaban:

25

Dokumen yang baik tentang subjek adalah Bi-directional level shifter untuk I2C-bus dan sistem lain yang menggunakan MOSFET tunggal sebagai bi-directional level shifter.

sivu
sumber
Saya suka sirkuit Philips. Pintar. Dalam beberapa hal mungkin lebih baik jika output I2C tidak harus menenggelamkan semua arus dari semua pull-up, tetapi merancang repeater I2C aktif sulit; Saya tidak berpikir itu bisa dilakukan dengan logika normal, karena repeater harus mampu mendeteksi sisi yang naik dan bereaksi sebelum perangkat I2C bisa.
supercat
2
Tautannya sudah mati!
Zimano
14

Untuk memperluas jawaban sivu, ini adalah penggunaan umum untuk apa yang disebut "bus switches" yang pada dasarnya adalah MOSFET yang dikendalikan oleh logika. Menggunakan MOSFET diskrit memiliki beberapa kelemahan (kapasitansi parasit / kopling kapasitif menjadi satu) dan mungkin sulit untuk memilih MOSFET yang baik. Sakelar bus dioptimalkan untuk digunakan dalam sirkuit logika berkecepatan tinggi.

Beberapa produsen membuatnya, termasuk Fairchild, TI, IDT, dan Pericom. Lihatlah NC7SZ384 .

Lihat catatan aplikasi berikut ini, antara lain:

Jason S
sumber
8

Banyak Arduino memiliki dukungan onboard untuk berjalan pada 3,3 V. Sebenarnya, semua dapat berjalan pada 3,3 V dan skema FTDI menjelaskan bagaimana dalam contoh. Paul, yang membuat USB Arduino yang kecil , menyarankan agar saya bisa membuka kabel USB dan menyediakan tegangan 3,3 V sebagai pengganti kabel V CC kabel. Anda bisa mencoba ini. Tetapi ada juga opsi lain.

  1. Periksa level logika untuk Arduino. Saya percaya mereka mendukung 3.3 V sebagai logika TINGGI bahkan pada Atmel bersumber 5 V. Artikel SparkFun menyatakan: "* Menghubungkan pin output digital 3,3 V ke pin input 5 V seringkali mudah. ​​Sebagian besar perangkat cukup toleran terhadap tegangan minimum yang akan mereka terima sebagai nilai digital tinggi. Kebanyakan mikrokontroler Atmel, misalnya, menerima apa pun di atas 0,6 * V CC setinggi, sehingga perangkat 3,3 V harus mengeluarkan tingkat di atas 3 V (0,6 * 5 V). * "
  2. Beli salah satu klon Arduino yang telah memilih penyeleksi 3,3 V dan 5 V. Saya menggunakan cloan RBBB yang telah saya atur kabel supply chip FTDI ke 3.3 V. Tetapi ada banyak yang lain yang memiliki opsi konfigurasi 3.3 V aktual, termasuk salah satu Arduino resmi terbaru jika saya ingat dengan benar. Anda juga bisa menggunakan amat kecil USB dengan plugin Arduino dan ikuti petunjuk pada situs untuk menginstal regulator 3,3 V .
  3. Sambungkan kabel USB dan berikan sumber catu daya laboratorium 3,3 V yang berkualitas sebagai pengganti garis V CC kabel USB. Seharusnya arusnya rendah, seperti yang disarankan Paul. Oleh karena itu, sumber tegangan berkualitas baik. Anda juga bisa memasukkan beberapa baterai secara seri untuk mendapatkan voltase yang diinginkan.
  4. Jika Anda tertarik, saya dapat mencoba memeriksa skema Arduino Anda dan mungkin dimungkinkan untuk membuat perubahan pada konfigurasi FTDI yang akan memungkinkan untuk 3.3 V.

Terakhir, kami memiliki diskusi yang mungkin menarik bagi Anda tentang hal ini di sini di Chiphacker tentang solusi uni-directional dan bi-directional untuk penurunan tegangan. Artikel tentang SparkFun yang disebutkan oleh todbot ini bermanfaat, seperti halnya diskusi tentang artikel MOSFET dua arah yang ditautkan dari SparkFun. Untuk meringkas artikel SparkFun:

  • Inline resistor. Directional. Step-down only - mengurangi arus, IC dioda penjepit I / O dapat membatasi input maksimal.
  • Resistor seri. Directional. Hanya step-down, tapi granular.
  • Diode. Directional. Mundur. Lebih aman Tinggi dari 5 V blok dioda; sisi 3.3 V kemudian mengikat ke tinggi. Tetapi, jika Anda membalikkan konfigurasi dioda, tidak bisakah Anda juga meningkatkannya?
  • MOSFET. Dua arah. Step-down atau step-up.
  • Dalam komentar: Contoh isolasi optik: 4N25. Arus tinggi.
  • Dalam komentar: Zener diode contoh: 1N4728A
  • Dalam komentar: 74HC244 / 125 uni-directional
cyphunk
sumber