ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Investigación sobre SPI


Enviado por   •  25 de Enero de 2025  •  Ensayo  •  393 Palabras (2 Páginas)  •  24 Visitas

Página 1 de 2

Investigación sobre SPI

El bus SPI de la ESP32 “es un protocolo de comunicación síncrona usada para la transferencia de datos entre un microcontrolador y otro dispositivos, como sensores, pantallas, memorias y periféricos” [1].

Este bus usa múltiples líneas de comunicación, lo que permite una alta velocidad de transferencia y flexibilidad excepcional. Entre las características que presenta el bus SPI se encuentra el número de controladores, dependiendo del modelo de la ESP32 por ejemplo si es la ESP32, ESP32-S2 y la ESP32-S3 tienen 4 controladores, mientras que la ESP32-C3 tiene 3.

El uso del bus SPI en Arduino se da de la siguiente manera:

[pic 1]

Fig 1. Bus SPI código

Para la asignación de los pines de la ESP32 se llama a los pines SPI0, SPI1, SPI2 Y SPI3, estos pines son usados de la siguiente forma:

  • SPIO y SPI1 se usan para la comunicación de la memoria Flash, estos pines no deben tocarse.
  • SPI2 y SPI3 quedan libres para el usuario

Otra característica que se destaca es que para la comunicación se hace uso de 4 líneas:

  • MISO: Maestro
  • MOSI:  Maestro fuera Esclavo
  • SCK: Reloj serie
  • CS/SS: Selección del chip( se utiliza para seleccionar el dispositivo cuando se utilizan varios periféricos)

Se debe tomar en consideración los pines SPI predeterminados de la SP32 como se puede ver en la siguiente Fig:

[pic 2]

Fig 2. Pines SPI predeterminados ESP32

Ejemplo:

#include <SPI.h>

const int csPin = 5; // Pin de selección de chip (CS)

void sendCommand(byte command, byte data) {

  digitalWrite(csPin, LOW);

  SPI.transfer(command);

  SPI.transfer(data);

  digitalWrite(csPin, HIGH);

}

void setup() {

  SPI.begin();

  pinMode(csPin, OUTPUT);

  digitalWrite(csPin, HIGH);

  // Inicializar el MAX7219

  sendCommand(0x09, 0x00); // Modo de decodificación: ninguna

  sendCommand(0x0A, 0x03); // Brillo: 3 (0-15)

  sendCommand(0x0B, 0x07); // Scan limit: 8 LEDs

  sendCommand(0x0C, 0x01); // Encender el dispositivo

  sendCommand(0x0F, 0x00); // Modo de prueba: apagado

}

void loop() {

  // Mostrar un patrón en el LED matrix

  for (int row = 0; row < 8; row++) {

    sendCommand(row + 1, 0b10101010); // Enviar datos a cada fila

  }

  delay(1000);

  // Limpiar el display

  for (int row = 0; row < 8; row++) {

    sendCommand(row + 1, 0b00000000); // Limpiar cada fila

  }

  delay(1000);

}

Enlace: https://wokwi.com/projects/416214420071498753

[1] Cómo usar el bus SPI en un ESP32

...

Descargar como (para miembros actualizados) txt (3 Kb) pdf (95 Kb) docx (342 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com