|
Какой интерфейс выбрать: SPI, TWI, UART?, Для соединения трех устройств |
|
|
|
Dec 2 2010, 11:54
|
Участник

Группа: Участник
Сообщений: 37
Регистрация: 13-11-10
Пользователь №: 60 871

|
Ситуация такая.
Есть три устройства, расположены на расстоянии 3-х метров друг от друга, одно master, два slave. Все три на ATMega446. Необходимо периодически обмениваться данными между мастером и слейвами. Размер пакета - 10 байт, скорость обмена - около 30 пакетов в секунду. Смотрел в сторону TWI- вроде бы он идеально подходит для моей задачи.
Проблема только одна - питания всех трех устройств гальванически развязаны друг от друга. А TWI вроде бы работает только в том случае, когда питание у всех МК общее.
Подскажите, как лучше решить эту проблему?
|
|
|
|
|
Dec 2 2010, 12:22
|
Участник

Группа: Участник
Сообщений: 37
Регистрация: 13-11-10
Пользователь №: 60 871

|
MALLOY2, я правильно Вас понял, что вместо вот такого (из даташита):
можно использовать вот такое:
При этом Vcc1, Vcc2, Vcc3 - это всё местные питания, друг с другом не связанные. И ещё соединить землю питаний всех трех устройств вместе. Я правильно понял?
Сообщение отредактировал Mastakkos - Dec 2 2010, 12:24
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 2 2010, 12:48
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Mastakkos @ Dec 2 2010, 15:54)  Проблема только одна - питания всех трех устройств гальванически развязаны друг от друга. А TWI вроде бы работает только в том случае, когда питание у всех МК общее. Если питания развязаны, то развязаны и земли, и сигнальные линии. Иначе какой в этой развязке смысл ? А если земли у всех общие, то это и не развязка, и незачем тогда развязывать питания. Что-то я вопроса не понял. И вообще, зачем развязка, если между устройствами три метра ? Они что, от разных подстанций питаются ? Уточнили бы задачу, а то не совсем понятно, что, от чего и как питается. А так, первое, что приходит на ум - в мастере сделать два УАРТА, программных или аппаратных, и соединить их со слэйвами с помощью той же опторазвязанной токовой петли (Current Loop). Тогда действительно можно отвязать все и от всего, и расположить слэйвы хоть за 500м от мастера ... Примеры развязок (CL): http://www.kron.com.ua/conv/docs/T232-CL20%20S%20V4.pdf
Сообщение отредактировал kovigor - Dec 2 2010, 12:53
|
|
|
|
|
Dec 2 2010, 13:07
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Цитата MALLOY2, я правильно Вас понял, что вместо вот такого (из даташита): Да, только если напряжения питания одинаковые, иначе нужно будет согласовывать. Цитата Не обязательно, можно соединить tx мастера с rxами слэйвов, а txы слэйвов через диоды (оптопары с ОК) на rx мастера, говорить одновременно и мешать друг другу они не будут. и UART тут развязывать проще, линии однонаправленные. Не находите что вы стоите ту же физику что и I2C ??? зачем тратитьь деньги на то что уже в монтировано в камень ???, а если обмен будет асинхронным ? как вы будите колизии разруливать ? а адресация, зачем писать лишний код ? Еще раз повторю для тех кто в бронепоезде UART это точка точка, если хотите UART много UARTов это уже RS-422 или RS-485, но тут может получится что затраты на драйвера будут лишними.
|
|
|
|
|
Dec 2 2010, 13:53
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата(MALLOY2 @ Dec 2 2010, 20:07)  Не находите что вы стоите ту же физику что и I2C ??? зачем тратитьь деньги на то что уже в монтировано в камень ???, а если обмен будет асинхронным ? как вы будите колизии разруливать ? а адресация, зачем писать лишний код ? Не нахожу, разница в однонаправленности линий. для развязки i2c потребуются специализированные микросхемы которые будут определять с какой стороны кто в данный момент шину тянет, либо вот так, вместо просто одной оптопары. Слова про мастера и слэйвов в исходном посте и i2c как один из вариантов как бы намекают на отсутствие асинхронности. и во всех остальных случаях разве адресация не нужна? Цитата(MALLOY2 @ Dec 2 2010, 20:07)  Еще раз повторю для тех кто в бронепоезде UART это точка точка, если хотите UART много UARTов это уже RS-422 или RS-485, но тут может получится что затраты на драйвера будут лишними. UART это никакая не "точка-точка", а всего лишь способ синхронизации для передачи данных по одной линии без клоков, а вот уж как будет сделан физический уровень 232, 422 (который, кстати, точка-точка в основном), 485 или просто выходы OK оптопар в качестве драйвера линии - это совсем другой вопрос.
|
|
|
|
|
Dec 2 2010, 22:32
|
Участник

