Популярный коммуникационный стандарт I2C позволяет осуществлять гибкий последовательный ввод/вывод с помощью простой двухпроводной шины: SCL и SDA. Этот трюк достигается с помощью двунаправленных линий синхронизации и данных. Двунаправленный поток хорош для экономии контактов, но из-за использования пассивных подтягивающих резисторов он не так хорош для экономии энергии. Сопротивления резисторов подтяжки должны быть выбраны достаточно низкими (и, следовательно, пропускать достаточный ток), чтобы заряжать паразитную емкость шины со скоростью, определяемой выбранной скоростью передачи данных. Рисунок 1 иллюстрирует эту неудобную арифметику.
![]() |
|
Рисунок 1. | Скорость шины I2C обратно пропорциональна максимальному эффективному сопротивлению подтяжки. (Источник [1]). |
Величина потребляемого тока V/R и мощности V2/R, расходуемой на пассивное «подтягивание», зависят от емкости шины, напряжения подтяжки и рабочей частоты и, как показано на Рисунке 1, для быстрого режима 400 кГц при напряжении шины 5 В и емкости шины CB = 400 пФ могут достигать 5 В/1 кОм = 5 мА и 52/1 кОм = 25 мВт. Это может легко составлять значительную часть общего энергопотребления системы. Это плохо для батарей и плохо для политкорректности в эпоху «зелености» и «экологической безопасности».
Так как же сэкономить часть этого избыточного тока и мощности? На Рисунке 2 представлен один из способов: активная подтяжка со значениями номиналов, выбранными для наихудшего случая, показанного на Рисунке 1 – высокая скорость (400 кГц) и большая емкость (400 пФ).
![]() |
|
Рисунок 2. | Регенеративная схема активной подтяжки (одна из двух необходимых) с номиналами компонентов, выбранными для наихудшей комбинации, показанной на Рисунке 1. |
Эта топология схемы, простая, учитывая, что ее основной целью была экономия мощности подтяжки, начинается с не обещающей ничего хорошего ноты – пассивного подтягивающего резистора R1. Как все это работает, показано на Рисунке 3.
![]() |
|
Рисунок 3. | Диаграммы сигналов активной подтяжки и 4-этапная последовательность, обозначенная на изображении. |
Процесс активного подтягивания происходит в четыре этапа.
- Освобождение соответствующей сигнальной линии шины (т. е. SCL или SDA) позволяет резистору R1 начать пассивную подтяжку и заряжать емкость шины. Обусловленное этим нарастание напряжения происходит медленно, поскольку сопротивление R1 более чем в 4 раза больше, чем 1 кОм – значения, рассчитанного в соответствии с требованиями Рисунка 1. Очевидно, что нарастание никогда не закончится достаточно быстро!
- Но подождите: результирующий сигнал подается через конденсатор C1 в базу Q2. Следовательно, на этапе 2 процесса транзистор Q2 открывается, забирая с собой также Q1 и образуя очень быструю петлю положительной обратной связи, которая вводит оба транзистора в насыщение и завершает зарядку емкости шины за десятки наносекунд, устраняя падение напряжения на резисторе R1, в результате чего потребление им энергии прекращается.
- Очень небольшая постоянная времени конденсатора C1 емкостью 22 пФ, работающего на сопротивление базы транзистора Q2, быстро разряжает C1 и прекращает управление транзисторами, позволяя им начать выключение и прекратить активную подтяжку. Это дает транзисторам Q1 и Q2 время на восстановление после насыщения.
- Подтягивание к земле запускает следующий цикл активности шины и перезаряжает конденсатор C1 через диод D1, который также защищает транзистор Q2, максимально допустимое обратное напряжение база-эмиттер которого ограничено значением всего 4.5 В.
Таким образом, наша притча о бережном отношении к мощности подтяжки получила счастливый конец: экономия энергии составляет около 75% от требуемой в противном случае, причем без необходимости изменения программного обеспечения.