Tengo un proyecto basado en una foto 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 simplemente es más eficiente? Puedo extraer un byte a través de pines io regulares en una cantidad bastante pequeña de instrucciones. ¿Spi utiliza menos potencia de procesamiento? Me desplazaré con bastante frecuencia durante cálculos bastante intensos, por lo que quiero que se dediquen tantos ciclos como sea posible a mi proceso y que no se produzcan desplazamientos.
Mi razón principal para no querer usar spi es que mi diseño actual haría un poco más difícil acceder a los pines requeridos porque ya estoy usando algunos de ellos para otras cosas y tendría que mezclar las cosas. Quería averiguar qué beneficios hay antes de comenzar a romper las cosas y moverlas.
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 "bit-banging", entonces sí, tiende a ser algo más rápido, pero lo más importante es que el procesador puede transferir un byte completo a el periférico para enviar y luego hacer otras cosas mientras se transmite. En el caso de bit-banging, el procesador tiende a estar atascado 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, probablemente pueda tolerar una pausa a mitad de byte para atender una interrupción o incluso para sondear cosas: el ADC serial con reloj de interfaz y las tareas de intervalo de muestra son ejemplos notables de excepciones).
En MCU más capaces, incluso puede ser posible programar un controlador DMA para ejecutar una transferencia de varios bytes desde la memoria a través del motor SPI sin más atención del procesador, especialmente si solo son importantes los datos en una dirección.
Pero muchos proyectos de microcontroladores terminan altamente optimizados para su tarea; Si puede prescindir de 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 de ninguna manera una opción poco común.
Ventajas del bit-banging:
Desventajas del bit-banging:
Ventajas de SPI:
Desventajas de SPI:
Para mí, las ventajas del bit-banging son menores en comparación con las ventajas de SPI. Las desventajas del bit-banging son mucho mayores que las del SPI. Las tres razones principales que puedo ver para elegir bit-banging son para
En el PIC, una implementación de estilo SPI bit-bang convencional toma alrededor de cinco ciclos por bit; con un poco de trabajo en las partes 18Fxx, uno puede reducirlo a aproximadamente cuatro (al costo de aproximadamente tres ciclos por byte de sobrecarga adicional). Ese tiempo se suma al tiempo necesario para obtener datos (normalmente, tres ciclos por byte). Entonces calcule alrededor de 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 buscar el siguiente, lo que permite un tiempo total de aproximadamente 18 ciclos/byte, una ganancia de velocidad de aproximadamente 2,5x.
Para golpes de bits (BB) olvidaste mencionar:
estrella azul