реклама на сайте
подробности

 
 
> Как связать два или более AVR по i2C
Denis89
сообщение Apr 12 2009, 15:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 10-04-09
Пользователь №: 47 468



Вообщем в этом и есть мой вопрос. В некотрых случаях так бывает меньше проблем, чем упаковывать всю перефирию и программный код в один кристал. laughing.gif

Есть ссылки на такой материал? Исходники там какие может( на С подобных языках естественно rolleyes.gif )
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
Stanislav_S
сообщение Apr 12 2009, 15:56
Сообщение #2


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Посмотрите вот здесь, там много всяких апонтов по реализации и применению I2C.
Причина редактирования: Ненужное цитирование.


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Denis89
сообщение Apr 12 2009, 17:14
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 10-04-09
Пользователь №: 47 468



Смотрел по этой ссылке какаето муть. Лучше свяжу кристалы по UART. Сделать простую адресацию, чтобы контроллер определился ему ли это команда прилитела, и всё будет пучком laughing.gif
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение Apr 12 2009, 17:29
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Если есть возможность выбирать интерфейс, то лучше, ИМХО, выбрать SPI. Интерфейс быстрый, прост как пробка, а следовательно, вызывает меньше проблем при реализации. Проводов правда больше, но это не большая плата за остальные удобства.
Go to the top of the page
 
+Quote Post
xemul
сообщение Apr 12 2009, 18:21
Сообщение #5



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Denis89 @ Apr 12 2009, 21:14) *
Смотрел по этой ссылке какаето муть.

По ссылке - переводы атмеловских аппнотов.
Цитата
Лучше свяжу кристалы по UART. Сделать простую адресацию, чтобы контроллер определился ему ли это команда прилитела, и всё будет пучком laughing.gif

Флаг в руки, барабан на шею. Если предполагаете мультимастер - два флага.
Хинт: на I2C (хоть я его и не люблю), если устройств >2, будет проще, но придется ознакомиться с мутью.
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 12 2009, 18:39
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Artem_Petrik @ Apr 12 2009, 19:29) *
Если есть возможность выбирать интерфейс, то лучше, ИМХО, выбрать SPI. Интерфейс быстрый, прост как пробка, а следовательно, вызывает меньше проблем при реализации. Проводов правда больше, но это не большая плата за остальные удобства.

+1. IIC есть смысл применять, ИМХО, если устройств действительно много. Если они далеко и лишних проводов нет. А с SPI гораздо проще, да и быстрее, наверное.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 12 2009, 21:16
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Связывать контроллеры по SPI как раз сложнее. Особенно если их больше 2. Обязательно необходим какой-то протокол.

Применить I2C значительно проще. Я связываю как память. То есть на контроллере слэйв, реализую имитацию 24с01. При этом адрес устройства - применяю уникальный.
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 13 2009, 06:48
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(SasaVitebsk @ Apr 12 2009, 23:16) *
Связывать контроллеры по SPI как раз сложнее. Особенно если их больше 2. Обязательно необходим какой-то протокол.

Применить I2C значительно проще. Я связываю как память. То есть на контроллере слэйв, реализую имитацию 24с01. При этом адрес устройства - применяю уникальный.

Не могу согласится. Если их не более двух - вообще нет никаких проблем. Если более ... О каком протоколе Вы говорите? А что, в случае с IIC - нет?
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 13 2009, 07:55
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



И UART и SPI предполагают подключение точка-точка. Если нужно связать более 2х девайсов придется делать какую то обвязку. Так что в этом случае (БОЛЕЕ 2х девайсов) - I2C предпочтительнее. Если же девайсов 2 - то предпочтительнее использовать то, что останеться на них свободным rolleyes.gif Сложность обслуживания всех 3х вариантов реализации около 0.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 13 2009, 08:05
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(XVR @ Apr 13 2009, 09:55) *
SPI предполагают подключение точка-точка....

Отнюдь. И параллелятся (ибо выходы трехстабильные) и в цепочку соединяются...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 13 2009, 10:51
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(XVR @ Apr 13 2009, 09:55) *
И UART и SPI предполагают подключение точка-точка. Если нужно связать более 2х девайсов придется делать какую то обвязку.

Вы что-то путаете. Больше двух контроллеров соединять по SPI мне пока не приходилось - врать не стану. Но использование множества устройств (пассивных) на одном физическом SPI-интерфейсе - совершенно штатный режим, для этого он и создавался. Этим давно и успешно пользуюсь.
Go to the top of the page
 
+Quote Post
xemul
сообщение Apr 13 2009, 12:03
Сообщение #12



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Автор пока озвучил только "хочу воспарить и полетать" без какой-либо детализации.
Если мультимастер ему не нужен, или устройств всего два, то SPI, безусловно, и проще, и быстрее.
Если нужен, и устройств поболе, то I2C (с ее зачатками хардварного арбитража и адресации) может оказаться удобнее.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 13 2009, 14:50
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Herz @ Apr 13 2009, 09:48) *
Не могу согласится. Если их не более двух - вообще нет никаких проблем. Если более ... О каком протоколе Вы говорите? А что, в случае с IIC - нет?

С точки зрения аппаратной, если рассматривать несколько устр-в, реализуются все интерфейсы с теми или иными ограничениями.
Если брать SPI и пускать кольцо, то пропускная способность падает пропорционально колличеству учитывая % протокола. Если параллелить, то требуются линии выборки.
Если брать UART, то требуются драйверы.
И лишь I2C и 1-wire допускают подключение дополнительных устр-в без внесения аппаратных изменений в линию.

Если учесть, что мы находимся в разделе для начинающих, то я и посоветовал так.
В случае с I2C есть протокол. Но он, фактически, определён самим стандартом. В случае SPI - этого нет. Разработчику самому придётся выдумывать протокол для связи своих устр-в. Причём если предполагается приём/передача данных/команд, то протокол будет - как положено. Обязательно байтстаффинг + адрес устройства + контроль целостности пакета и т.д.

Приведу пример, просто по приколу, реализации протокола с учётом передачи данных и команд.

Передача комманд
St-AdW-Ar-Cmd-Ar-Par1-Ar-Par2-Ar-....ParN-Ar-Sp

Передача данных
St-AdW-Ar-01-Ar-Dat1-Ar-Dat2-Ar-....DatN-Ar-Sp

Чтение данных
St-AdW-Ar-Cmd-Ar-Sp St-AdR-Ar-Dat1-Aw-Dat2-Aw-....DatN-Sp

Где
St - старт
Sp - стоп
AdW/AdR - адрес с битами записи/чтения соответственно
Cmd - команда
Ar/Aw - ASK
Par/Dat - параметры/данные
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01461 секунд с 7
ELECTRONIX ©2004-2016