Programación de Microcontroladores ARM de 32 bits en C. Proyectos con Raspberry Pi Pico W
René Miguel Luna
Este libro ofrece una formación práctica y rigurosa para aprender a desarrollar firmware profesional en lenguaje C utilizando la Raspberry Pi Pico W y el
microcontrolador RP2040, una de las plataformas ARM de 32 bits más versátiles y accesibles del mercado.
A lo largo de la obra, el lector descubre los fundamentos de la arquitectura ARM Cortex-M0+, el manejo directo de registros, la gestión de memoria, interrupciones, temporizadores, conversión analógico-digital, comunicaciones serie, buses SPI e I²C, PWM, PIO, DMA, conectividad Wi-Fi y las técnicas de programación que se emplean en sistemas embebidos profesionales. Cada concepto se acompaña de ejemplos, proyectos y laboratorios diseñados para comprender no solo cómo programar, sino también por qué el hardware responde de una determinada manera.
Con un enfoque eminentemente didáctico y orientado a la práctica, esta obra constituye una guía completa para estudiantes, ingenieros, técnicos y desarrolladores que deseen adquirir una base sólida en el diseño de sistemas embebidos y dar el salto desde el prototipado hacia el desarrollo profesional de aplicaciones con microcontroladores ARM.
El libro contiene material adicional que podrá descargar accediendo a la ficha del libro en www.ra-ma.es.
El e-book de esta obra es accesible y cumple con la norma WCAG 2.2 nivel AAA.
- Escritor
- René Miguel Luna
- Colección
- Lenguajes de Programación
- Materia
- Electrónica: circuitos y componentes
- Idioma
- Castellano
- EAN
- 9791388334306
- ISBN
- 979-13-88334-30-6
- Depósito legal
- M-17151-2026
- Ancho
- 17 cm
- Alto
- 24 cm
- Edición
- 1
- Fecha publicación
- 16-06-2026
Disponibilidad
Novedad. Próxima publicaciónÍndice de contenido
PREFACIO E INTRODUCCIÓN TÉCNICA
EL PUENTE HACIA EL DESARROLLO PROFESIONAL EN SISTEMAS EMBEBIDOS
¿POR QUÉ EL RP2040 Y LA RASPBERRY PI PICO W?
EL ENFOQUE METODOLÓGICO: EL ESTÁNDAR C (C99/C11)
ENTORNO DE DESARROLLO Y REQUERIMIENTOS DE LABORATORIO
REQUERIMIENTOS DE SOFTWARE Y HERRAMIENTAS DE COMPUTACIÓN
COMPONENTES DE HARDWARE Y LABORATORIO DE ELECTRÓNICA
COMPETENCIAS PROFESIONALES A DESARROLLAR
NOTAS LEGALES Y MARCAS REGISTRADAS
CAPÍTULO 0. ENTORNO DE DESARROLLO, HARDWARE Y ECOSISTEMA C/C++
0.1 INICIAMOS CON C
0.1.1 El proceso de compilación
0.1.2 La Carrera de relevos: Del código al Chip
0.2 HARDWARE: ARQUITECTURA ARM, EL CORAZÓN DE LA RASPBERRY PI PICO Y REGISTROS INTERNOS
0.2.1 ¿Qué es un microcontrolador?
0.2.2 Diferencias con un microprocesador
0.2.3 ¿Qué es un microcontrolador de 32 bits?
0.2.4 Características de RISC
0.2.5 ¿Qué es ARM?
0.2.6 Arquitectura ARM Cortex-M0+: El núcleo dual y su pipelin
0.2.7 Microcontrolador RP2040: Memoria RAM, Flash y el bus de
0.2.8 GPIOs: Estructura interna de los pines de entrada/salida
0.3 ECOSISTEMA C/C++
0.3.1 El estándar de C en sistemas embebidos (C99 y C11)
0.3.2 Anatomía de un proyecto en C: archivos .c, .h y el siste compilación CMake
0.3.3 El sistema de compilación CMake
0.3.4 Profundizando en el archivo CMakeLists.txt
CAPÍTULO 1. PRIMER PROGRAMA
1.1 EL CLÁSICO HOLA MUNDO!!! EN C.
1.2 PRIMER EJEMPLO
1.2.1 Explicación del código
1.2.2 ¿Qué hace este programa?
1.3 LA HERRAMIENTA INVISIBLE: LOS COMENTARIOS EN C
1.3.1 Los dos tipos de comentarios en C.
1.3.2 El consejo de oro del laboratorio.
1.3.3 El uso extra en el laboratorio: Apagar código para hac
CAPÍTULO 2. FUNDAMENTOS SÓLIDOS
DEL LENGUAJE C
2.1 BIBLIOTECAS: EL ARSENAL DEL DESARROLLADOR
2.1.1 Bibliotecas Estándar de C (libc)
2.1.2 El SDK de Raspberry Pi Pico (pico/stdlib.h)
2.1.3 Bibliotecas propias
2.2 ANATOMÍA DE UNA INCLUSIÓN.
2.3 VARIABLES: LOS CONTENEDORES DEL SISTEMA
2.3.1 Tipos de datos estándar y su capacidad
2.3.2 Declaración de variables
2.3.3 Inicialización de variables
2.4 EL ARREGLO (ARRAY): BLOQUES SECUENCIALES EN LA MEMORIA RAM
2.4.1 La física del Array en el silicio
2.4.2 El Gran Peligro Industrial: El Desbordamiento de Índice Bounds)
2.5 OPERADORES EN C
2.5.1 Operadores Aritméticos
2.5.2 Operadores relacionales
2.5.3 Operadores lógicos
2.5.4 Operadores avanzados y de asignación compuesta
2.5.5 Operadores de incremento y decremento (++ y --)
2.5.6 Operadores Bit a Bit
2.6 FUNCIÓN PRINTF (IMPRESIÓN CON FORMATO)
2.6.1 Anatomía de un printf
2.6.2 Los especificadores de formato
2.6.3 El control de los decimales (el truco del punto)
2.6.4 Secuencias de escape (comandos ocultos para la pantalla)
2.6.5 Un ejemplo completo para analizar
2.7 ESTRUCTURAS DE CONTROL EN C
2.7.1 Estructuras condicionales
2.7.2 Bucles (estructuras de repetición)
2.7.3 Indentación
2.8 FUNCIONES EN C (LA FÁBRICA DE CÓDIGO)
2.8.1 ¿Qué es una función?
2.8.2 Estructura y anatomía de una función
2.8.3 Alerta de Confusión: El alcance de las variables (scope)
2.8.4 Llamada a una función (invocar al módulo)
2.8.5 Paso de Parámetros: El gran secreto de la RAM
2.8.6 Ventajas de usar funciones (Por qué programamos así)
2.9 FUNCIONES ESPECIALES EN C
2.9.1 La Función Principal main()
2.9.2 Funciones de la biblioteca estándar
CAPÍTULO 3. INTERFACES DE CONTROL Y VISUALIZACIÓN DE DATOS
3.1 INTRODUCCIÓN: AL FIN, EL SILICIO COBRA VIDA.
3.2 DISPLAYS DE 7 SEGMENTOS Y LÓGICA DE CONTROL
3.2.1 Estructura Básica
3.2.2 Aplicaciones
3.2.3 Ventajas
3.2.4 Desventajas
3.2.5 Resumen
3.2.6 Práctica: manejo de 1 display de 7 segmentos en Raspberr Pi Pico W
3.2.7 Práctica: Manejo de 2 o más display de 7 segmentos (multiplexación)
3.3 TECLADO MATRICIAL
3.3.1 Introducción
3.3.2 Estructura y funcionamiento de un teclado matricial
3.3.3 Aplicaciones
3.3.4 Ventajas
3.3.5 Desventajas
3.3.6 Resumen
3.3.7 Práctica: manejo de teclado matricial 4x4
3.3.8 Mapeando el hardware: Arrays de dos dimensiones (matrice
3.4 PANTALLA LCD HD44780 (CONEXIÓN PARALELA)
3.4.1 Introducción
3.4.2 Estructura y funcionamiento
3.4.3 Aplicaciones
3.4.4 Ventajas
3.4.5 Desventajas
3.4.6 Resumen
3.4.7 Práctica: Manejo de LCD 16x2 o 20x4 conexión paralelo
3.4.8 Librería LCD
CAPÍTULO 4. PROTOCOLOS DE UN SÓLO HILO
4.1 EL INGREDIENTE SECRETO DE LA PICO: ¿QUÉ ES EL HARDWARE PIO?
4.1.1 Anatomía del bloque PIO
4.1.2 ¿Por qué 1-Wire exige usar el PIO?
4.1.3 Práctica: Lectura del sensor digital de temperatura DS18
4.1.4 El protocolo de comunicación con el DS18B20: La coreogra eléctrica
4.1.5 Desglose del programa principal (main.c)
CAPÍTULO 5. PROTOCOLOS SERIALES
5.1 EL IDIOMA DE LOS PERIFÉRICOS
5.2 PERIFÉRICO SERIAL UART (UNIVERSAL ASYNCHRONOUS RECEIVER-TRANSMITTER)
5.2.1 Anatomía de una Trama UART (La física de la señal)
5.2.2 El Hardware UART en el RP2040 y la multiplexación de pin
5.2.3 Análisis del código de transmisión y recepción directa
5.2.4 Las Salas de Espera del hardware: Las FIFOs de 32 byte
5.2.5 Proyecto práctico: Servidor de comandos serial (eco y control activo)
5.2.6 Anatomía del control de flujo: la estructura switch-case
5.3 PERIFÉRICO SERIAL SPI (SERIAL PERIPHERAL INTERFACE)
5.3.1 Las 4 líneas físicas y el intercambio en Espejo (Full-Dúplex)
5.3.2 La naturaleza Full-Dúplex: El registro de desplazamiento sombra
5.3.3 Configuración del hardware SPI en el RP2040
5.3.4 Anatomía de la función read_register: manipulación de Bi acción
5.3.5 Programa completo: Verificación de hardware del BMP280
5.4 PERIFÉRICO SERIAL I2C (INTER-INTEGRATED CIRCUIT)
5.4.1 La Electrónica del Bus: Colector abierto (Open-Drain) y resistencias de Pull-Up
5.4.2 Direccionamiento por hardware de 7 Bits: ¿Cómo conviven dispositivos?
5.4.3 Práctica integradora: Estación barométrica con bus compa
5.4.4 Radiografía del Bus: ¿Cómo conviven los datos en el cable?
5.5 CONCLUSIÓN DE LA UNIDAD 5: EL CRITERIO DE SELECCIÓN DE PROTOCOLOS
CAPÍTULO 6. CONVERSORES ANALÓGICO/DIGITAL (ADC)
6.1 EL ADC EN EL RP2040: PRECISIÓN Y LÍMITES
6.2 PROCESAMIENTO DE SEÑALES EN C: LIMPIANDO EL RUIDO
6.3 PRÁCTICA: LECTURA DEL SENSOR DE TEMPERATURA INTERNO
6.4 PRÁCTICA: IMPLEMENTACIÓN DE UN FILTRO EMA
CAPÍTULO 7. MANEJO DEL TIEMPO Y TAREAS EN TIEMPO REAL
7.1 TIMERS DE HARDWARE: EL FIN DEL BLOQUEO POR SOFTWARE
7.1.1 ¿Cómo funciona el timer a nivel de hardware?
7.1.2 Herramientas Avanzadas en C: Punteros a funciones y call
7.1.3 El modificador de memoria esencial: volatile
7.1.4 Desglose de funciones: Alarmas únicas vs. temporizadores periódicos
7.1.5 Análisis detallado del programa práctico de timers
7.2 EL WATCHDOG (PERRO GUARDIÁN): EL CENTINELA DEFINITIVO DE HARDWARE
7.2.1 ¿Cómo funciona la lógica del Watchdog?
7.2.2 Práctica: Implementación del Watchdog en C
CAPÍTULO 8. INTERRUPCIONES DE HARDWARE (IRQS)
8.1 ANATOMÍA INTERNA DE UNA IRQ: ¿QUÉ OCURRE EN EL PROCESADOR?
8.2 LA TABLA DE VECTORES DE INTERRUPCIÓN DEL RP2040
8.3 LAS TRES REGLAS DE ORO DE UNA ISR (INTERRUPT SERVICE ROUTINE)
8.4 PRÁCTICA: MANEJO DE INTERRUPCIONES POR GPIO (FLANCOS DE SEÑAL)
8.4.1 Análisis de la arquitectura del código
CAPÍTULO 9. ESTRUCTURAS DE DATOS EN C Y GESTIÓN DE MEMORIA
9.1 ¿CÓMO SE ORGANIZA UN STRUCT FÍSICAMENTE EN LA MEMORIA RAM?
9.2 PRÁCTICA: GESTIÓN Y ESCALABILIDAD MEDIANTE ARREGLOS DE ESTRUCTURAS
9.3 ESTRUCTURAS ANIDADAS: JERARQUÍA Y MODULARIDAD EN EL FIRMWARE
9.4 PRÁCTICA: INICIALIZACIÓN DINÁMICA Y COPIA SEGURA DE CADENAS (STRCPY)
9.5 UNIONES (UNION): EL SOLAPAMIENTO INTELIGENTE DE LA MEMORIA
9.6 PRÁCTICA: DESARMADO DE TRAMAS BINARIAS UTILIZANDO UNIONES Y TYPEDEF
9.6.1 Explicación de los beneficios de typedef en el SDK
CAPÍTULO 10. COMUNICACIÓN INALÁMBRICA (WI-FI) Y SERVIDORES EMBEBIDOS
10.1 ARQUITECTURA DE COMUNICACIÓN INTERNA: EL BUS SPI ESCONDIDO
10.2 LA PILA DE RED LWIP (LIGHTWEIGHT IP) Y EL MODELO DE SOCKETS
10.3 IMPLEMENTACIÓN COMPLETA DE LA INFRAESTRUCTURA DE RED (MAIN.C)
10.4 ANÁLISIS DE ROBUSTEZ DE SOFTWARE: BUENAS PRÁCTICAS EN REDES EMBEBIDAS.
RESUMEN FINAL: EL ECOSISTEMA INTEGRADO DE LA PICO W
PALABRAS FINALES: EL VIAJE RECIÉN COMIENZA
MATERIAL ADICIONAL
Libros relacionados

Microcontrolador PIC16F84. Desarrollo de proyectos (3ª Edición)

Dispositivos Lógicos Programables (PLD). Diseño práctico de aplicaciones

Arduino. Proyectos prácticos. Edición 2025

Dispositivos Electrónicos: Problemas resueltos (2ª Edición)

Dispositivos Electrónicos: Problemas resueltos

Microcontroladores PIC con programación PBP

Arduino. Curso práctico (Edición 2018)

Microcontrolador STM32 Programación y desarrollo

Electrónica básica

Diseño e ingeniería electrónica asistida con Protel DXP