stringtranslate.com

Бит стучит

В компьютерной инженерии и электротехнике бит -бэнгинг [1] или бит-бэшинг [ требуется ссылка ] — это термин для обозначения любого метода передачи данных , который использует программное обеспечение в качестве замены выделенного оборудования для генерации передаваемых сигналов или обработки полученных сигналов. Такое программное обеспечение напрямую устанавливает и выбирает состояния GPIO (например, выводы на микроконтроллере ) для передачи и приема соответственно и отвечает за выполнение всех требований по синхронизации и протокольной последовательности сигналов. В отличие от бит-бэнгинга, выделенное оборудование (например, UART , SPI , I²C ) удовлетворяет этим требованиям и, при необходимости, предоставляет буфер данных для смягчения требований программного обеспечения по синхронизации. Бит-бэнгинг может быть реализован с очень низкой стоимостью и обычно используется во встраиваемых системах . [2]

Бит-бэнгинг позволяет устройству реализовывать различные протоколы с минимальными или нулевыми изменениями оборудования. В некоторых случаях бит-бэнгинг становится возможным благодаря новым, более быстрым процессорам, поскольку более современное оборудование работает намного быстрее, чем оборудование, когда создавались стандартные протоколы связи.

Пример кода на языке С

Следующий пример кода на языке C передает байт данных по шине SPI .

// передавать байты последовательно, старший байт первый void send_8bit_serial_data ( unsigned char data ) { int i ;      // выбор устройства (активный низкий) output_low ( SD_CS );  // отправить биты 7..0 for ( i = 0 ; i < 8 ; i ++ ) { // рассмотреть самый левый бит // установить линию в высокий уровень, если бит равен 1, и в низкий уровень, если бит равен 0 if ( data & 0x80 ) output_high ( SD_DI ); else output_low ( SD_DI );                   // импульс состояния часов, чтобы указать, что следует считать значение бита output_low ( SD_CLK ); delay (); output_high ( SD_CLK );    // сдвигаем байт влево, чтобы следующий бит был самыми левыми данными <<= 1 ; }     // отменяем выбор устройства output_high ( SD_CS ); } 

Соображения

Вопрос о том, следует ли развертывать bit banging или нет, является компромиссом между нагрузкой, производительностью и надежностью с одной стороны, и доступностью аппаратной альтернативы с другой. Процесс программной эмуляции потребляет больше вычислительной мощности, чем поддержка выделенного оборудования. Микроконтроллер тратит большую часть своего времени на отправку или получение образцов на контакты и с них за счет других задач. Производимый сигнал обычно имеет больше джиттера или сбоев , особенно если процессор также выполняет другие задачи во время связи. Однако, если программное обеспечение bit banging управляется прерываниями сигнала, это может иметь второстепенное значение, особенно если доступны управляющие сигналы, такие как RTS, CTS или DCD . Реализация в программном обеспечении может быть решением, когда определенная аппаратная поддержка недоступна или требует более дорогого микроконтроллера.

Смотрите также

Ссылки

  1. ^ "Analog Devices Glossary of Electrical Engineering (EE) Terms" . Получено 2024-09-22 .
  2. ^ Предко, Майкл (2000). Программирование и настройка микроконтроллеров PICmicro (2-е изд.). McGraw-Hill Professional . стр. 10–12. ISBN 978-0-07-136172-9.

Внешние ссылки

Асинхронный последовательный (RS-232)
I²C шина
SPI-шина