stringtranslate.com

Golpes de bits

En ingeniería informática e ingeniería eléctrica , bit banging [1] o bit bashing [ cita requerida ] es un término técnico para cualquier método de transmisión de datos que emplea software como sustituto de hardware dedicado para generar señales transmitidas o procesar señales recibidas. Dicho software establece y muestrea directamente los estados de GPIO (por ejemplo, pines en un microcontrolador ) para transmitir y recibir, respectivamente, y es responsable de cumplir con todos los requisitos de tiempo y secuenciación de protocolo de las señales. A diferencia del bit banging, el hardware dedicado (por ejemplo, UART , SPI , I²C ) satisface estos requisitos y, si es necesario, proporciona un búfer de datos para relajar los requisitos de tiempo del software. El bit banging se puede implementar a muy bajo costo y se usa comúnmente en sistemas integrados . [2]

El bit banging permite que un dispositivo implemente diferentes protocolos con cambios mínimos o nulos en el hardware. En algunos casos, el bit banging es posible gracias a procesadores más nuevos y rápidos, ya que el hardware más reciente funciona mucho más rápido que el hardware que funcionaba cuando se crearon los protocolos de comunicaciones estándar.

Ejemplo de código C

El siguiente ejemplo de código en lenguaje C transmite un byte de datos en un bus SPI .

// transmitir byte en serie, MSB primero void send_8bit_serial_data ( unsigned char data ) { int i ;      // seleccionar dispositivo (activo bajo) output_low ( SD_CS );  // enviar bits 7..0 para ( i = 0 ; i < 8 ; i ++ ) { // considerar el bit más a la izquierda // establecer la línea alta si el bit es 1, baja si el bit es 0 if ( data & 0x80 ) output_high ( SD_DI ); else output_low ( SD_DI );                   // pulsa el estado del reloj para indicar que se debe leer el valor del bit output_low ( SD_CLK ); delay (); output_high ( SD_CLK );    // desplaza el byte a la izquierda para que el siguiente bit sea el dato más a la izquierda <<= 1 ; }     // deseleccionar el dispositivo output_high ( SD_CS ); } 

Consideraciones

La cuestión de si implementar o no el bit banging es una disyuntiva entre la carga, el rendimiento y la fiabilidad por un lado, y la disponibilidad de una alternativa de hardware por el otro. El proceso de emulación de software consume más potencia de procesamiento que el hardware dedicado de soporte. El microcontrolador pasa gran parte de su tiempo enviando o recibiendo muestras hacia y desde los pines, a expensas de otras tareas. La señal producida suele tener más fluctuaciones o fallos , especialmente si el procesador también está ejecutando otras tareas mientras se comunica. Sin embargo, si el software de bit banging está impulsado por interrupciones por la señal, esto puede tener una importancia menor, especialmente si hay señales de control como RTS, CTS o DCD disponibles. La implementación en software puede ser una solución cuando no se dispone de soporte de hardware específico o requiere un microcontrolador más caro.

Véase también

Referencias

  1. ^ "Glosario de términos de ingeniería eléctrica (EE) de Analog Devices" . Consultado el 22 de septiembre de 2024 .
  2. ^ Predko, Michael (2000). Programación y personalización de microcontroladores PICmicro (2.ª ed.). McGraw-Hill Professional . pp. 10–12. ISBN 978-0-07-136172-9.

Enlaces externos

Serie asíncrona (RS-232)
Bus I²C
Bus SPI