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

 
 
> Как связать два или более 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
Ответов
SasaVitebsk
сообщение Apr 12 2009, 21:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 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
SasaVitebsk
сообщение Apr 13 2009, 14:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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 - 11:08
Рейтинг@Mail.ru


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