• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Подключение двух устройств к портам GPIO14 и GPIO13 на node mcu

RtroN

New member
Я нашел информацию о подключении SD каты и дисплея к node MCU V3, и по этим данным составил схему. Но получилось так, что и sd карта и дисплей подключаются к GPIO14(D5) и GPIO13(D7) одновременно. Подскажите пожалуйста, такая схема будет работать или нет?
Схема:

circuit.jpg
 

RtroN

New member
чтобы не задавать такие вопросы, советую ознакомится с SPI шиной.
Я прочитал об этой технологии и понял что через неё можно подключать несколько устройств, и оно будет работать. Но теперь другой вопрос... Будет ли разница в коде, если бы я подключал по отдельности и вместе?
 

enjoynering

Well-known member
Хорошо. Вы задаёте правильные вопросы. Теперь надо ещё раз про честь. В это раз обратите внимание на картинку где подключено несколько slave устройств. Особенно на количество пинов ss/slave select (иногда его называют cs).

Так на всякий случай, у вас дисплей точно spi? Потому что на картинке i2c.
 

RtroN

New member
Хорошо. Вы задаёте правильные вопросы. Теперь надо ещё раз про честь. В это раз обратите внимание на картинку где подключено несколько slave устройств. Особенно на количество пинов ss/slave select (иногда его называют cs).

Так на всякий случай, у вас дисплей точно spi? Потому что на картинке i2c.
В общем, я прочитал о том как происходит передача данных когда master общается с несколькими slave'ами. Там информация передаётся по одним и тем же каналам, которые подключены параллельно, но у каждого slave'а есть свой отдельный ss с помощью которого master и выбирает кому передавать данные и ss можно подключать к любому пину платы.
Насчёт дисплея я тоже почитал, в часности про технологию i2c, в ней есть один канал передачи данных и линия которая отвечает за такты, благодаря которым и происходит синхронизация отправляемых данных.
Еще я прочитал и посмотрел схемы как подключается i2c, и оказывается его можно подключать к любым пинам платы(D0 - D8).

И теперь у меня созрел вопрос. Можете пожалуйста сказать почему на абсолютно всех схемах в интернете о подключении этого дисплея к nodemcu они подключают его именно к D5 и D7? Это всё-таки так нужно или традиция какая-то?
 

RtroN

New member
Я ошибся в своём высказывании насчёт того что i2c можно подключать к любым пинам, я посмотрел на описание пинов nodemcu и там D1 - scl, а D2 -sda. И если я правильно понимаю, то подключив туда дисплей у меня всё должно заработать. Я правильно понимаю?
 

enjoynering

Well-known member
В общем, я прочитал о том как происходит передача данных когда master общается с несколькими slave'ами. Там информация передаётся по одним и тем же каналам, которые подключены параллельно, но у каждого slave'а есть свой отдельный ss с помощью которого master и выбирает кому передавать данные и ss можно подключать к любому пину платы.
все правильно. подключаем два устройства к MISO, MOSI, SCLK и SS (свой отдельный для каждого slave). Переача/прием данных на slave будет выглядеть так. обратите внимание, пред каждым SS LOW мы меняем параметры SPI, на оптимальные для каждого slave

Код:
  SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE0)); //up to 5MHz, read MSB first, SPI mode 0

  digitalWrite(_ss1, LOW);                                         //set software CS low to enable SPI interface for slave 1

  //read/write slave 1 here!!!

  digitalWrite(_ss1, HIGH);                                         //disables SPI interface for slave 1

  SPI.endTransaction();                                            //de-asserting hardware CS & free hw SPI for other slaves


  SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0)); //up to 10MHz, read MSB first, SPI mode 0

  digitalWrite(_ss2, LOW);                                         //set software CS low to enable SPI interface for slave 2

  //read/write slave 2 here!!!

  digitalWrite(_cs, HIGH);                                         //disables SPI interface for slave 2

  SPI.endTransaction();                                            //de-asserting hardware CS & free hw SPI for other slaves

я так и не понял у вас дисплей i2c или spi?
 

RtroN

New member
все правильно. подключаем два устройства к MISO, MOSI, SCLK и SS (свой отдельный для каждого slave). Переача/прием данных на slave будет выглядеть так. обратите внимание, пред каждым SS LOW мы меняем параметры SPI, на оптимальные для каждого slave