Группа: Участник
Сообщений: 37
Регистрация: 13-11-10
Пользователь №: 60 871

|
MALLOY2, да, напряжения питания одинаковые, просто разные источники питания. Объединить их нельзя. Спасибо за совет!
_pv, Вы идете против бритвы Оккама ) Да вообще, мне субъективно TWI больше нравится. Я прочтя соответствующий даташита с перовго раза там все понял, прочтя то же самое по UART - не понял, осталось много вопросов. Вот этот факт и определил мой выбор. Никакой цели организовать гальваноразвязку между устройствами у меня нет - она и так уже есть, это развязка, т.к. источники питания разные. Не было бы её - было бы проще жить на свете.
|
|
|
|
|
Dec 3 2010, 08:51
|
Местный
  
Группа: Участник
Сообщений: 256
Регистрация: 5-04-09
Из: Москва
Пользователь №: 47 180

|
Цитата(Mastakkos @ Dec 3 2010, 01:32)  ...Никакой цели организовать гальваноразвязку между устройствами у меня нет - она и так уже есть, это развязка, т.к. источники питания разные... Если у Вас земля общая - значит гальваноразвязки нет. Если земля развязана - без доп. геморроя I2C сделать не получится. В похожей ситуации (только слэйвов побольше) использовали UART+драйверы RS-485 - и все очень здорово получилось. P.S. На 3 метрах I2C ничего не наловит?
Сообщение отредактировал forever_student - Dec 3 2010, 08:52
|
|
|
|
|
Dec 3 2010, 09:03
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(forever_student @ Dec 3 2010, 11:51)  Если у Вас земля общая - значит гальваноразвязки нет. Да, вопрос так поставлен, что ничего не понять. Гальваноразвязки у автора действительно и в помине нет. И для чего она ему нужна на трех метрах - тоже понять трудно. Разве что нужно связать между собой, например, несколько высоковольтных блоков. Например, человеку нужен управляемый источник высокого напряжения ... Цитата(Mastakkos @ Dec 3 2010, 01:32)  прочтя то же самое по UART - не понял, осталось много вопросов Вы заблуждаетесь. На практике применить и запрограммировать UART на порядок проще, чем TWI. Чего только стоит одна обработка ошибок приема/передачи на TWI. Хотя это дело хозяйское. Пробуйте сами ...
|
|
|
|
|
Dec 3 2010, 13:49
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(MALLOY2 @ Dec 2 2010, 15:09)  SPI можно но в данном случае избыточно, TWI он же I2C идеально подходит SPI избыточно? Вы хотите сказать что SPI сложнее чем I2C? Да это самый простой из всех этих интерфейсов, нужно не морочить никому голову, а делать на нем. Цитата(firstvald @ Dec 3 2010, 11:40)  Выбрав UART вы сможете спокойно отладить обмен устройств независимо друг от друга. UART это сколько угодно slavov. А как их адресовать? Цитата(firstvald @ Dec 3 2010, 11:40)  Вся промышленность так работает. Весьма самоуверенное заявление. Цитата(kovigor @ Dec 2 2010, 15:48)  Если питания развязаны, то развязаны и земли, и сигнальные линии. Иначе какой в этой развязке смысл ? А если земли у всех общие, то это и не развязка, и незачем тогда развязывать питания. Может там сделать каждому свое питание легче, чем тащить к каждому устройству 5В. Развязывать земли при расстоянии 3 метра нет никакого смысла, а вот 5-вольтовое питание передавать на такое расснояние я бы не стал. Цитата(kovigor @ Dec 3 2010, 12:03)  Вы заблуждаетесь. На практике применить и запрограммировать UART на порядок проще, чем TWI. Правильно. А SPI на порядок проще чем UART. Ну хорошо, на пол-порядка  Зато с адресацией слейвов никаких проблем.
Сообщение отредактировал 777777 - Dec 3 2010, 13:47
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|