Jump to content

    
turnon

UART и I2C на одной физической линии

Recommended Posts

Хочется странного. Посадить на одну линию (два провода и GND) два датчика с разными интерфейсами, датчик с UART (MH-Z19) и датчик с I2C (SHT21).

Один провод - TX, SCL, другой - RX, SDA. Конечно работа с интерфейсами - поочереди, не одновременно. Подскажите, будет ли работать такая конструкция?

Share this post


Link to post
Share on other sites
12 minutes ago, turnon said:

Подскажите, будет ли работать такая конструкция?

Теоретически, информация, передаваемая по UART может совпасть с условием START + SLAVE_ADDR вашего второго датчика. И тот честно подтвердит своё наличие на шине, т.е. выдаст состояние ACK, прижав SDA к земле. Я не думаю, что такая комбинация сигналов понравится первому датчику. Ну, или, наоборот - что-то, передаваемое по I2C совпаст по формату для первого датчика. Тот, в свою очередь, начнёт отвечать. Будет коллизия на шине. А у вас линий не хватает от МК (ПЛИС)? Или всё это наружу прибора выходит?

Share this post


Link to post
Share on other sites
2 minutes ago, turnon said:

Да, линий не хватает.

Поставьте расширитель, типа PCA9534. Её подключаете к МК (ПЛИС) по I2C. А через неё программно придётся сделать UART. Заодно вообще в систему добавите 8 GPIO двунаправленных.

Share this post


Link to post
Share on other sites
36 minutes ago, turnon said:

Один провод - TX, SCL, другой - RX, SDA. Конечно работа с интерфейсами - поочереди, не одновременно. Подскажите, будет ли работать такая конструкция?

Изврат, конечно, но можно попользовать SDA для USART в "симплексе", если TxRx  USART посоединять на стороне датчика и "мастера".

Анекдот про "варить яйца", "кому это нужно и кто это выдержит" ?

 

Share this post


Link to post
Share on other sites
4 minutes ago, k155la3 said:

Изврат, конечно, но можно попользовать SDA для USART в "симплексе", если TxRx  USART посоединять на стороне датчика и "мастера".

Анекдот про "варить яйца", "кому это нужно и кто это выдержит" ?

 

Тут не понял, подробнее пожалуйста, что и куда подсоединить.

Share this post


Link to post
Share on other sites
33 минуты назад, k155la3 сказал:

Изврат, конечно, но можно попользовать SDA для USART в "симплексе", если TxRx  USART посоединять на стороне датчика и "мастера".

...и получить к.з. на линии, когда во время работы I2C туда решит вклиниться UART?

 

PS: Если экономить пины, то имхо нужно искать другие варианты. Не 2 же линии всего в МК у ТС-а...

Share this post


Link to post
Share on other sites
36 minutes ago, turnon said:

Тут не понял, подробнее пожалуйста, что и куда подсоединить.

Шина I2C работает по схеме "открытый коллектор", те допустима работа нескольких "передатчиков" на одной линии, даже одновременно активным уровнем (это 0). 

image.png.4d96e59faf8fa26ab5deda988a128b9a.png

контроллер-то конечно "все стерпит", но допустит ли работу в таком режиме сенсор. 

8 minutes ago, jcxz said:

...и получить к.з. на линии, когда во время работы I2C туда решит вклиниться UART?

PS: Если экономить пины, то имхо нужно искать другие варианты. Не 2 же линии всего в МК у ТС-а...

именно поэтому и "изворот". Это уже проблема контроллера и софта, чтобы не случилось такого. Ради экономии пары проводков.

Share this post


Link to post
Share on other sites
11 минут назад, k155la3 сказал:

именно поэтому и "изворот". Это уже проблема контроллера и софта, чтобы не случилось такого. Ради экономии пары проводков.

Можно конечно сделать UART.TX с OK. Но вангую, что в мануале на MH-Z19 наверняка ничего нет про его поведение в случае если ему на UART.RX поступает какой-то мусор. А значит он может и серануть чего-то произвольное в этот момент на UART.TX. И испортит посылку на I2C.SDA. И об этом может никто не узнать, только данные полученные от SHT21 окажутся неверными. И как ни извращайся с софтом контроллера - ничего здесь не сделаешь.

 

PS: А вот когда автор уволится с этой работы и оставит такой колхоз наследнику, то матов от него вдогонку получит немеряно.  :negative:

Share this post


Link to post
Share on other sites
5 minutes ago, jcxz said:

Можно конечно сделать UART.TX с OK. Но вангую, что в мануале на MH-Z19 наверняка ничего нет про его поведение в случае если ему на UART.RX поступает какой-то мусор. А значит он может и серануть чего-то произвольное в этот момент на UART.TX. И испортит посылку на I2C.SDA. И об этом может никто не узнать, только данные полученные от SHT21 окажутся неверными. И как ни извращайся с софтом контроллера - ничего здесь не сделаешь.

 

PS: А вот когда автор уволится с этой работы и оставит такой колхоз наследнику, то матов от него вдогонку получит немеряно.  :negative:

Согласен, видимо чуда не будет. Надо найти один пин МК и поставить ключ для подачи питания на датчик I2C.

Share this post


Link to post
Share on other sites
Только что, turnon сказал:

Согласен, видимо чуда не будет. Надо найти один пин МК и поставить ключ для подачи питания на датчик I2C.

Вы покажите какие ещё есть пины в вашем МК и на что задействованы. Или схему. Может кто что и посоветует по совмещению функций пинов.

Share this post


Link to post
Share on other sites
1 minute ago, turnon said:

Надо найти один пин МК и поставить ключ для подачи питания на датчик I2C.

А вы уверены, что незапитанный датчик не создаст никаких уровней на шине? Разделите же эти линии физически.

Share this post


Link to post
Share on other sites
18 minutes ago, haker_fox said:

А вы уверены, что незапитанный датчик не создаст никаких уровней на шине? Разделите же эти линии физически.

Да, об этом не подумал. Хотя как он может что-то создать, он же не среагирует на стартовое уловие? Или может произойти паразитная запитка и заработает и без VCC.

Share this post


Link to post
Share on other sites
38 минут назад, turnon сказал:

Хотя как он может что-то создать, он же не среагирует на стартовое уловие?

А вы посмотрите, какое у него допустимое напряжение на этих выводах. Наверняка верхний порог привязан к напряжению питания, т.е. что-то вроде Vcc+0.3 v.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.