Я пытаюсь подключить 3.3VI 2 C устройства к 5V Arduino.
У меня нет проблем с линией SCL. Я могу использовать простой делитель напряжения, но у меня есть проблема с линией SDA, так как она двунаправленная.
Я не совсем уверен, как справиться с этим. Я хотел добавить пару диодов, с делителем напряжения на ведомой входной стороне и ничего лишнего на главном входе.
Есть ли другие решения?
Ответы:
Хорошим документом на эту тему является двунаправленный переключатель уровня для шины I2C и других систем, в которых в качестве двунаправленного переключателя уровня используется один mosfet.
источник
Чтобы расширить ответ sivu, это обычное использование для так называемых «шинных переключателей», которые в основном являются логически управляемыми MOSFET. Использование дискретных МОП-транзисторов имеет некоторые недостатки (паразитная емкость / емкостная связь - один), и может быть сложно выбрать хороший МОП-транзистор. Шинные переключатели оптимизированы для использования в высокоскоростных логических схемах.
Их делают несколько производителей, в том числе Fairchild, TI, IDT и Pericom. Посмотрите на NC7SZ384 .
Смотрите следующие приложения, среди прочего:
источник
Многие Arduino имеют встроенную поддержку для работы от 3,3 В. На самом деле, все могут работать от 3,3 В, и схема микросхемы FTDI объясняет, как на примере. Пол, который сделал Teensy USB Arduino , предложил мне соединить USB-кабель и подать напряжение 3,3 В вместо линии V CC кабеля. Вы можете попробовать это. Но есть и другие варианты.
Наконец, у нас есть дискуссия, которая может заинтересовать вас здесь на Chiphacker о однонаправленных и двунаправленных решениях для снижения напряжения. Эта статья о SparkFun, упомянутая todbot, полезна, как и обсуждение статьи о двунаправленном MOSFET, связанной с SparkFun. Подводя итог статье SparkFun:
источник
Есть специальные микросхемы, доступные для I2C со сдвигом уровня:
Я не знаю, какие у вас есть ограничения на дизайн, но я думаю, что использовать выделенную микросхему будет проще, чем придумывать собственное решение.
источник