Код:
  SPI.beginTransaction(SPISettings(5000000, MSBFIRST, SPI_MODE0)); //up to 5MHz, read MSB first, SPI mode 0

  digitalWrite(_ss1, LOW);                                         //set software CS low to enable SPI interface for slave 1

  //read/write slave 1 here!!!

  digitalWrite(_ss1, HIGH);                                         //disables SPI interface for slave 1

  SPI.endTransaction();                                            //de-asserting hardware CS & free hw SPI for other slaves


  SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0)); //up to 10MHz, read MSB first, SPI mode 0

  digitalWrite(_ss2, LOW);                                         //set software CS low to enable SPI interface for slave 2

  //read/write slave 2 here!!!

  digitalWrite(_cs, HIGH);                                         //disables SPI interface for slave 2

  SPI.endTransaction();                                            //de-asserting hardware CS & free hw SPI for other slaves

я так и не понял у вас дисплей i2c или spi?
Спасибо за пример кода!
На самом деле я и сам не понял i2c это или spi. На сайте где я собираюсь его покупать написано что это i2c. Но я посмотрел код к схеме там где его подключают к D5 и D7, и там в функцию передаётся параметр что то типа SPI_MODE, точно не помню.
Вот ссылка на этот дисплей: https://poltavskaya-obl.prom.ua/p37...rch:tag:portable:serp&locale=ru&from_spa=true.

Но я всё же надеюсь что смогу подключить его к D1 и D2.
 

RtroN

New member
Я еще посмотрел на фото дисплея и там с обратной стороны написано что он работает через SPI. Но продавец пишет что он поддерживает I2C. Эти интерфейсы взаимозаменяемые?
 

enjoynering

Well-known member
Ссылку на экран в студию.

Некоторый микросхемы/драйвера экранов умеют работать с несколькими шинами. Все зависит от того какие перемычки замкнуты на микросхеме и какая шина выведена на гребёнку. Все эти операции делаются на заводе и менять после покупки экономический не выгодно.

Обычно для дешевых экранов кроме spi или i2c нужен ещё как минимум один пин - DC (называют его по разному, но суть одна). Он нужен для управления регистром и памятью внутри микросхемы экрана. Меняя биты в регистре мы можем менять подсветку, переворачивать экран и тд. Меняя биты в памяти, изменять текст на экране дисплея.

Так вот выставля например DC LOW (может быть и HIGH, зависит от дисплея) мы говорим, что сейчас по шине придет информация для записи в память дисплея (для показа на экране). Если выставить HIGH, то мы говорим, что сейчас по шине будет передаваться информация для записи в cotrol register (те это не текст, а команда, например для поворота экрана, или яркости экрана).
 

RtroN

New member
Ссылку на экран в студию.

Некоторый микросхемы/драйвера экранов умеют работать с несколькими шинами. Все зависит от того какие перемычки замкнуты на микросхеме и какая шина выведена на гребёнку. Все эти операции делаются на заводе и менять после покупки экономический не выгодно.

Обычно для дешевых экранов кроме spi или i2c нужен ещё как минимум один пин - DC (называют его по разному, но суть одна). Он нужен для управления регистром и памятью внутри микросхемы экрана. Меняя биты в регистре мы можем менять подсветку, переворачивать экран и тд. Меняя биты в памяти, изменять текст на экране дисплея.

Так вот выставля например DC LOW (может быть и HIGH, зависит от дисплея) мы говорим, что сейчас по шине придет информация для записи в память дисплея (для показа на экране). Если выставить HIGH, то мы говорим, что сейчас по шине будет передаваться информация для записи в cotrol register (те это не текст, а команда, например для поворота экрана, или яркости экрана).
Понятно, спасибо за помощь! Когда я его куплю, это будет скорее всего через месяц, я всё подключу и здесь отпишусь. Ссылка на дисплей: https://poltavskaya-obl.prom.ua/p371138142-lcd-ips-displej.html?
 

enjoynering

Well-known member
да похоже на isp, работающий только на запись - mosi не используется. Очень странная шелкография на плате - sda, scl. Запутает любого. Так обычно i2c подписывают. Нормальные люди если miso не влезает подписывают так - SDO, DO, SO.
 

RtroN

New member
да похоже на isp, работающий только на запись - mosi не используется. Очень странная шелкография на плате - sda, scl. Запутает любого. Так обычно i2c подписывают. Нормальные люди если miso не влезает подписывают так - SDO, DO, SO.
Ясно, намудрили значит они... Спасибо, Вам, за консультацию!
 
Сверху Снизу