Можно ли подключать устройства с питанием 3,3 В к шине 5 В I2C?
У меня есть несколько устройств на шине I2C:
- RTC DS3231SN
- TMP100 датчик температуры
- EEPROM 24LC256
Все устройства питаются от сети 3,3 В. Напряжение на шине I2C составляет 5 В.
Вопрос: В норме ли разница напряжения на шине и питании устройства?
@Delta, 👍0
Обсуждение1 ответ
Лучший ответ:
Есть устройства на 3,3 В, входы которых рассчитаны на 5 В; это может быть и так для ваших устройств, но я бы не рискнул. Используйте преобразователь уровней, разработанный для I2C, например https://www.adafruit.com/product/757. Или вы можете сделать свой собственный; https://cdn-shop.adafruit.com/datasheets/an97055.pdf объясняет, как такой уровень преобразователь работает. Используйте BSS138, если вам удобно паять компоненты SMT; в противном случае используйте 2N7000.
ДжейЭй, Спасибо за ответ!, @Delta
Для DS3231 максимальное напряжение при Vcc+0.3V
. TMP100, по-видимому, допускает до 6 В независимо от Vcc. Максимум 24L256 составляет «Vcc + 1,0 В»., @Gerben
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Как отправить строку на мастер с помощью i2c
- Как выбрать альтернативные контакты I2C на ESP32?
- Что означает в I2C «NACK получен»?
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- Несколько датчиков I2C с одинаковым адресом
Лучше использовать переводчик уровней. Или вы можете попробовать питать подтягивающие устройства от 3,3 В, обычно это работает, но выход 3,3 В CMOS, взаимодействующий с логическим входом CMOS 5 В, не совместим на 100%, поскольку некоторым устройствам может потребоваться почти 3,5 В для обнаружения высокого уровня., @KIIV
КИЕВ, Спасибо за помощь!, @Delta
Используете ли вы голые чипы или у вас есть разделительная плата. Если последнее, проблема может быть в том, что Arduino включает внутренние подтягивающие резисторы внутри MCU. На разветвлениях уже есть подтягивающие резисторы, поэтому плата Arduino не должна этого делать (но делает). Обычно это не имеет значения и помогает людям, использующим голые микросхемы и забывающим добавить подтягивающие резисторы на линии I2C. Чтобы отключить их; см. https://arduinoprosto.ru/q/13448/disabling-i2c-internal-pull-up-resistors. После этого линии I2C должны показывать 3,3 В вместо 5 В., @Gerben