🛠 Controlar GPIO y leer la IMU en XIAO STM32C5
Objetivos
Este tutorial tiene como objetivo comprender la gestión de Entradas/Salidas digitales (GPIO) y la interacción con el sensor inercial de 6 ejes LSM6DS3TR-C integrado en la placa XIAO STM32C5. Configuraremos un LED para indicación visual y leeremos datos de aceleración a través del bus I2C interno. Este nivel intermedio asume familiaridad con la compilación de código embebido.
Material Necesario
- Placa Seeed Studio XIAO STM32C5
- Cable USB-C para alimentación y programación
- Ordenador con STM32CubeIDE o PlatformIO instalado
- No se requieren componentes externos (el sensor está integrado)
Pasos
- Prepare su entorno de desarrollo. Si usa STM32CubeIDE, cree un nuevo proyecto seleccionando el microcontrolador STM32C5A3CG. Asegúrese de que la frecuencia del sistema esté configurada en 144 MHz para aprovechar la potencia completa del núcleo Arm Cortex-M33.
- Configure los periféricos en CubeMX. Habilite la interfaz I2C conectada al LSM6DS3TR-C. Tenga en cuenta que este sensor está cableado directamente a la placa, no se necesita soldadura. También configure un GPIO en modo de salida para un LED (por ejemplo, LED de usuario si está disponible, o un pin libre como D0).
- Genere el código y abra el archivo principal (main.c). Incluya las bibliotecas necesarias para el controlador del LSM6DS3TR-C. Si usa Zephyr RTOS a través de PlatformIO, agregue las dependencias del controlador del sensor en su archivo
platformio.ini.
- Inicialice el sistema y el sensor. En la función
main, llame a la función de inicialización del bus I2C, luego a la del sensor inercial. Verifique que el sensor responda correctamente leyendo su ID de dispositivo.
- Implemente el bucle de lectura. Lea continuamente los valores de aceleración (X, Y, Z). Para mostrar estos datos, configure UART (a través de USB-C) en modo Full-Speed y envíe valores formateados al monitor serie.
- Agregue lógica de reacción GPIO. Por ejemplo, si la aceleración Z supera un umbral (simulando un golpe o inclinación), encienda el LED configurado en el paso 2 poniendo el pin en alto (
HAL_GPIO_WritePin). Apáguelo en caso contrario.
Verificación
Abra el monitor serie de su IDE a 115200 baudios. Debería ver los valores de aceleración desplazándose. Al inclinar o golpear ligeramente la placa, observe los cambios en los dígitos y el encendido instantáneo del LED, confirmando que el enlace entre la lectura del sensor y el comando GPIO es funcional.
Para Ir Más Allá
Explore el circuito de calefacción programable por PWM del LSM6DS3TR-C para reducir la deriva térmica. Configure un temporizador PWM para activar la calefacción y observe la estabilización de las mediciones después de unos minutos. También puede explorar los dos controladores CAN FD, usando FDCAN2 con el transceptor integrado para comunicarse con otros nodos CAN.