Перейти к содержанию
    

I2C Master/Slave и микроконтроллеры

Возможна ли следующая реализация системы:

 

Микропроцессор задает шину i2c, к шине подключаются микроконтроллеры, которые для МП являются Slave-устройствами. Микроконтроллер далее задает еще одну шину i2c, к которой подключены ЦАП и АЦП, работающие на этой шине. Относительно ЦАП и АЦП микроконтроллер должен быть Master-устройством.

Т.е. цепочка такая. МП->микроконтроллер (на шине, исходящей от процессора)->Остальные устройства (на шине, исходящей от микроконтроллера). Еще раз повторюсь, что микроконтроллер должен являться слэйвом для процессора (а желательно, иногда и мастером в некоторых случаях), но быть мастером для остальных устройств системы, подключенных к шине, идущей от него.

 

Общий вопрос: Способны ли микроконтроллеры к подобным манипуляциям, если да, то ка.кие (как можно меньшей сложности и количества выводов)?

Работоспособны ли микроконтроллеры серии ATtiny25/V, ATtiny45/V, ATtiny85/V в данных условиях?

Ответы желательны с пояснениями, т.к. я новичек.

 

Заранее спасибо за ответы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо, сейчас что-нибудь накидаю в пейнте.

 

вот, прикрепил структурную схемку примерную

post-71643-1337601112_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще такая схема жизнеспособна, но должны быть выполнены следующие условия:

Микроконтроллер должен иметь во-первых два I2C, а во-вторых иметь возможность работать как мастером, так и слейвом.

По поводу серии ATtiny не подскажу, т.к. их не использовал, хотя I2C (у них он называется TWI) в каком-то виде реализован, но нужно разбираться с его функциональными возможностями.

 

Могу ошибиться, но у ATtiny режим slave отсутствует. Только мастер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Способны ли микроконтроллеры к подобным манипуляциям, если да, то ка.кие (как можно меньшей сложности и количества выводов)?

Мастером шины I2C быть легко. Для этого не требуется аппаратная поддержка, достаточно простого программного управления (bit-bang) любыми двумя ножками порта. Ведь мастер имеет право быть сколь угодно медленным. Поэтому функцию мастера I2C может выполнять любой контроллер.

 

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

 

Из этого следует, что для вторичного мастера вам надо выбрать такой МК, у которого на борту есть апаратный I2C, способный работать в режиме I2C слэйва.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

KykyryzzZ, спасибо за ответ. Буду пытаться разобраться.

 

=AK=, не являются ли Атмеловские TWI-линии полным аналогом SDA и SCL i2c? Насколько слышал - это полный аналог, только названный иначе, чтобы не платить за пользование патентов Филипсу. Тем самым, мы имеем в Тайни аппаратный i2c, как понимаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не являются ли Атмеловские TWI-линии полным аналогом SDA и SCL i2c?

Вам лень самому посмотреть? Атмел прямым текстом пишет (из даташита на Atiny20)

17. TWI – Two Wire Slave Interface

• Phillips I2C compatible

• SMBus compatible (with reservations)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще такая схема жизнеспособна, но

избыточная. Все устройсва могут "висеть" сразу на одной шине и не мешать друг другу

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

избыточная. Все устройсва могут "висеть" сразу на одной шине и не мешать друг другу

 

Вообще, такая идея родилась именно из-за наличия большого количества подчиненных устройств, которым просто не хватит адресов, если их все посадить на одну шину. Мастер будет называть адрес, а на него сразу будет откликаться несколько устройств. Будет конфликт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно столкнулся с подобной проблемой. Схема жизнеспособна. Полностью соглашусь с постом #5 от =АК=.

OFFTOP: Из бюджетных вариантов предлагаю stm8s с аппаратным i2c.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно столкнулся с подобной проблемой. Схема жизнеспособна. Полностью соглашусь с постом #5 от =АК=.

OFFTOP: Из бюджетных вариантов предлагаю stm8s с аппаратным i2c.

 

 

Спасибо!

 

 

Родилась идея отказаться от промежуточных микроконтроллеров, а использовать для увеличения числа шин 4-х канальные i2c мультиплексоры с прерываниями. Мне кажется, что такая идея проще и надежнее. Надеюсь, я на правильном пути.

Изменено пользователем Iream

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На самом деле в распараллеливании системы (как на рисунке) есть свои плюсы. Контроллер независимо работает с преобразователями не мешая обмену на общей шине. Быстродействие всей системы выше, чем с единой общей шиной.

 

Родилась идея отказаться от промежуточных микроконтроллеров, а использовать для увеличения числа шин 4-х канальные i2c мультиплексоры с прерываниями. Мне кажется, что такая идея проще и надежнее. Надеюсь, я на правильном пути.

При таком подходе все равно не получится скинуть ряд задач на "вспомогательных мастеров" и забыть до выполнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. цепочка такая. МП->микроконтроллер (на шине, исходящей от процессора)->Остальные устройства (на шине, исходящей от микроконтроллера). Еще раз повторюсь, что микроконтроллер должен являться слэйвом для процессора (а желательно, иногда и мастером в некоторых случаях), но быть мастером для остальных устройств системы, подключенных к шине, идущей от него.

А что делает ЦП во всём этом процессе? Если только "дёргает" MK с целью получения данных , то ему спокойно подошла бы роль SLAVE , что бы постоянно не "отвлекал" MK от работы .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Родилась идея отказаться от промежуточных микроконтроллеров, а использовать для увеличения числа шин 4-х канальные i2c мультиплексоры с прерываниями.

У Вас родилась правильная идея. Например, PCA9545(A, B, C) от NXP (в их номенклатуре несколько подобныъ ИС). Ещё у TI видал подобное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...