Arduino Spi, NodeMCU SPI con Arduino IDE Deja un comentario

Arduino Spi, qué es

El Serial Peripheral Interface (SPI) es un protocolo de conexión de interfaz de bus iniciado originalmente por Motorola Corp.

  • La interfaz SPI utiliza cuatro cables para la comunicación. Por lo tanto, también se le conoce como protocolo de comunicación serie de cuatro hilos.
  • SPI es un protocolo de comunicación maestro-esclavo full duplex. Esto significa que sólo un único maestro y un único esclavo pueden comunicarse en el bus de interfaz al mismo tiempo.
  • Los dispositivos habilitados para SPI funcionan en dos modos básicos de funcionamiento de SPI, es decir, el Modo Maestro SPI y el Modo Esclavo SPI.
  • El dispositivo maestro es responsable de la iniciación de la comunicación. El dispositivo maestro genera un Serial Clock para la transferencia de datos sincrónica. El Dispositivo Maestro puede manejar múltiples dispositivos esclavos en el bus seleccionándolos uno por uno.

El ESP8266 basado en NodeMCU tiene Hardware SPI con cuatro pines disponibles para la comunicación SPI. Con esta interfaz SPI, podemos conectar cualquier dispositivo habilitado para SPI con NodeMCU y hacer posible la comunicación con él.

El ESP8266 tiene pines SPI (SD1, CMD, SD0, CLK) que se utilizan exclusivamente para la comunicación Quad-SPI con memoria flash en el ESP-12E, por lo que no se pueden utilizar para aplicaciones SPI. Podemos utilizar la interfaz Hardware SPI para aplicaciones de usuario final.

La siguiente figura muestra los pines de la interfaz SPI cuádruple que se utilizan internamente para el flash. Consiste en cuatro señales de datos bidireccionales (i/o (i/p y o/p) con reloj sincronizado (SDIO_CLK) y pin de selección de chip (SDIO_CMD). Se utiliza principalmente para obtener más ancho de banda/transmisión que la interfaz dual i/o (bus de datos de 2 bits).

NodeMCU SPI Pins

void setup() {
Serial.begin(9600); /* begin serial with 9600 baud */
SPI.begin(); /* begin SPI */
}

void loop() {
for(inti=0; i SPI.transfer(buff[i]);
delay(1000);
}

Arduino Sketch para SPI esclavo de Arduino Uno

#include

char buff [100];
volatile byte index;
volatile bool receivedone; /* use reception complete flag */

void setup (void)
{
Serial.begin (9600);
SPCR |= bit(SPE); /* Enable SPI */
pinMode(MISO, OUTPUT); /* Make MISO pin as OUTPUT */
index = 0;
receivedone = false;
SPI.attachInterrupt(); /* Attach SPI interrupt */
}

void loop (void)
{
if (receivedone) /* Check and print received buffer if any */
{
buff[index] = 0;
Serial.println(buff);
index = 0;
receivedone = false;
}
}

// SPI interrupt routine
ISR (SPI_STC_vect)
{
uint8_t oldsrg = SREG;
cli();
char c = SPDR;
if (index {
buff [index++] = c;
if (c == 'n'){ /* Check for newline character as end of msg */
receivedone = true;
}
}
SREG = oldsrg;
}

Ventana de salida del esclavo

Esta salida se recibe en el dispositivo esclavo que se transmite desde el dispositivo maestro.

Navegación de entradas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?