Skip to main content

Comunicación SPI en XIAO SAMD21 de Seeed Studio

Interfaz de Comunicación SPI

Hardware

Materiales requeridos

Conexión de Hardware

  • Paso 1. El CSK del Sensor de presión de alta precisión Grove se conecta al SCK del XIAO.

  • Paso 2. El CS del Sensor se conecta al D3 del XIAO.

  • Paso 3. El SDO del Sensor se conecta al MISO del XIAO.

  • Paso 4. El SDI del Sensor se conecta al MOSI del XIAO.

  • Paso 5. El GND del Sensor se conecta al GND del XIAO.

  • Paso 6. El 3V3 del Sensor se conecta al 3.3V del XIAO.

  • Paso 7. Conecta el XIAO a la PC a través de un cable Tipo-C.

Software

note

Si es la primera vez que trabajas con Arduino, te recomendamos encarecidamente que veas Introducción a Arduino antes de comenzar.

#include <Dps310.h>

// Objeto Dps310
Dps310 Dps310PressureSensor = Dps310();

void setup()
{
// Número de pin de la línea de selección de esclavo
// XMC2GO
int16_t pin_cs = 3;
// Para XMC 1100 Bootkit & XMC4700 Relax Kit descomenta la siguiente línea
// int16_t pin_cs = 10;

Serial.begin(9600);
while (!Serial);


// Llamar a begin para inicializar Dps310
// El parámetro pin_nr es el número del pin CS en tu microcontrolador
Dps310PressureSensor.begin(SPI, pin_cs);

// Tasa de medida de temperatura (valor entre 0 y 7)
// 2^temp_mr resultados de medición de temperatura por segundo
int16_t temp_mr = 2;
// Tasa de sobre-muestreo de temperatura (valor entre 0 y 7)
// 2^temp_osr mediciones internas de temperatura por resultado
// Un valor más alto aumenta la precisión
int16_t temp_osr = 2;
// Tasa de medida de presión (valor entre 0 y 7)
// 2^prs_mr resultados de medición de presión por segundo
int16_t prs_mr = 2;
// Tasa de sobre-muestreo de presión (valor entre 0 y 7)
// 2^prs_osr mediciones internas de presión por resultado
// Un valor más alto aumenta la precisión
int16_t prs_osr = 2;
// startMeasureBothCont habilita el modo de fondo
// La temperatura y la presión se miden automáticamente
// No es posible tener alta precisión y altas tasas de medición al mismo tiempo.
// Consulta la hoja de datos (o prueba y error) para más información
int16_t ret = Dps310PressureSensor.startMeasureBothCont(temp_mr, temp_osr, prs_mr, prs_osr);
// Usa una de las líneas comentadas a continuación para medir solo temperatura o presión
// int16_t ret = Dps310PressureSensor.startMeasureTempCont(temp_mr, temp_osr);
// int16_t ret = Dps310PressureSensor.startMeasurePressureCont(prs_mr, prs_osr);


if (ret != 0)
{
Serial.print("¡Fallo en la inicialización! ret = ");
Serial.println(ret);
}
else
{
Serial.println("¡Inicialización completa!");
}
}



void loop()
{
uint8_t pressureCount = 20;
float pressure[pressureCount];
uint8_t temperatureCount = 20;
float temperature[temperatureCount];

// Esta función escribe los resultados de las mediciones continuas en los arreglos dados como parámetros
// Los parámetros temperatureCount y pressureCount deben contener los tamaños de los arreglos temperature y pressure cuando se llama la función
// Después del final de la función, temperatureCount y pressureCount contendrán los números de valores escritos en los arreglos
// Nota: El Dps310 no puede guardar más de 32 resultados. Cuando su buffer de resultados está lleno, no guardará nuevos resultados de medición
int16_t ret = Dps310PressureSensor.getContResults(temperature, temperatureCount, pressure, pressureCount);

if (ret != 0)
{
Serial.println();
Serial.println();
Serial.print("¡FALLO! ret = ");
Serial.println(ret);
}
else
{
Serial.println();
Serial.println();
Serial.print(temperatureCount);
Serial.println(" valores de temperatura encontrados: ");
for (int16_t i = 0; i < temperatureCount; i++)
{
Serial.print(temperature[i]);
Serial.println(" grados Celsius");
}

Serial.println();
Serial.print(pressureCount);
Serial.println(" valores de presión encontrados: ");
for (int16_t i = 0; i < pressureCount; i++)
{
Serial.print(pressure[i]);
Serial.println(" Pascal");
}
}

// Espera un tiempo, para que el Dps310 pueda rellenar su buffer
delay(10000);
}
  • Paso 4. Haz clic en Herramientas > Monitor serial, o presiona Ctrl+Shift+M juntos para abrir el monitor serial después de haber subido el código con éxito. El resultado aparecerá como sigue:

pir

Loading Comments...