Делитесь контактами I2C с другими устройствами при отсутствии GPIO
Мы используем ESP12E
в качестве нашего MCU
, и у нас есть три функции :
SIM800
подключен к TX(GPIO1), RX(GPIO3)Матричная клавиатура
, подключенная кGPIOs: 14,13,2,10,0,4,5,16
GLCD
, подключенный кGPIOs: 15,12
А еще нам нужно общаться с модулем RTC(DS3231)
по шине
I2C!
Поэтому мне интересно, как мы могли бы это сделать?
Можно ли совместно использовать контакты I2C с любыми другими контактами ?
И кстати по какой то причине мы не можем использовать IO expander такой как PCF8574
@IMAN4K, 👍-1
Обсуждение2 ответа
Поскольку вы уже хотите использовать I2C, имеет смысл переместить другие устройства на ту же шину I2C, чтобы сохранить контакты ввода-вывода. И даже обработка без нагрузки.
Например, вы можете переместить клавиатуру на специальный интерфейсный чип с матричным интерфейсом, такой как MAX7365 (вероятно, излишество для маленькой клавиатуры), или обычный расширитель ввода-вывода I2C GPIO, такой как MCP23017.
Наконец-то мы нашли 74C922! без какого-либо другого выбора.
Дешевая, доступная, надежная и простая в настройке микросхема
.
Простая схема, которую мы используем:
вот хорошая тема для начала
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Последовательная связь между ESP8266 и Arduino Uno
- Проблемы с подключением I2C на ESP8266 — 12F, какие контакты использовать?
- Запуск 7-контактного OLED-дисплея с 4 контактами (I2C)
- Лазерный датчик ToF (VL53L0X) не работает
- Какие входные контакты я могу использовать на ESP8266 NodeMCU
- ESP 12 непригодных контактов
- esp8266-01 и Arduino UNO обмен данными через i2c
*Почему* вы не можете использовать расширитель ввода-вывода? Это сэкономит вам те 8 контактов, которые необходимы для матричного ввода. Можете ли вы использовать какую-либо другую внешнюю микросхему?, @ratchet freak
Да, я знаю, это отличная "микросхема", но сейчас у нас есть некоторые ограничения на печатную плату и некоторые другие проблемы с поставками, @IMAN4K
GLCD (графический жидкокристаллический дисплей) соединен двумя проводами? Как это возможно, ведь обычно требуется гораздо больше проводов? Если это уже устройство шины I2C, просто поместите модуль RTC на точно такие же линии? В конце концов, I2C-это **шина**.., @Maximilian Gerhardt
@MaximilianGerhardt Это
ST7920 ' GLCD с 3-проводным программным обеспечением SPI, использующим этот хороший lib:https://github.com/olikraus/u8g2 , также мы находимся в последовательном режиме, так что
cs` является чипом enable и подключен к логике 1, @IMAN4KТогда, если бы вы использовали другой дисплей с теми же характеристиками (столбцы, строки и т. д.), но с интерфейсом I2C, разве ваши проблемы не были бы решены? Тогда у вас есть еще 2 провода, но с 2 устройствами на шине I2C. Или добавьте чип-преобразователь I2C в SPI, например NXP SC18IS602B., @Maximilian Gerhardt