Обратим внимание на рис. 1.5.
Рис. 1.5. Аппаратная реализация шины I2C в режимах low-speed и fast-speed
Интерфейс любого устройства, подключенного к шине I2C, как видно из рисунка, отличается предельной простотой. Он состоит из двух транзисторов с открытым стоком (коллектором) и двух буферных элементов с высоким входным сопротивлением. Один из выводов назван SDA (Serial Data Line), предназначается для связи с линией последовательных данных. Второй вывод имеет сокращенное название SCL (Serial Clock Line), предусмотрен для связи с линией синхронизации.
Как известно, по любым цифровым шинам передаются сигналы, характеризуемые только двумя электрическими состояниями — «О» и «1» («низкий уровень» и «высокий уровень»). Состояние, когда обе линии (SDA и SCL) установлены в состояние «1», считается свободным шинным состоянием. Шина в этот момент не занята и готова к трансляции данных (иначе говорят, что шина находится в состоянии ожидания). Но каким образом обеспечить это состояние, если интерфейсные элементы не имеют активных выходов, если наружу выведены открытые выводы элементов? Для обеспечения логических состояний к шине подключаются два внешних резистора R^u (pull-up resistors), «подтягивающие» линии к напряжению питания UnHT. Типичная величина этих резисторов колеблется в пределах 1...10 кОм. На рис. 1.5 эти резисторы показаны внешними, и такая ситуация прослеживается часто. Но иногда они имеются в составе master-абонента. Вообще интерфейс master-абонента желательно изучить досконально, поскольку его выходы могут быть активными (иметь вместо pull-up резисторов транзисторные ключи) и тогда на шине возникнет конфликт.
Здесь мы можем четко сказать, в чем главное отличие master-абонента от slave-абонента. Это очень просто: только master-абонент может генерировать сигнал SCL.
Важнейшим критерием, определяющим возможность использования той или иной шины, является ее спектр технических характеристик. Шина I2C относится к классу двунаправленных асинхронных шин с последовательной передачей данных и, как следствие, обладает достаточно низкой пропускной способностью. Поэтому ее почти не используют в составе персональных компьютеров, разве что как вспомогательную для идентификации установленных устройств [1]. А вот для согласования работы устройств, наполняющих изделия бытовой техники, она вполне годится.
Основные технические характеристики шины I2C по спецификации 1.0 приведены в табл. 1.1.
Таблица 1.1. Основные технические характеристики шины I2C (спецификация 1.0)
Наименование параметра | Значение параметра |
Скорость обмена low-speed | не более 100 кбит/с |
Скорость обмена fast-speed | не более 400 кбит/с |
Число адресуемых устройств (7 бит) | до 128 |
Суммарная длина линий SCL и SDA | не более 4 м |
Суммарная паразитная емкость относительно общего провода | не более 400 пФ |
Входная емкость на каждый вывод абонента | не более 10 пФ |
Изучая данные табл. 1.1, можно сделать заключение, что шина I2C совершенно не подходит для связи между удаленными абонентами, а значит, может быть использована только в составе одного прибора. Главным образом этот вывод исходит из малой протяженности линий SDA и SCL. Собственно говоря, в интернете автором была найдена страница, на которой ее создатель сообщил о том, что его конструкции без проблем работают при суммарной длине шины около 100 метров (естественно, с понижением скорости обмена данными). Но этот режим уже не нормируется оригинальной спецификацией, а значит, и надежная работа устройств не гарантируется.
Пропускная способность шины определяется как параметрами интерфейсов, так и паразитными параметрами линий SDA и SCL. На рис. 1.6 показаны эти паразитные параметры:
• Спр — распределенная емкость линии относительно общего провода;
• Свх — входная емкость интерфейса;
• Z,np — индуктивность проводника линии.
В протоколе обмена по шине используются не только статические состояния линий («О» и «1»), но и перепады уровней («О» —> «1» и «1» -> «О») и наличие паразитных параметров выражается в «затягивании» фронтов, а также спадов импульсов, как показано на рис. 1.7, что может нарушить нормальный обмен данными.
Еще одна опасность, скрытая в слишком длинных проводниках, связана с перенапряжениями, которые могут возникнуть на интерфейсных элементах при значительных величинах паразитной индуктивности проводов (L ). Эта ситуация отражена на рис. 1.8.
Как показано в [3], резкое закрытие транзистора VT характеризуется индуктивным выбросом на его стоке. Это явление используется в так называемых бустерных схемах источников питания, но здесь оно крайне вредно. И хотя в подавляющем большинстве случаев внутри микросхем предусматривается защита входных цепей, например, по варианту рис. 1.9, я, позволяющая «сбросить» энергию импульса в источник питания, все же лучше дополнительно ввести защиту по варианту рис. 1.9, б. Когда может потребоваться такая защита?
В процессе экспериментов и отладки схемы, когда обычно микроконтроллер и slave-устройства устанавливаются на отдельных платах и связи между ними не удается сделать короткими. Напряжение пробоя стабилитрона VD следует выбирать па 0,5... 1 В больше уровня «1» на линиях SDA и SCL. И хотя в документации [4] такой способ защиты не встречается по вполне понятной причине — профессиональные разработчики обладают гораздо более солидными возможностями по выполнению макетных работ, — радиолюбителю лучше обезопасить себя от возможных путей выхода микросхем из строя. Поиск причины пробоя — долгое и мучительное занятие, связанное к тому же с дополнительными финансовыми расходами, так что осторожность не помешает! Стабилитрон можно не устанавливать на печатной плате в законченной и отлаженной конструкции.
Рассмотрим теперь способ защиты от высоковольтных наводок, приведенный в фирменной документации [4] и отраженный на рис. 1.10. Важно отметить, что данный способ предпочтительнее использовать в режиме Hs-mode. Согласно рекомендациям, в схему вводятся защитные резисторы Rs. Чтобы сократить время нарастания сигнала синхронизации, в интерфейс master-устройства вводится источник тока MCS. Сами же сигналы SDA и SCL здесь именуются SDAH и SCLH соответственно (индекс «Н» — это сокращение от слова high — высокий).
Каким способом можно определить величину резисторов RpU и Rs? В фирменной документации [4] есть ответ на этот вопрос. Там приводятся графики, оптимизирующие способ выбора резисторов. Графики отнормированы относительно разных напряжений питания, но поскольку наиболее вероятным видится вариант использования микросхем при VDD = 5 В, то сведения ограничены только этим напряжением.
Вначале производится выбор резистора Rpu по рис. 1.11. Рассматривая этот рисунок, можно сделать попутный вывод о том, что паразитная емкость практически не оказывает влияния на методику выбора резистора Rs. Читатель также вправе задать следующий вопрос: Как определить величину паразитной емкости? Действительно, сделать это не так-то просто. Современные пакеты компьютерного схемотехнического моделирования при «разводке» печатных плат позволяют отмоделировать паразитные элементы, определить их величину. Однако такие программы доступны далеко не всем и далеко не все умеют ими правильно пользоваться, поэтому при разработке радиолюбительских конструкций можно придерживаться «золотой середины», приняв значение паразитной емкости не более 100...200 пФ.
Итак, после определения Rpu по рис. 1.13 определяем номинал резистора Rs (если, конечно, его предполагается ввести в схему). В заключение проверяем по рис. 1.12 номинал резистора Rpu. К примеру,
для напряжения питания 5 В оно должно быть не менее 1,5...2 кОм. Выполнение требований графиков позволит получить в режиме Hs-mode максимальную скорость передачи.
Не следует также забывать и о топологии печатной платы. Линии подвержены не только внешним помехам, но также и перекрестной связи, когда сигнал SDA наводится в линию SCL, и наоборот. Если суммарная длина линии превышает 10 см, рекомендуется располагать токоведущие дорожки в такой последовательности:
SDA
V
v DD
Общий SCL
Хорошо использовать печатные платы с отдельными слоями, специально выделенными под общий провод и провод VDD, что, конечно, в радиолюбительских условиях едва ли осуществимо. Удачным также является использование экранированных кабелей, экранная жила которых соединена с общим проводом схемы. Возможно также применить скрученные попарно проводники.
Как уже было сказано ранее, скорость передачи по шине I2C ограничена не только внешними факторами, но и внутренними параметрами интерфейсов, их схемотехникой. Едва ли разработчик принципиальных схем сможет исправить интерфейс, заставить его работать быстрее — эта задача под силу только разработчику интегральной
схемы. Но узнать, почему это ограничение наложено, полезно будет даже радиолюбителю. Итак, взглянем на рис. 1.14 и рис. 1.15.
В обоих схемах очень важно сделать так, чтобы транзистор VT открывался и закрывался как можно быстрее. Казалось бы, нет никаких препятствий, чтобы его открывание происходило мгновенно. Однако (и это показано в [3]) из-за наличия так называемой емкости Миллера Cmil образуется местная отрицательная обратная связь, которая не дает транзистору быстро войти в состояние насыщения. Читатель может возразить, обратив внимание на величину резистора R, и предложить уменьшить его номинал. Но тогда мы столкнемся со значительным увеличением тока потребления микросхем, что, конечно, тоже нехорошо.
Ограничения, накладываемые на минимальную величину резистора RpU, связаны с тем, что через него в состоянии линии «О» должен протекать ток не более 3 мА. Легко заметить, что для напряжения питания VDD = 5 В величина Rpu ограничена номиналом 1,7 кОм. Соответственно емкость линии не должна превышать 200 пФ. Но если линия имеет большее значение паразитной емкости? Тогда можно использовать схему, изображенную на рис. 1.16. В течение времени нарастания или спада сигнала линии микросхема НСТ4066 подключает в промежутке между 0,8 и 2,0 В форсирующий резистор R^,,.
Еще одной важной технической характеристикой шины является ее совместимость. Ранее разработанные элементы, обладающие только возможностями низкоскоростного обмена, должны без проблем связываться с высокоскоростными, и наоборот. Дакайте сейчас рассмотрим поподробнее вопрос совместимости устройств, подключаемых к шине, тем более что мы не вернемся к нему в рамках этой книги.
Итак, к шине I2C могут быть подключены интерфейсы трех типов: low-speed, fast-speed, Hs-mode. Понятно, что обмен данными может быть осуществлен со скоростью, доступной самому медленному интерфейсу. В табл. 1.2 приведены возможные предельные скорости обмена по совмещенной шине.
Таблица 1.2. Скорость обмена данными в совмещенных шинах
Направление передачи | Конфигурация шины i2C | |||
Hs + fast + low | Hs + fast | Hs+ low | fast + low | |
Hs-Hs | 0...3.4 Мбит/с | 0—3,4 Мбит/с | 0...3,4 Мбит/с | - |
Hs - fast | 0... 100 кбит/с | 0...400 кбит/с | - | - |
Hs- low | 0... 100 кбит/с | - | 0... 100 кбит/с | - |
fast - low | 0...100 кбит/с | - | - | 0... 100 кбит/с |
fast - fast | 0... 100 кбит/с | 0...400 кбит/с | - | 0... 100 кбит/с |
low-low | 0...100 кбит/с | - | 0... 100 кбит/с | 0... 100 кбит/с |
Если соединить устройства разных типов по классической схеме, то разные скорости обмена могут быть и не реализованы. Поэтому приходится группировать эти устройства, как показано на рис. 1.17, и вводить между группами мосты (bridge). Назначение моста — отсоединить более медленные элементы в моменты обмена между более быстрыми.
Дополнительное удобство, обеспечиваемое мостом, — возможность использования для питания шины двух напряжений (VDD1 и VDD2). Мост включается как master/slave-устройство Hs-режима и управляется сигналами SDAH, SCLH, SDA, SCL. Он может также присутствовать в составе отдельных микросхем (например, микроконтроллеров) как самостоятельное устройство.
Отметим также, что шина I2C позволяет совмещать устройства с разными напряжениями питания. Pull-up резисторы желательно подключать к питающему напряжению 5 В, как показано на рис. 1.18.
Литература:
Б. Ю. Семенов, «ШИНА 12С В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ» ,Москва СОЛОН-Р 2002
0 коммент.:
Отправить комментарий