9 votos

¿Es SPI mucho más rápido que el bit-banging?

Tengo un proyecto basado en un pic 18f4550. Para escribir en un registro de desplazamiento '595, ¿hay una clara ventaja de utilizar spi sobre los pines io regulares? He oído que spi es más rápido, pero no estoy seguro de cómo. ¿Utiliza un reloj diferente, más rápido que el resto del chip, o es simplemente más eficiente? Puedo bit-bang a cabo un byte a través de pines io regulares en un número bastante pequeño de instrucciones. ¿Consume spi menos potencia de procesamiento? Voy a estar desplazando hacia fuera con bastante frecuencia durante los cálculos bastante intensos, así que quiero tantos ciclos como sea posible dedicados a mi proceso y no desplazando hacia fuera.

Mi principal razón para no querer usar spi es que mi actual diseño haría un poco más difícil acceder a los pines necesarios porque ya estoy usando algunos de ellos para otras cosas y tendría que barajar las cosas. Quería saber qué ventajas tiene antes de empezar a desmontar cosas y cambiarlas de sitio.

5 votos

Puedes hacer SPI por bit-banging.

17voto

Andrew Walker Puntos 9038

Suponiendo que estés comparando un periférico spi o un "motor" serie síncrono en el micro con la generación de la misma secuencia mediante "bit-banging", entonces sí, tiende a ser algo más rápido, pero lo más importante es que el procesador puede pasar un byte entero al periférico para que lo envíe y luego hacer otras cosas mientras se transmite. En el caso del bit-banging, 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 totalmente estáticos, probablemente se puede tolerar una pausa a mitad de byte para atender una interrupción o incluso para sondear cosas - el ADC serie con reloj de interfaz y las tareas de intervalo de muestreo son ejemplos notables de excepciones).

En MCU's más capaces puede incluso ser posible programar un controlador DMA para ejecutar una transferencia multibyte desde la memoria a través del motor SPI sin más atención por parte del procesador, especialmente si sólo los datos en una dirección son importantes.

Pero muchos proyectos de microcontroladores acaban muy optimizados para su tarea; si puedes prescindir de los ciclos y tolerar la reducción de velocidad, complicar el software para poder utilizar cualquier GPIO que haga más limpio el diseño físico no es en absoluto una opción infrecuente.

0 votos

Si esta ^. Como menciona Chris, la mayor ventaja de usar periféricos de hardware es que puedes entregar un dat

3 votos

N

2 votos

I

10voto

Richard Nichols Puntos 144

A

  • A
  • I
  • C
  • C

D

  • R

A

  • R
  • M
  • O
  • I

D

  • A
  • R
  • E
  • I
  • H

T

  1. C
  2. I
  3. O

8voto

Alex Andronov Puntos 178

En la foto, un poco convencional-bang SPI-estilo de ejecución toma alrededor de cinco ciclos por poco; con un poco de trabajo en 18Fxx partes, se puede cortar alrededor de cuatro (en el costo de alrededor de tres ciclos por bytes de sobrecarga adicional). Que hora es en adición a cualquier tiempo necesario para obtener los datos (normalmente tres ciclos por byte). Así figura acerca de 40-43 ciclos por byte. Utilizando el hardware SPI, la velocidad de mejora a dos ciclos por poco más de un par extra de ciclos por byte (algunos otros puede manejar back-to-back de las transferencias, pero las Fotos que he visto, no puede), y mientras que el SPI es el envío de un byte, el procesador puede buscar el siguiente, lo que permite un tiempo total de unos 18 ciclos/byte--una ganancia de velocidad de alrededor de 2,5 x.

0voto

Greg D Puntos 24218

F

  1. T
  2. B

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X