
Desarrollo de Drivers
Acerca del Curso
Este curso está diseñado para enseñarte, paso a paso, cómo crear tus propios drivers para sistemas embebidos, sin depender de bibliotecas externas. A lo largo de 16 sesiones en línea, aprenderás a controlar periféricos como GPIO, SPI e I2C, mientras desarrollas una comprensión profunda del hardware y la arquitectura de los microcontroladores STM32. Este curso no solo te prepara para programar microcontroladores, sino para entender cómo funcionan desde adentro, dándote las bases necesarias para desarrollarte como un verdadero ingeniero de software embebido.
- Modalidad: 100% en línea, con sesiones en vivo junto al instructor.
- Interacción: Posibilidad de hacer preguntas y resolver dudas en tiempo real.
- Frecuencia: 2 sesiones por semana.
- Duración de cada sesión: 2 horas.
- Duración total del curso: 8 semanas.
- Acceso a plataforma: Con ejemplos y prácticas del curso disponibles durante todo el programa.
- Fecha de inicio: TBD
Este curso es ideal para estudiantes, recién egresados o profesionales de carreras como ingeniería electrónica, mecatrónica, telecomunicaciones o afines, que desean profundizar en el desarrollo de software embebido a bajo nivel. También está dirigido a quienes ya han trabajado con microcontroladores STM32 utilizando bibliotecas como HAL o Arduino, pero buscan dar un paso más allá y comprender cómo funcionan los periféricos desde su configuración a nivel de registros. Es perfecto para quienes desean escribir sus propios drivers, entender a fondo estructuras y punteros en C, leer e interpretar manuales técnicos, y desarrollar habilidades que son altamente valoradas en la industria.
Objetivos del Curso
¿Qué es un driver?
En sistemas embebidos, un driver es un programa de software que actúa como una interfaz entre el hardware del sistema y el software de aplicación. Su función principal es permitir que el software de aplicación interactúe con los dispositivos de hardware de manera eficiente y sin tener que conocer los detalles específicos de cada dispositivo.

Bloques del Curso
Requisitos
El curso incluye un kit de desarrollo completo, el cual recibirás al inscribirte. Este kit contiene todo lo necesario para realizar las prácticas: una tarjeta Nucleo F411RE con carcasa protectora, un shield con componentes como EEPROM, botones, LEDs, potenciómetros y un slot para acelerómetro MPU6050, además de una caja organizadora con compartimentos para cables y accesorios. Puedes ver más detalles y fotografías del kit en la sección de cursos.
Aparte del kit necesitarás
- Computadora con Windows.
- Internet
- Conocimientos básicos de microcontroladores.

Configuración de Herramientas
No te preocupes si nunca has trabajado con microcontroladores stm32 o herramientas de desarrollo embebido. El instructor te guiará paso a paso en la configuración de todo lo necesario para comenzar a programar.
- Instalación del entorno de desarrollo (STM32CubeIDE).
- Configuración del proyecto.
- Acompañamiento personalizado para resolver problemas técnicos durante la instalación.

Arquitectura del microcontrolador
Comprender la arquitectura del microcontrolador es el primer paso para desarrollar drivers desde cero. En este bloque exploraremos cómo está organizado internamente un STM32, qué componentes lo conforman y cómo se comunican entre ellos.
Aprenderás a :
- Identificar los bloques principales delmmicrocontrolador STM32
- Comprender el funcionamiento del núcleo Cortex-M
- Analizar el mapa de memoria y sus secciones
- Entender el rol de los buses internos y periféricos
- Interpretar los diagramas de arquitectura presentes en los manuales técnicos

Interrupciones
Las interrupciones son un mecanismo clave en los sistemas embebidos que permiten responder de forma inmediata a eventos internos o externos, sin necesidad de que el procesador esté verificando constantemente su ocurrencia. En los microcontroladores STM32, la correcta configuración y manejo de las interrupciones es fundamental para optimizar el rendimiento, reducir el consumo de recursos y garantizar una respuesta rápida del sistema.
Aprenderás :
- Configurar interrupciones internas y externas en STM32
- Priorizar y gestionar múltiples fuentes de interrupción
- Implementar rutinas de servicio (ISR) eficientes
- Sincronizar interrupciones con el resto del sistema
- Optimizar el uso de interrupciones para mejorar el rendimiento

Diseño del driver de GPIOs
Los GPIOs (General Purpose Input/Output) son la interfaz fundamental para que un microcontrolador pueda interactuar con el mundo exterior. A través de ellos es posible leer señales de entrada y controlar salidas hacia diversos dispositivos y periféricos. Dominar el diseño de un driver de GPIO en STM32 permite un control preciso, eficiente y escalable de estas interacciones.
Aprenderás a:
- Configurar pines GPIO como entrada o salida
- Controlar salidas digitales de forma eficiente
- Leer entradas digitales con detección confiable de estado
- Implementar funciones de inicialización y control dentro de un driver
- Integrar el driver con otros módulos del sistema

Diseño del driver de SPI
El protocolo SPI (Serial Peripheral Interface) es una de las formas más rápidas y eficientes de comunicación serial síncrona en sistemas embebidos. Dominar su funcionamiento y diseño de driver en STM32 permite establecer enlaces confiables y de alto rendimiento entre el microcontrolador y dispositivos externos como memorias, sensores o pantallas.
Aprenderás a :
- Configurar el periférico SPI en modo maestro o esclavo
- Establecer la velocidad, modo y polaridad de la señal
- Implementar funciones de transmisión y recepción de datos
- Integrar el driver con otros módulos del sistema
- Optimizar el rendimiento y la fiabilidad de la comunicación

Diseño del driver de I2C
El protocolo I²C (Inter-Integrated Circuit) es una de las interfaces más versátiles para la comunicación serial de corta distancia entre múltiples dispositivos dentro de un sistema embebido. Dominar su configuración y el diseño de un driver en STM32 permite establecer enlaces confiables con sensores, memorias y otros periféricos, optimizando la transferencia de datos y la integración del sistema.
Aprenderás a:
- Configurar el periférico I²C en modo maestro o esclavo
- Establecer direcciones y velocidades de comunicación
- Implementar funciones de lectura y escritura de datos
- Gestionar colisiones y condiciones especiales en el bus
- Integrar el driver con otros módulos del sistema

Git y GitHub
Git y GitHub son herramientas esenciales para el control de versiones y la colaboración en proyectos de software. Dominar su uso permite gestionar de forma ordenada y eficiente el código fuente, evitando pérdidas de información y facilitando el trabajo en equipo. En este bloque, aprenderás a utilizar Git y GitHub para mantener un historial de cambios, colaborar con otros desarrolladores y asegurar la integridad de tus proyectos de desarrollo de drivers para sistemas embebidos.
Aprenderás a:
- Crear y configurar tu cuenta en GitHub
- Inicializar y gestionar repositorios locales y remotos
- Realizar commits y mantener un historial de cambios
- Subir tu código a la nube de forma segura
- Colaborar en proyectos y manejar ramas de desarrollo

Proyecto Final
Al finalizar el curso, aplicarás todos los conceptos aprendidos en un proyecto final práctico, ideal para reforzar tu comprensión y consolidar habilidades de programación en tiempo real.
¿Qué harás en el proyecto final?
- Diseñarás una aplicación embebida completa usando tus propios drivers.
