roboforum.ru

Технический форум по робототехнике.

I2C Проблемы? Реализации?

I2C Проблемы? Реализации?

Виталий » 23 ноя 2004, 20:57

Если кто-то работал с этим протоколом, то попрошу высказаться.
Сразу возникает вопрос, в нем есть контроль ошибок?

aliens » 23 ноя 2004, 21:00

На robo.com.ua есть статья про протокол, почитай мож найдешь ответ

setar » 24 ноя 2004, 19:27

Поговорил с коллегой по работе, он реализовавал самостоятельно протокол последовательного асинхронного обмена меж контроллерами, обещал поделиться наработками.

setar » 24 ноя 2004, 19:37

aliens писал(а):На robo.com.ua есть статья про протокол, почитай мож найдешь ответ

вот эта статья http://www.robo.com.ua/articles.php?cmd=22&id=28

Змей-Горыныч » 03 мар 2005, 07:04

А вот ещё инфа про I2C http://www.gaw.ru/html.cgi/txt/interface/iic/index.htm
Это перевод Datasheet-а с интернетовского сайта производителя.  :!:

Змей-Горыныч » 27 апр 2005, 06:10

:?:
Ну так что? Никому I2C не приглянулся? Никто не использует этот протокол обмена?
Чувствую, придётся взяться за освоение самому...

ASin » 27 апр 2005, 11:53

Змей-Горыныч писал(а)::?:
Ну так что? Никому I2C не приглянулся? Никто не использует этот протокол обмена?
Чувствую, придётся взяться за освоение самому...


Осваиваю его :-)
Приятная штука, недостатков пока не замечено.
Среди железа -- полный зоопарк. Master -- at90s2313, програмная реализация (переходник COM<->I2C). Slave 1 -- atmega8, железный I2C (Контроллер двигателей). Slave 2 -- какой-то PIC, похоже железный I2C (сонар SRF08).
Обе пары Master-Slave работают замечательно, подключать оба устройства однвременно буду на днях.

-= Александр =- » 28 апр 2005, 17:10

У меня вот вопрос возник: есть у меня пачка восьминогих ЕЕПРОМин I2C, можно ли их все в один контроллер параллельно воткнуть? И как тогда выбирать с какой из них общаться? Да и вообще как в нее записать и прочитать байт?

Теоретически то все понятно, но вот с шиной этой раньше дело не имел, да и память внешнюю только параллельную юзал...

Stepan » 28 апр 2005, 17:19

-= Александр =- писал(а):У меня вот вопрос возник: есть у меня пачка восьминогих ЕЕПРОМин I2C, можно ли их все в один контроллер параллельно воткнуть? И как тогда выбирать с какой из них общаться? Да и вообще как в нее записать и прочитать байт?

Теоретически то все понятно, но вот с шиной этой раньше дело не имел, да и память внешнюю только параллельную юзал...

Зачем параллельно когда можно последовательно.  :о) Если я правильно помню- у таких еепром есть спец входы для задания адреса- то есть просто задаёшь всем разные адреса, вешаешь на одну шину и вперёд. Сам контроллер в этом случае будет генерировать нужный адрес слейва.

-= Александр =- » 30 апр 2005, 01:33

Тоесть ноги адреса - это адрес на шине, а не в памяти?

ASin » 30 апр 2005, 03:35

-= Александр =- писал(а):У меня вот вопрос возник: есть у меня пачка восьминогих ЕЕПРОМин I2C, можно ли их все в один контроллер параллельно воткнуть? И как тогда выбирать с какой из них общаться?


С ЕЕПРОМами не общался, но, по идее, каждая посылка в i2c начинается с адреса slave. Тот slave, который получил свой адрес, продолжает слушать шину, остальные отключаются. Сонар, например, по дефолту имеет адрес 0xE0. Для того, чтобы повесить их на шину несколко штук, надо каждому прописать уникальный адрес. Это делается по той же i2c, спец-последовательностью команд.

-= Александр =- писал(а): Да и вообще как в нее записать и прочитать байт?


Есть тут под рукой библиотечка для работы с ЕЕПРОМ. Там доступ организован побайтово. То есть для записи в память по шине посылается пакет [Адрес устройства, Старший байт адреса ячейки памяти, Младший байт я.п., Новое значение]. Для чтения -- аналогично.
Однако, в даташите по какому-то ЕЕПРОМу видел такие слова, как page write и sequential read. В принципе, размер пакета i2c неограничен -- можно хоть всё подряд считывать.

Stepan » 30 апр 2005, 23:09

-= Александр =- писал(а):Тоесть ноги адреса - это адрес на шине, а не в памяти?

Да- только это последние бита три -четыре адреса- остальные предопределены для вида микросхемы -в данном случае еепром.
Про то, что адрес можно установить программно не слышал- но почему нет.

Змей-Горыныч » 06 фев 2006, 14:30

Воистину, пока сам не поставишь себе конкретную задачу, и не разберёшься САМ, всё кажется сложно и непонятно.
Зато когда припрёт - берёшь и делаешь. Вот, например я закончил системку недавно, где на шине TWI (aka I2C) 5 контроллеров ATmega16. Использовал хардовые модули TWI. Не просто было только по началу. Когда разобрался - очень даже "ничегошный" протокол!

DeHuCoH » 06 фев 2006, 16:28

реализовывал программно i2c на at89c51. работал как с еепром, так и с srf и вроде ничего сложного. есть у каждого девайса свой адрес, и контроллер просто выбирает, с кем работать.но для еепромов есть помоему ограничение на длину пакета,для каких то 16 байт,для каких то 64 да и инфы помоему много.

NeoLP » 07 фев 2006, 17:25

Я реализовывал этот протокол в меге и связывал два процессора между собой, изумительная вещь, адресация, контроль того, что данные приняты, а еще возможно объединять на одной линии 3.3в устройства и 5в, песня и сказка...


Rambler\'s Top100 Mail.ru counter