|
|
  |
Как связать два или более AVR по i2C |
|
|
|
Apr 12 2009, 15:31
|
Участник

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

|
Вообщем в этом и есть мой вопрос. В некотрых случаях так бывает меньше проблем, чем упаковывать всю перефирию и программный код в один кристал. Есть ссылки на такой материал? Исходники там какие может( на С подобных языках естественно  )
|
|
|
|
|
Apr 12 2009, 18:21
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Denis89 @ Apr 12 2009, 21:14)  Смотрел по этой ссылке какаето муть. По ссылке - переводы атмеловских аппнотов. Цитата Лучше свяжу кристалы по UART. Сделать простую адресацию, чтобы контроллер определился ему ли это команда прилитела, и всё будет пучком  Флаг в руки, барабан на шею. Если предполагаете мультимастер - два флага. Хинт: на I2C (хоть я его и не люблю), если устройств >2, будет проще, но придется ознакомиться с мутью.
|
|
|
|
|
Apr 12 2009, 18:39
|

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

|
Цитата(Artem_Petrik @ Apr 12 2009, 19:29)  Если есть возможность выбирать интерфейс, то лучше, ИМХО, выбрать SPI. Интерфейс быстрый, прост как пробка, а следовательно, вызывает меньше проблем при реализации. Проводов правда больше, но это не большая плата за остальные удобства. +1. IIC есть смысл применять, ИМХО, если устройств действительно много. Если они далеко и лишних проводов нет. А с SPI гораздо проще, да и быстрее, наверное.
|
|
|
|
|
Apr 13 2009, 14:50
|
Гуру
     
Группа: Свой
Сообщений: 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 - параметры/данные
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|