Bit-banging — технология организации последовательного соединения с использованием программной эмуляции вместо специализированного аппаратного устройства. Программа непосредственно устанавливает состояние GPIO выводов на микроконтроллере (либо LPT на компьютере), таким образом полностью обеспечивая нужные характеристики сигнала. Обычно используется в дешевых устройствах.Mike Szczys. Bit banging through a USB parallel port adapter . — 2013. — February 21.
Ограничения Скорость эмулированного устройства ограничена временем установки вывода и временем исполнения кода. Поэтому Bit-banging как правило используется для эмуляции низкоскоростных устройств или низкоскоростных версий устройств Сложно гарантировать точное время выполнения кода, что может создавать проблемы при реализации протоколов, чувствительных к синхронизации Программная эмуляция расходует ресурсы процессора Полученный сигнал может иметь высокий джиттер, особенно если процессор выполняет другие задачи, кроме коммуникации Требуется ручное согласование уровней сигналов и токов, без которого можно повредить GPIO выводы или второе устройство, участвующее в протоколе
Применение В ядре Linux есть поддержка эмуляции I²C через GPIO.
С помощью техники Bit-banging можно добавить поддержку последовательного порта и I2C к устройствам PIC.
Иногда также реализуются программаторы JTAG, например, на устройствах Arduino.
Существуют реализации простейших USB устройств на GPIO выводах без применения специальных микросхем, реализующих физический уровень (PHY).
Некоторые USB-to-serial адаптеры, например FT232 позволяют работу в режиме bitbang.
Некоторые контроллеры MMC/SD можно перевести в режим, в котором они выдают 4-5 высокочастотных сигнала. Например, с помощью контроллера из состава СнК Jz4720 удавалось создать VGA-сигнал.
В известном программаторе PonyProg используется режим Bit-banging для последовательного порта.
Примечания
Ссылки Notes on bit-banging async serial Bit banging for Async Serial Communication BIT BANGING I2C FOR PIC PROCESSORS / David W. Hoffman. — 2005.
Категория:Обработка сигналов Категория:Эмуляторы