Hardware
Microcontrolador
| Característica |
Detalle |
| Modelo |
STM32F401CCU6 (BlackPill F401CC) |
| Arquitectura |
ARM Cortex-M4 @ 84 MHz |
| Flash |
256 KB |
| RAM |
64 KB |
| Framework |
libopencm3 |
| Entorno |
PlatformIO |
El STM32F401 se encarga de gestionar la SRAM externa vía SPI1, proporcionar
comunicación serie por USART1 para depuración, y ejecutar la demo del ring
buffer heterogéneo. El SysTick genera interrupciones a 1 kHz para el reloj
del sistema. El DWT (Data Watchpoint Trace) se usa como contador de ciclos
para delays de precisión por microsegundo.
Periféricos utilizados
| Periférico |
Función |
Pines |
| SPI1 |
Comunicación con SRAM 23AA04M |
PA5 (SCK), PA6 (MISO), PA7 (MOSI) |
| USART1 |
Consola serie (printf) a 115200 baud |
PA9 (TX), PA10 (RX) |
| SysTick |
Base de tiempos del sistema (1 kHz) |
Interno |
| DWT |
Contador de ciclos para delay_us() |
Interno |
| GPIO |
CS de SRAM y LED de estado |
PA15 (CS), PC13 (LED) |
SRAM externa — 23AA04M
| Característica |
Detalle |
| Modelo |
Microchip 23AA04M |
| Capacidad |
4 Mbit = 512 KB |
| Tecnología |
SRAM serie (no volátil) |
| Interfaz |
SPI (modo 0) |
| Frecuencia máx. |
20 MHz |
| Encapsulado |
SOIC-8 / DIP-8 |
| Tensión |
1.7 V – 3.6 V |
La 23AA04M es una SRAM de 512 KB accesible vía SPI. Soporta tres modos de
direccionamiento — byte, página y secuencial — seleccionables mediante el
registro de modo interno. En este proyecto se configura en modo secuencial,
que permite leer y escribir ráfagas continuas de bytes sin reenviar la dirección.
Protocolo SPI
| Parámetro |
Valor |
| Modo |
0 (CPOL = 0, CPHA = 0) |
| Frecuencia |
10.5 MHz (APB2 84 MHz ÷ 8) |
| Formato |
8 bits, MSB first |
| NSS |
Software (PA15) |
| Comandos SPI |
0x02 WRITE, 0x03 READ, 0x01 WRMR, 0x05 RDMR |
Pinout completo
SPI1 — SRAM 23AA04M
| Pin STM32 |
Señal SPI |
Pin SRAM |
Función |
| PA15 |
CS (GPIO) |
1 – CS |
Chip select (software) |
| PA6 |
MISO |
2 – SO |
Master In / Slave Out |
| — |
3.3 V |
3 – SIO2 |
Hold (no usado, pull-up) |
| GND |
GND |
4 – VSS |
Masa |
| PA7 |
MOSI |
5 – SI |
Master Out / Slave In |
| PA5 |
SCK |
6 – SCK |
Reloj SPI (10.5 MHz) |
| — |
3.3 V |
7 – SIO3 |
Hold (no usado, pull-up) |
| 3.3 V |
VCC |
8 – VCC |
Alimentación |
USART1 — Consola
| Pin STM32 |
Señal |
Función |
| PA9 |
TX (AF7) |
Transmisión UART |
| PA10 |
RX (AF7) |
Recepción UART |
GPIO auxiliar
| Pin STM32 |
Función |
| PC13 |
LED de estado (integrado en BlackPill) |
Diagrama de bloques
flowchart TD
MCU[STM32F401CCU6\nBlackPill]
SRAM[23AA04M\n512 KB SRAM]
USART[USB-UART\nCP2102]
LED[LED PC13]
SysTick[SysTick\n1 kHz]
DWT[DWT\nCycle Counter]
MCU -->|SPI1 10.5 MHz\nPA5/PA6/PA7| SRAM
MCU -->|PA15 CS| SRAM
MCU -->|USART1 115200\nPA9| USART
USART -->|printf| MCU
MCU -->|GPIO| LED
SysTick -->|IRQ| MCU
DWT -->|delay_us| MCU
Alimentación
| Característica |
Detalle |
| Tensión de trabajo |
3.3 V (vía regulador de la BlackPill) |
| Alimentación |
USB (5 V) → regulador interno → 3.3 V |
| Consumo SRAM |
~10 mA (activa), ~4 µA (standby) |
Documento generado el 2026-06-27. Ver también Arquitectura Software, Protocolos / API.