I2C – популярный последовательный протокол для контроллеров питания, АЦП и ЦАП, EEPROM и других устройств. В некоторых приложениях сбора данных и управления питанием необходимо изолировать ведущее устройство от одного или нескольких ведомых устройств из-за помех, проблем с заземлением или соображений безопасности. Кроме того, хотя к шине могут подключаться 128 периферийных устройств, в какой-то момент разница земляных потенциалов и чрезмерная емкость шины начинают снижать запас по уровню помех и временным параметрам.
В этой статье показано, как обеспечить быструю и бесперебойную оптическую изоляцию сигналов шин I2C или SMBus с помощью метода, отвечающего требованиям спецификации шины I2C, расширенной для частоты 400 кГц. Шина I2C состоит из двунаправленных линий тактирования и данных (SCL и SDA), подтянутых к шине питания с помощью резисторов или источников тока. Устройства подключаются к шине через выводы с открытым коллектором. Один из способов изоляции сигналов I2C – это модификация схемы на Рисунке 1, где показана только линия SDA; работа линии SCL идентична.
![]() | |
| Рисунок 1. | Данная схема представляет собой простой изолятор шины I2C. |
Схема на Рисунке 1 работает следующим образом. Устройство, которое выставило низкий уровень на неизолированную линию SDA, включает светодиод оптопары, что приводит к установке низкого уровня на изолированной линии SDA и выключению светодиода оптопары изолированной стороны, и наоборот. Однако если низкий уровень устанавливают устройства по обе стороны изолирующего барьера линии SDA, оптопары находятся в неопределенном состоянии, при котором оба светодиода частично включены. Когда неизолированное устройство отпускает свою линию SDA, напряжение на линии повышается до тех пор, пока светодиод на изолированной стороне не сможет включиться полностью. Только после этого уровень неизолированной линии SDA снова станет низким. Такая ситуация возникает в разные моменты времени во время обмена данными по I2C, в том числе при тактовой синхронизации (по линии SCL), арбитраже нескольких ведущих устройств и арбитраже прерываний SMBus (по линии SDA). На Рисунке 2 показаны подробности работы схемы, изображенной на Рисунке 1. Неинвертирующие буферы с тремя состояниями 74HC125 имитируют выходы с открытым стоком двух устройств I2C. Низкий логический уровень на линии разрешения принудительно устанавливает на выходе низкий уровень, а высокий уровень переводит выход в состояние высокого импеданса. На осциллограммах 1 и 2 показаны сигналы на входах разрешения буферов SDA и изолированной линии SDA. На осциллограммах 3 и 4 показаны, соответственно, их выходные сигналы.
![]() | |
| Рисунок 2. | Простой изолятор шины I2C в некоторых случаях создает значительные выбросы напряжения. |
Схемы подобного типа публиковались в различных вариантах, зачастую с использованием медленных оптронов, для питания светодиодов которых требовался ток от 5 до 10 мА. Такие схемы могут работать в определенном круге приложений, однако они медленны и все равно создают кратковременные выбросы напряжения, а попытки преодолеть проблемы со скоростью и управлением с помощью быстродействующих компонентов делают эти схемы практически непригодными для использования. В схеме на Рисунке 1 используются быстрые оптопары HCPL-2300, для включения светодиодов которых требуется всего 500 мкА. Если обе линии SDA удерживаются в низком состоянии, а затем одновременно отпускаются, оптопары начинают конфликтовать друг с другом, образуя генератор (Рисунок 3). Характер генерации зависит от сопротивления подтягивающего резистора, напряжения питания и емкости линий передачи данных. (Если убрать один из 9-пикофарадных щупов осциллографа, генерация прекращается, а замена его конденсатором 10 пФ снова запускает ее).
![]() | |
| Рисунок 3. | Использование быстродействующих компонентов в схеме на Рисунке 1 приводит к непредсказуемому поведению. |
Схема на Рисунке 4, решает эти проблемы, устанавливая три логических уровня: «высокий» (подтянутый к 5 В), «подтянутый к земле» и «подтягиваемый к земле». Когда с обеих сторон устройства находятся в состоянии покоя, и уровень линии высокий, обе оптопары выключены. Когда одна из сторон опускает свою линию ниже 0.4 В (безопасное допущение как для выходов с открытым коллектором, так и с открытым стоком), компаратор включает свой светодиод. Линия другой стороны притягивается к уровню примерно 0.6 В, что по-прежнему интерпретируется как низкий логический уровень, но не приводит к включению светодиода на этой стороне. Когда обе стороны опускают уровни своих линий вниз, оба светодиода включены. В этом состоянии, если одна сторона отпускает свою линию, ее напряжение плавно поднимается с низкого выходного уровня устройства I2C примерно до 0.6 В.
![]() | |
| Рисунок 4. | На этой осциллограмме показана работа усовершенствованного изолятора шины I2C. |
На Рисунке 5 показаны детали работы схемы, изображенной на Рисунке 4. Комбинация компаратора LT1719 и оптоизолятора HCPL-2300 соответствует требованиям к тактированию шины I2C, работающей на частоте до 400 кГц. Общая задержка распространения составляет примерно 100 нс, а логические пороги можно настроить в соответствии с другими требованиями. Хотя эту схему можно использовать как для линий SDA, так и для SCL для обеспечения полной тактовой синхронизации, дополнительная схема не требуется, если ведущее устройство никогда не пытается обмениваться данными быстрее, чем самое медленное ведомое устройство. Если тактовая синхронизация не нужна, можно использовать один оптоизолятор для SCL.
![]() | |
| Рисунок 5. | На этой осциллограмме показана работа усовершенствованного изолятора шины I2C. |







