В вычислительной технике и электротехнике , немного стучать сленг для любого способа передачи данных , который использует программное обеспечение в качестве замены для специализированных аппаратных средств , чтобы генерировать сигналы , передаваемые или принимаемые сигналы процесса. Программное обеспечение напрямую устанавливает и производит выборку состояний GPIO (например, контактов микроконтроллера ) и отвечает за соблюдение всех требований к синхронизации и протокольной последовательности сигналов. В отличие от битового обмена, выделенное оборудование (например, UART , интерфейс SPI ) удовлетворяет этим требованиям и, при необходимости, предоставляет буфер данных.чтобы снизить требования к программному обеспечению по времени. Bit banging может быть реализован с очень низкими затратами и обычно используется во встроенных системах . [1]
Bit banging позволяет устройству реализовывать различные протоколы с минимальными аппаратными изменениями или без них. В некоторых случаях использование битов становится возможным благодаря новым, более быстрым процессорам, потому что более современное оборудование работает намного быстрее, чем оборудование, когда были созданы стандартные протоколы связи.
Пример кода C
В следующем примере кода на языке C байт данных передается по шине SPI .
// передачи байта последовательно, первый старший бит недействительными send_8bit_serial_data ( беззнаковое символ данных ) { Int I ; // выбираем устройство (активный низкий) output_low ( SD_CS ); // отправляем биты 7..0 for ( i = 0 ; i < 8 ; i ++ ) { // учитываем крайний левый бит // устанавливаем высокий уровень строки, если бит равен 1, низкий уровень, если бит равен 0 if ( data & 0x80 ) output_high ( SD_DI ); иначе output_low ( SD_DI ); // импульсы состояния часов, чтобы указать, что битовое значение должно быть прочитано output_low ( SD_CLK ); задержка (); output_high ( SD_CLK ); // сдвинуть байт влево, чтобы следующий бит был крайним левым данными << = 1 ; } // отменить выбор устройства output_high ( SD_CS ); }
Соображения
Вопрос о том, следует ли развертывать битовую синхронизацию или нет, является компромиссом между нагрузкой, производительностью и надежностью, с одной стороны, и доступностью аппаратной альтернативы, с другой. Процесс программной эмуляции потребляет больше вычислительной мощности, чем поддержка выделенного оборудования. Микроконтроллер тратит большую часть своего времени на отправку или получение образцов к контактам и от них за счет других задач. Производимый сигнал обычно имеет больше джиттера или сбоев , особенно если процессор также выполняет другие задачи во время связи. Однако, если программа обработки битов управляется сигналом по прерыванию , это может иметь второстепенное значение, особенно если доступны управляющие сигналы, такие как RTS, CTS или DCD . Программная реализация может быть решением, когда конкретная аппаратная поддержка недоступна или требует более дорогого микроконтроллера.
Смотрите также
- Битовые манипуляции
- Битовый поток
- Bit Twiddler (значения)
- Бит-последовательная архитектура
- 1-битная архитектура
- Интегрированная машина Воза (IWM)
- FTDI , серия микросхем преобразователя USB в последовательный порт, также поддерживающая режим битового взрыва
- 2MGUI (драйвер DOS, созданный Сириако Гарсиа де Селисом, использующий бит-бэнгинг для поддержки нестандартных форматов гибких дисков сверхбольшой емкости, «минуя» обычную логику контроллера гибких дисков, аналогичная программа для дискет Amiga - Disk2FDI Винсента Джогина)
- Виртуальная машина (ВМ) (реализация драйверов виртуальных устройств, эмулирующих фактические аппаратные контроллеры, иногда включает использование методов программирования, подобных битовому)
- Программно-определяемая радиосвязь (SDR)
- Опрос (информатика)
Рекомендации
- ^ Предко, Майкл (2000). Программирование и настройка микроконтроллеров PICmicro (2-е изд.). McGraw-Hill Professional . стр. 10 -12. ISBN 978-0-07-136172-9.
Внешние ссылки
- Асинхронный последовательный (RS-232)
- Примечания по битовому асинхронному последовательному порту
- Битовый удар для асинхронной последовательной связи
- Разрядка по RS-232
- Автобус I²C
- Автобус SPI