turnon 1 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба Хочется странного. Посадить на одну линию (два провода и GND) два датчика с разными интерфейсами, датчик с UART (MH-Z19) и датчик с I2C (SHT21). Один провод - TX, SCL, другой - RX, SDA. Конечно работа с интерфейсами - поочереди, не одновременно. Подскажите, будет ли работать такая конструкция? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 12 minutes ago, turnon said: Подскажите, будет ли работать такая конструкция? Теоретически, информация, передаваемая по UART может совпасть с условием START + SLAVE_ADDR вашего второго датчика. И тот честно подтвердит своё наличие на шине, т.е. выдаст состояние ACK, прижав SDA к земле. Я не думаю, что такая комбинация сигналов понравится первому датчику. Ну, или, наоборот - что-то, передаваемое по I2C совпаст по формату для первого датчика. Тот, в свою очередь, начнёт отвечать. Будет коллизия на шине. А у вас линий не хватает от МК (ПЛИС)? Или всё это наружу прибора выходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба Да, линий не хватает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 2 minutes ago, turnon said: Да, линий не хватает. Поставьте расширитель, типа PCA9534. Её подключаете к МК (ПЛИС) по I2C. А через неё программно придётся сделать UART. Заодно вообще в систему добавите 8 GPIO двунаправленных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 36 minutes ago, turnon said: Один провод - TX, SCL, другой - RX, SDA. Конечно работа с интерфейсами - поочереди, не одновременно. Подскажите, будет ли работать такая конструкция? Изврат, конечно, но можно попользовать SDA для USART в "симплексе", если TxRx USART посоединять на стороне датчика и "мастера". Анекдот про "варить яйца", "кому это нужно и кто это выдержит" ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 4 minutes ago, k155la3 said: Изврат, конечно, но можно попользовать SDA для USART в "симплексе", если TxRx USART посоединять на стороне датчика и "мастера". Анекдот про "варить яйца", "кому это нужно и кто это выдержит" ? Тут не понял, подробнее пожалуйста, что и куда подсоединить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 33 минуты назад, k155la3 сказал: Изврат, конечно, но можно попользовать SDA для USART в "симплексе", если TxRx USART посоединять на стороне датчика и "мастера". ...и получить к.з. на линии, когда во время работы I2C туда решит вклиниться UART? PS: Если экономить пины, то имхо нужно искать другие варианты. Не 2 же линии всего в МК у ТС-а... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 36 minutes ago, turnon said: Тут не понял, подробнее пожалуйста, что и куда подсоединить. Шина I2C работает по схеме "открытый коллектор", те допустима работа нескольких "передатчиков" на одной линии, даже одновременно активным уровнем (это 0). контроллер-то конечно "все стерпит", но допустит ли работу в таком режиме сенсор. 8 minutes ago, jcxz said: ...и получить к.з. на линии, когда во время работы I2C туда решит вклиниться UART? PS: Если экономить пины, то имхо нужно искать другие варианты. Не 2 же линии всего в МК у ТС-а... именно поэтому и "изворот". Это уже проблема контроллера и софта, чтобы не случилось такого. Ради экономии пары проводков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 11 минут назад, k155la3 сказал: именно поэтому и "изворот". Это уже проблема контроллера и софта, чтобы не случилось такого. Ради экономии пары проводков. Можно конечно сделать UART.TX с OK. Но вангую, что в мануале на MH-Z19 наверняка ничего нет про его поведение в случае если ему на UART.RX поступает какой-то мусор. А значит он может и серануть чего-то произвольное в этот момент на UART.TX. И испортит посылку на I2C.SDA. И об этом может никто не узнать, только данные полученные от SHT21 окажутся неверными. И как ни извращайся с софтом контроллера - ничего здесь не сделаешь. PS: А вот когда автор уволится с этой работы и оставит такой колхоз наследнику, то матов от него вдогонку получит немеряно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 5 minutes ago, jcxz said: Можно конечно сделать UART.TX с OK. Но вангую, что в мануале на MH-Z19 наверняка ничего нет про его поведение в случае если ему на UART.RX поступает какой-то мусор. А значит он может и серануть чего-то произвольное в этот момент на UART.TX. И испортит посылку на I2C.SDA. И об этом может никто не узнать, только данные полученные от SHT21 окажутся неверными. И как ни извращайся с софтом контроллера - ничего здесь не сделаешь. PS: А вот когда автор уволится с этой работы и оставит такой колхоз наследнику, то матов от него вдогонку получит немеряно. Согласен, видимо чуда не будет. Надо найти один пин МК и поставить ключ для подачи питания на датчик I2C. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба Только что, turnon сказал: Согласен, видимо чуда не будет. Надо найти один пин МК и поставить ключ для подачи питания на датчик I2C. Вы покажите какие ещё есть пины в вашем МК и на что задействованы. Или схему. Может кто что и посоветует по совмещению функций пинов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 1 minute ago, turnon said: Надо найти один пин МК и поставить ключ для подачи питания на датчик I2C. А вы уверены, что незапитанный датчик не создаст никаких уровней на шине? Разделите же эти линии физически. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
turnon 1 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 18 minutes ago, haker_fox said: А вы уверены, что незапитанный датчик не создаст никаких уровней на шине? Разделите же эти линии физически. Да, об этом не подумал. Хотя как он может что-то создать, он же не среагирует на стартовое уловие? Или может произойти паразитная запитка и заработает и без VCC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба MH-Z19 размером с чемодан, экономить место и выводы на фоне которого в общем случае странно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 5 апреля, 2020 Опубликовано 5 апреля, 2020 · Жалоба 38 минут назад, turnon сказал: Хотя как он может что-то создать, он же не среагирует на стартовое уловие? А вы посмотрите, какое у него допустимое напряжение на этих выводах. Наверняка верхний порог привязан к напряжению питания, т.е. что-то вроде Vcc+0.3 v. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться