Смещение уровня I2C

11

В настоящее время я разрабатываю схему, которая может записывать данные с датчика и сохранять данные, записанные в EEPROM. Мои два устройства (EEPROM и для тестирования RTC) подключены через шину I2C к PIC16F887 µC. Однако рабочий диапазон напряжения двух устройств не одинаков (5 В для EEPROM, 3,3 для RTC), и моя батарея - это батарея 9 В.

Поэтому я разработал электронную схему со сдвигом уровня, состоящую из MOSFET для проводки SDA / SDL. Кроме того, я добавил два стабилизатора напряжения LM317 для питания устройств (9 В -> 3,3 В и 9 В -> 5 В). Поскольку я не являюсь экспертом в разработке таких вещей, я был бы признателен, если бы вы посмотрели на то, что я сделал, и сказали бы, сделал ли я что-то ужасно неправильно!

введите описание изображения здесь

Al_th
источник
Просто для справки: electronics.stackexchange.com/q/708/4950
PetPaulsen

Ответы:

3

Несмотря на другие комментарии, само решение в порядке. Я вижу несколько мелких проблем, хотя.

  1. 10-кратные подтягивающие резисторы в шине недостаточно жесткие, особенно если вы хотите использовать более высокие скорости шины.

  2. Вам нужны входные и выходные развязывающие конденсаторы на ваших линейных регуляторах и цифровых ИС. 100 нФ - хорошее начало для цифровых интегральных схем и линейных регуляторов, 100 нФ на входах и 1 мкФ на выходах.

Адам Лоуренс
источник
Спасибо за разъединяющий наконечник конденсатора, на самом деле это показано на большинстве схем линейных регуляторов, но я полностью пропустил эту часть! Для развязывающего конденсатора для цифровых микросхем вы имеете в виду один конденсатор между их входным напряжением и землей, все в порядке? (Просто чтобы убедиться, что я понял, что вы имели в виду!) И наконец, вы говорите, что подтягивающие резисторы 10 кОм далеки от того, чтобы быть достаточно жесткими, но в спецификации они рекомендуют эти значения для частоты шины 400 кГц. Есть ли проблема со смещением уровня? В любом случае, этот совет был великолепен!
Al_th
1
Правильно - держите развязывающие конденсаторы как можно ближе к выводам питания и возврата. Если на линиях I2C имеется какая-либо значительная емкость, вам нужно будет уменьшить эти подтяжки, чтобы края были острыми. Я обычно начинаю с 1.8к и оцениваю оттуда.
Адам Лоуренс
Хорошо, спасибо за все, я надеюсь, что это поможет людям играть с разными устройствами I2C!
Al_th
-4

Да, вы сделали что-то на своей схеме, что ужасно неправильно. Для правильного сдвига уровня напряжения см. Адрес ведомого устройства I2C, не подтвержденный (иногда) . Микросхема MAX3373E используется для сдвига уровня. Обратите внимание, что подтягивающие резисторы показаны на линиях SDA и SCK. Однако при использовании MAX3373E подтягивающие резисторы не требуются, поскольку MAX3373E имеет встроенные подтягивающие элементы с обеих сторон линий ввода / вывода. Есть и другие микросхемы, доступные для смещения уровня. Вы можете перейти к Digi Key или Mouser и искать.

Suirnder
источник
5
Подход ОП в порядке! У NXP даже есть примечание приложения по теме. Не спешите судить.
Адам Лоуренс
Я вижу, где я ошибся. Символ для полевых транзисторов не отображается правильно, диод отсутствует.
Suirnder
1
@Suirnder Есть риски, присущие слишком сильным и ограниченным знаниям. Не первый такой пост от вас, я полагаю.
Аниндо Гош
1
@ Боже, я учу уроки. Я должен был проверить таблицу данных на полевых транзисторах в первую очередь.
Suirnder