Перетворення I2C 3,3 до 5,0 В


35

Я намагаюся приєднати пристрій 3,3 VI 2 C до Arduino 5V.

У мене немає проблем з лінією SCL. Я можу використовувати простий дільник напруги, але у мене є проблема з лінією SDA, оскільки це двостороння.

Я зовсім не впевнений, як з цим впоратися. Я маю додати пару діодів, з роздільником напруги на підлеглому стороні входу і нічого зайвого на головний вхід.

Чи є інші рішення?


Майбутнім читачам слід знати, що хоча OP може використовувати SCL лише в одному напрямку, I2C, як правило, дозволяє SCL бути двонаправленим.
Фотон

Відповіді:


25

Хорошим документом з цього приводу є двосторонній перемикач рівня для I2C-шини та інших систем, який використовує єдину передачу даних як двосторонній перемикач рівня.


Мені подобається схема Philips. Розумний. Деяким чином це може бути краще, якби на виходах I2C не довелося занурювати весь струм з усіх підключень, але спроектувати активний ретранслятор I2C важко; Я не думаю, що це можна зробити за звичайною логікою, оскільки ретранслятор повинен бути здатний виявити піднімається край і реагувати на нього, перш ніж будь-які пристрої I2C зможуть.
supercat

2
Посилання мертва!
Zimano

14

Щоб розширити відповідь sivu, це звичайне використання для так званих "комутаторів шини", які в основному є керованими логікою MOSFET. Використання дискретних MOSFET має деякі недоліки (паразитна ємність / ємнісний зв'язок є одним), і вибрати складний MOSFET може бути складним. Вимикачі шини оптимізовані для використання у швидкісних логічних схемах.

Кілька виробників виготовляють їх, включаючи Fairchild, TI, IDT та Pericom. Погляньте на NC7SZ384 .

Перегляньте такі додатки, серед інших:


8

У багатьох Arduino є вбудована підтримка, яка працює на 3,3 В. Насправді всі можуть працювати на 3,3 В, а схематичний чіп FTDI пояснює як у прикладі. Пол, який зробив Teensy USB Arduino , підказав, що я можу з'єднати USB-кабель відкритим та подати напругу 3,3 В замість V CC лінії кабелю. Ви можете спробувати це. Але є й інші варіанти.

  1. Перевірте логічні рівні для Arduino. Я вважаю, що вони підтримують 3,3 В, як логіка ВИСОКА навіть на 5-метровому Atmel. У статті SparkFun зазначено: "* Підключення 3,3 В цифрового вихідного штифта до вхідного контакту напругою 5 В часто є простим. Більшість пристроїв досить толерантні до мінімальної напруги, яку вони приймуть як цифрове велике значення. Більшість мікроконтролерів Atmel, наприклад, прийміть що-небудь вище 0,6 * V CC, як високий, тому пристрій 3,3 В повинен виводити рівень вище 3 В (0,6 * 5 В). * "
  2. Придбайте один з клонів Arduino, який має перемикачі селекторів 3,3 В і 5 В. Я використовую клоун RBBB, який я встановив для кабелів живлення FTDI на 3,3 В. Але є багато інших, які мають фактичні параметри конфігурації 3,3 В, в тому числі один із останніх офіційних Arduinos, якщо я правильно пам'ятаю. Ви також можете використовувати USB крихітний з його Arduino плагін і дотримуйтесь інструкцій на своєму сайті , щоб встановити регулятор 3,3 V .
  3. Сплетіть USB-кабель і замість V CC- лінії USB-кабелю встановіть джерело 3,3 В лабораторного джерела живлення . Це має бути низьким струмом, як запропонував Павло. Отже, або джерело напруги хорошої якості. Ви також можете просто поставити кілька батарей послідовно, щоб отримати потрібну напругу.
  4. Якщо вас цікавить, я можу спробувати вивчити схему вашого Arduino і, можливо, можливо внести зміни в конфігурацію FTDI, яка дозволила б отримати 3,3 В.

Нарешті, у нас є дискусія, яка може вас зацікавити тут, на Chiphacker, про однонаправлені та двонаправлені рішення для зниження напруги. Ця стаття про SparkFun, згадана todbot, є корисною, як і дискусія про двонаправлену статтю MOSFET, пов’язану з SparkFun. Щоб підсумувати статтю SparkFun:

  • Вбудований резистор. Однонаправлене. Тільки крок вниз - зменшує струм, затискаючі діоди вводу / виводу ІС можуть обмежувати максимальний вхід.
  • Серійні резистори. Однонаправлене. Тільки вниз, але зернисті.
  • Діод. Однонаправлене. Крок назад. Безпечніше. Високий від 5 В блоків діод; сторона 3,3 В потім прив’язана до високої. Але, якщо ви змінили конфігурацію діода, не могли б ви також посилити?
  • МОЗФЕТ. Двонаправлене. Пониження або посилення.
  • У коментарях: Приклад оптичної ізоляції: 4N25. Високий струм.
  • У коментарях: Приклад діода Зенера: 1N4728A
  • У коментарях: 74HC244 / 125 однонаправлений

6

Є ІМС, доступні спеціально для I2C зі зміщенням рівня:

Я не знаю, які обмеження у вас є для вашого дизайну, але я думаю, що використовувати спеціалізований ІС буде простіше, ніж придумати власне рішення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.