Interfaces SPI en microcontroladores

Mi pregunta es para los microcontroladores en general. ¿Se puede implementar SPI con 3 pines de E/S diferentes concedidos, uno es una señal de reloj? ¿Hay algo especial con ciertos pines que una hoja de datos especifica como entrada maestra, salida esclava o selección esclava? Cualquier cosa especial que se refiera a algo único sobre el hardware en ese pin en lugar de un pin de E/S general.

Bit banging SPI es algo bastante común.
..a menos que la MCU sea la esclava. Luego, generalmente tiene que usar la unidad SPI de hardware para cumplir con el tiempo.

Respuestas (3)

Algunas de las otras respuestas han sugerido el uso de golpes de bits para resolver el problema de asignar un periférico SPI a cualquier pin arbitrario. El problema con esto es la velocidad; algunos periféricos SPI pueden funcionar con una velocidad de reloj de 40 MHz o superior, y no hay forma de hacer bits con el firmware a esa velocidad.

Una alternativa es utilizar una arquitectura de hardware que proporcione pines periféricos para ser asignados a cualquier pin arbitrario. Uno de esos microcontroladores que hace esto es la familia 8051 de Silicon Labs. Utiliza un interruptor de barra transversal de E/S para permitir que los periféricos se asignen a casi cualquier pin de puerto, como se muestra a continuación:

ingrese la descripción de la imagen aquí

Entonces, por ejemplo, SCK puede asignarse a cualquier pin de P0-0 a P3-0, MISO de P0-1 a P3-1 y así sucesivamente.

La familia PIC24F de Microchip también permite asignar casi cualquier periférico a cualquier número de pines de E/S en el microcontrolador, utilizando una función llamada Selección de pines periféricos. Está disponible para periféricos como UART y módulos SPI, pero no para aquellos que requieren hardware especial como I2C y USB.

La siguiente imagen muestra un diagrama de bloques del circuito de un pin de E/S típico, con un multiplexor en la parte superior para seleccionar la salida de uno de varios periféricos al pin de salida, y en la parte inferior, otro multiplexor que selecciona una de varias entradas. pines a la entrada de un periférico.

La serie PIC24F de 16 bits puede tener hasta cuatro puertos SPI, con cualquiera asignado a los 39 pines reasignables en un microcontrolador de 100 pines.

ingrese la descripción de la imagen aquí

Gracias por esta profunda respuesta. Aprendí algo nuevo :)

Sí, puedes morderlo . Por lo general, no será tan rápido como si hubiera un hardware dedicado.

No olvide la selección de chip (así que cuatro pines para comunicación bidireccional). Por lo general, necesita una selección de chip para que funcione correctamente.

No. Todas las salidas son salidas push-pull normales y todas las entradas son entradas flotantes normales. Aporrear.

¿Conoces una guía que te ayude con los golpes? Recuerdo a un compañero cuando yo era estudiante que estaba tratando de hacer un poco de spi sin que él supiera que era SPI. Realmente no podía explicarle el método en ese entonces.
Simplemente lo defino como "SPI es lo que dice el diagrama de tiempo SPI en la hoja de datos".
Solo debes tener cuidado con las necesidades del esclavo. A veces quiere que los datos sean válidos en el borde ascendente del reloj y, a veces, en el descendente.
Es por eso que pulso el reloj en lugar de simplemente voltearlo mientras los datos son válidos. Es un poco menos compacto que cambiar entre datos y reloj cada vez, pero maneja 2 de los 4 modos SPI (e invertir el reloj maneja los otros dos).