DS1337 с общим подтягиванием I2C
У меня есть проект, использующий ATMEGA328P и микросхему DS1337 RTC. DS1337 представляет собой 8 - контактный IC с VCC на выводе 8 и GND на выводе 4. В соответствии с таблицей данных и вывод 5 (SDA), и вывод 6 (SCL) нуждаются во внешнем подтягивании. Из того, что я читал в другом месте, подтягивания от 4,7 К до 10 К для каждого вывода I2C должно быть достаточно. Учитывая положение контактов I2C друг относительно друга и контакта VCC, я думал об упрощении, используя общий подтягивающий 10K. Этот пост предполагает, что это должно быть возможно, но я все еще не уверен. У кого-нибудь есть опыт работы с этим, то есть с использованием общего подключения к I2C-соединению? Какие могут быть проблемы, если таковые имеются, при этом?
@jhorv, 👍0
Обсуждение1 ответ
Лучший ответ:
Вам нужно по крайней мере одно подтягивание на штифте SDA и по крайней мере одно подтягивание на штифте SCL. Вы не можете использовать одно и то же подтягивание для обоих контактов, так как вы будете замыкать два контакта вместе.
Подтягивания требуются для сигналов I2C, а не для выводов чипа. Если у вас несколько микросхем на шине I2C, вам нужно только одно подтягивание для каждого сигнала. На самом деле не имеет значения (учитывая, что шины I2C предназначены для короткого замыкания), где по сигналу подтягивание происходит по отношению к какому-либо одному чипу.
Я бы лично сказал, что от 4,7 Ком до 10 Ком-это слишком высоко. Я не использую подтягивания более 3,3 Ком для I2C и, скорее всего, 1 коМ, если я использую более высокую скорость (например, 1 МГц) I2C.
Большое спасибо за ваш ответ. У меня также было ощущение, что соединять оба вывода вместе через резистор было не очень хорошей идеей, но в упомянутом мною посте это звучало правдоподобно. Кроме того, в таблице данных не было никаких указаний на то, какие резисторы использовать или как рассчитать их значение, а информация, которую я нашел, находилась в диапазоне от 4,7 К до 10 Тыс. Я попробовал по 10 тысяч за штуку, и это сработало. Однако также будет подключен модуль барометрического датчика (BMP180), который имеет собственные внутренние резисторы. Будет ли это означать, что мне вообще не понадобятся резисторы для DS1337?, @jhorv
@jhorv Резисторы должны только существовать. Не имеет значения, находятся ли они в другом модуле или подключены напрямую к шине. У вас даже может быть несколько резисторов, и в этом случае сопротивление-это просто параллельная сумма этих сопротивлений., @Majenko
Я ошибся с резисторами. Я забыл поднять штифт прерывания высоко, поэтому он всегда был низким, и это выглядело так, как будто DS1337 будил микроконтроллер. DS1337 не работает с резисторами 10K, но и не с резисторами 1K. Я продолжаю получать ошибку I2C 4. Я начну новый вопрос после проведения еще нескольких тестов и предварительных исследований. Еще раз спасибо за вашу помощь., @jhorv
- PCF8583 с задержкой Arduino в одну секунду?
- Минимальное значение I2C-подтягивающий резистор для arduino
- Не удалось выделить SSD1306 при добавлении константы
- Несколько подчиненных устройств I2C на Arduino — Pull-up значения
- Странная проблема. Ардуино перестает работать через несколько часов. Мнения, пожалуйста
- Как обнаружить ошибки I2C с помощью requestFrom()
- Не могу отключить внутренний интерфейс I2C подтягиваний на ESP32
- DS3231 RTC не работает с ESP32
Если вы подключаете SDA и SCL к одному и тому же резистору, вы закорачиваете их вместе. Не похоже на хорошую идею., @Mat