Tengo un proyecto basado en una imagen 18f4550. Para escribir en un registro de desplazamiento '595, ¿existe una clara ventaja de usar spi sobre los pines io regulares? Escuché que spi es más rápido, pero no estoy seguro de cómo. ¿Utiliza un reloj diferente y más rápido que el resto del chip, o es simplemente más eficiente? Puedo golpear un byte a través de pines io regulares en una cantidad bastante pequeña de instrucciones. ¿Spi usa menos potencia de procesamiento? Me desplazaré con bastante frecuencia durante cálculos bastante intensos, por lo que quiero dedicar tantos ciclos como sea posible a mi proceso y no desplazarme.
Mi razón principal para no querer usar spi es que mi diseño actual dificultaría un poco el acceso a los pines necesarios porque ya estoy usando algunos de ellos para otras cosas y tendría que barajarlos. Quería averiguar qué beneficios hay antes de comenzar a romper cosas y moverlas.
Respuestas:
Suponiendo que está comparando un "motor" serial síncrono o periférico spi en el micro para generar la misma secuencia a través de "golpes de bits", entonces sí, tiende a ser algo más rápido, pero lo más importante es que el procesador puede entregar un byte completo para el periférico para enviar y luego hacer otras cosas mientras se transmite. En el caso de los golpes de bits, el procesador tiende a estar atado durante la transmisión (aunque como el micro tiende a ser el maestro y la mayoría de los periféricos son completamente estáticos, es probable que pueda tolerar la pausa a mitad de byte para atender una interrupción o incluso sondear cosas: ADC serial con interfaz de reloj y tareas de intervalo de muestra que son ejemplos notables de excepciones).
En MCU más capaces, incluso puede ser posible programar un controlador DMA para ejecutar una transferencia de múltiples bytes desde la memoria a través del motor SPI sin mayor atención del procesador, especialmente si solo los datos en una dirección son importantes.
Pero muchos proyectos de microcontroladores terminan altamente optimizados para su tarea; si puede ahorrar los ciclos y tolerar la reducción de la velocidad, entonces complicar su software para poder usar cualquier GPIO que haga que el diseño físico sea más limpio no es en absoluto una opción poco común.
fuente
Ventajas de bit-banging:
Desventajas de los golpes de bits:
Ventajas de SPI:
Desventajas de SPI:
Para mí, las ventajas de bit-banging son menores en comparación con las ventajas de SPI. Las desventajas de bit-banging son mucho mayores que las de SPI. Las tres razones principales que puedo ver para elegir bit-banging son para
fuente
En el PIC, una implementación convencional de estilo SPI de bit-bang toma aproximadamente cinco ciclos por bit; con un poco de trabajo en piezas 18Fxx, uno puede reducirlo a aproximadamente cuatro (al costo de aproximadamente tres ciclos por byte de sobrecarga adicional). Ese tiempo es adicional al tiempo requerido para obtener datos (generalmente tres ciclos por byte). Entonces calcula unos 40-43 ciclos por byte. Usando el SPI de hardware, la velocidad mejora a dos ciclos por bit más un par de ciclos adicionales por byte (algunos otros pueden manejar transferencias consecutivas, pero los PIC que he visto no pueden), y mientras el SPI está enviando un byte el procesador puede obtener el siguiente, lo que permite un tiempo total de aproximadamente 18 ciclos / byte, una ganancia de velocidad de aproximadamente 2.5x.
fuente
Para bit banging (BB) olvidó mencionar:
fuente