Alternativas al STM32F103CBT6: Guía de MCU con 128 KB de Flash
El mismo die, la misma huella de 48 pines, el doble de flash — y el trabajo de firmware que la mayoría olvida antes de hacer el cambio.
TL;DR
- STM32F103CBT6es el hermano de 128 KB del C8T6: mismo Cortex-M3, mismo LQFP de 48 pines, misma cadena de herramientas.
- Es la forma de menor riesgo de añadir margen: sin cambios en la placa, sin nuevos controladores, solo una revisión del mapa de memoria.
- El trabajo está en el script del enlazador, la tabla de particiones OTA y la tabla de vectores, no en los periféricos.
- Existen segundas fuentes con 128 KB, pero tienen las mismas advertencias de "mismos pines, silicio diferente" que la familia de 64 KB.
- Si la imagen aún está creciendo, planifique la clase de 256 KB en lugar de validar dos veces.
1. Por qué existe el CBT6
La familia F103 se construyó alrededor de un único die que podía configurarse con diferentes densidades de flash. Por eso el C6T6, el C8T6 y el CBT6 comparten encapsulado, pinout y conjunto de periféricos: las diferencias son de memoria, no de arquitectura.
Para un diseñador, eso es un regalo. Una placa calificada para el C8T6 acepta el CBT6 sin cambios en el diseño, y el firmware compila sin cambios en los controladores. La única pregunta es si el mapa de memoria sigue siendo válido.
Para un comprador, es una decisión de precio y disponibilidad: la pieza de 128 KB cuesta un poco más, pero elimina el riesgo de un segundo rediseño del almacenamiento más adelante.
2. Las tres variantes de memoria
| Componente | Flash | RAM | En stock |
|---|---|---|---|
| STM32F103C6T6 | 32 KB | 10 KB | Yes |
| STM32F103C8T6 | 64 KB | 20 KB | Yes |
| STM32F103CBT6 | 128 KB | 20 KB | Yes |
Tenga en cuenta lo que no cambia: la RAM se mantiene en 20 KB tanto en el C8T6 como en el CBT6. Duplicar la memoria flash no proporciona a la aplicación más pila, heap ni búferes. Si el límite es la RAM, la respuesta es una familia diferente, no un componente con más memoria flash.
El C6T6 de 32 KB es el compromiso opuesto: el más económico, pero solo viable para una imagen fija pequeña. Pasar de 32 KB a 128 KB es un aumento de cuatro veces y normalmente resuelve la restricción de forma permanente.
Qué permanece idéntico
El pinout, el encapsulado, el conjunto de periféricos, el árbol de reloj y la interfaz de depuración no cambian entre el C6T6, el C8T6 y el CBT6. La misma placa, el mismo cristal, el mismo conector SWD y el mismo circuito USB funcionan con los tres.
Por eso la actualización suele describirse como "gratuita". El esfuerzo de ingeniería es real pero acotado: actualizar el script del enlazador, revisar la tabla de particiones y volver a ejecutar las pruebas de aceptación. Sin cambios en el esquema, sin rehacer el layout y sin nuevos controladores.
La única diferencia de periféricos que merece la pena revisar es la geometría de página del controlador de flash, porque el tamaño de página determina cómo borran la EEPROM emulada y el bootloader.
En la práctica, el C8T6 y el CBT6 suelen ser intercambiables a nivel de distribuidor, y la elección se reduce a cuál esté disponible en el momento de la fabricación. Esa flexibilidad es en sí misma un argumento para diseñar la tabla de particiones en torno a 128 KB, de modo que se pueda usar cualquiera de las dos piezas sin cambiar el firmware.
3. Cuando 64 KB deja de ser suficiente
El firmware crece en pasos predecibles. Un proyecto que cabía cómodamente en 40 KB puede superar los 64 KB cuando ocurre una de cinco cosas.
Se añade una pila de red.Incluso una pila TCP/IP compacta con TLS consume decenas de kilobytes.
Se añade una pantalla y un conjunto de fuentes.Unos pocos conjuntos de glifos chinos o japoneses pueden superar todo el presupuesto de la aplicación.
Se añade el área de preparación para OTA.Las actualizaciones de doble banco necesitan espacio para una segunda imagen, o al menos para una comprimida.
El almacenamiento de registros o de configuración pasa a la flash.Las páginas de EEPROM emulada reducen el espacio utilizable de la aplicación.
Los símbolos de depuración o un bootloader crecen.El bootloader ocupa la parte inferior de la flash, se mida o no.
Qué consume realmente los 64 KB adicionales
Ayuda ver adónde va el espacio antes de decidir. Una aplicación conectada típica en esta clase de MCU se desglosa aproximadamente así: bootloader 16 KB, código de aplicación 30–50 KB, una pila TCP/IP compacta 12–20 KB, TLS 15–25 KB, un sistema de archivos y configuración 4–8 KB, y un área de preparación OTA igual al tamaño de la imagen.
Al sumar esas cifras, el techo se alcanza enseguida. Una aplicación de 45 KB con TLS y preparación de doble banco necesita más de 128 KB antes de incluir cualquier registro o datos de fuentes. Por eso la pieza de 64 KB parece adecuada en el banco y luego se queda sin espacio durante la integración.
La misma aritmética explica por qué "solo habilitar TLS" es una decisión de almacenamiento tanto como de seguridad. Los conjuntos de cifrado y los almacenes de certificados no son gratis.
4. El trabajo de migración
| Concepto | Qué cambia |
|---|---|
| Linker script | FLASH length from 64K to 128K |
| Partition table | Application, staging and data sizes |
| Vector table offset | Only if the bootloader or app base moves |
| OTA bank size | A larger image needs a larger staging area |
| EEPROM emulation | Page count changes if the layout moves |
| Production programming | Image size and checksum |
El error más común es modificar el script del enlazador y olvidar la tabla de particiones. La placa entonces se programa correctamente, pero la actualización OTA escribe más allá de la región de staging, o el bootloader rechaza una imagen que considera demasiado grande.
Resistencia y EEPROM emulada
La flash no es EEPROM. La flash del F103 está especificada para un número limitado de ciclos de borrado, típicamente en el rango de diez mil por página. Un bloque de configuración escrito en cada apagado agotará una página mucho antes de que termine la vida útil del producto.
La EEPROM emulada resuelve esto con dos técnicas. Primero, escribe en una ubicación nueva en lugar de sobrescribir, de modo que el desgaste se reparte entre una página o un bloque. Segundo, mantiene un índice pequeño en RAM y reescribe el índice solo cuando la página está llena.
Ambas técnicas consumen flash proporcional al número de variables y a la profundidad del wear-leveling. En un componente de 64 KB, esto puede ser una fracción significativa del presupuesto; en el CBT6, el espacio adicional hace asequible un esquema de wear-leveling más profundo.
Si el producto registra datos de forma continua, considere una FRAM externa o una pequeña flash SPI en lugar de desgastar la flash interna del MCU. El costo es moderado y la mejora de fiabilidad es grande.
Reloj, estados de espera y rendimiento percibido
Una flash más grande no hace que el MCU sea más rápido, pero puede cambiar el número de estados de espera de flash con los que se ejecuta el código. A 72 MHz, el F103 necesita estados de espera en ambas densidades; la diferencia aparece cuando el código se ubica en direcciones diferentes o cuando el búfer de prefetch se comporta de forma distinta.
Para la mayoría de las aplicaciones esto es invisible. Para bucles con conteo de ciclos, interfaces bit-banged y bucles de control ajustados puede importar, y la prueba de aceptación debería incluir las rutas sensibles a la temporización en lugar de solo comprobaciones funcionales.
Si el diseño funciona por debajo de 48 MHz, los estados de espera suelen ser cero y la diferencia desaparece por completo. Esa es una razón por la que muchos diseños industriales funcionan deliberadamente más lentos que el máximo.
5. Tamaño de la flash en tiempo de ejecución
El F103 informa su tamaño de flash en un registro que el firmware puede leer. Eso es útil para una plataforma que se entrega con piezas de 64 KB o 128 KB, y también es una trampa: el código que codifica de forma fija los recuentos de páginas o las direcciones de sector funcionará mal en una densidad diferente.
Si el producto puede enviarse con ambas variantes, lea el tamaño al arrancar y configure la capa de almacenamiento a partir de él. Si se envía con solo una, compruebe el tamaño esperado en la prueba de fabricación para que una bobina incorrecta se detecte antes del ensamblaje.
Opciones de diseño OTA
Cuatro patrones son comunes y su coste de flash difiere marcadamente.
Banco dual.Dos ranuras de imagen completas más un bootloader. Seguro y sencillo, pero necesita el doble del tamaño de imagen. En 128 KB, una imagen de 40 KB con almacenamiento provisional de banco dual consume 80 KB antes de los datos.
Almacenamiento provisional comprimido.La imagen descargada se almacena comprimida y se expande en el mismo lugar durante el arranque. Ahorra espacio, añade un paso de descompresión y un modo de fallo si se interrumpe el descompresor.
Almacenamiento temporal externo.La imagen se almacena en una memoria flash SPI externa y la MCU la copia internamente. Añade un componente, pero elimina por completo la restricción de espacio interno.
Sin almacenamiento temporal.El dispositivo descarga y escribe directamente, normalmente con un bootloader de recuperación. Es la opción más económica en flash y la más arriesgada en campo.
Cualquiera que sea el patrón elegido, la tabla de particiones debe fijarse antes de escribir el firmware. Cambiarla después invalida todos los dispositivos en campo.
Comprobaciones de compatibilidad del firmware
Cuatro comprobaciones detectan la mayoría de los problemas de migración antes de que lleguen al campo.
ID del dispositivo.El código de arranque del firmware puede ramificar según el ID; añada el nuevo valor explícitamente.
Registro de tamaño de Flash.Verifique el valor esperado en la prueba de fabricación, de modo que se rechace un carrete de densidad incorrecta en el momento de la programación.
Desplazamiento de la tabla de vectores.Si el gestor de arranque reubica la aplicación, confirme que el desplazamiento coincida con la nueva tabla de particiones.
Número de páginas de emulación de EEPROM.El número de páginas reservadas para la configuración debe coincidir con la nueva distribución, o la última página se superpondrá a la aplicación.
6. Segundas fuentes a 128 KB
| Familia | Flash | Nota |
|---|---|---|
| GD32F103CBT6 | 128 KB | Pin compatible; different flash timing and higher clock capability |
Se aplican las mismas reglas del artículo de 64 KB: la compatibilidad de pines es mecánica y el firmware debe validarse. Con una flash de mayor tamaño, aparece un elemento adicional: el algoritmo de programación de la flash y la granularidad de borrado pueden diferir, lo que afecta tanto el tiempo de producción como el diseño de OTA.
También verifique la ruta de recuperación. Si el bootloader admite DFU por USB o UART, pruebe una recuperación a partir de una imagen de aplicación corrupta en la nueva densidad, porque el descriptor DFU a menudo codifica el tamaño máximo de la imagen.
El acceso de depuración no cambia, pero vale la pena revisar los option bytes: la protección contra lectura, el comportamiento del watchdog y la configuración del pin de arranque se almacenan en la flash y pueden diferir en su estado predeterminado entre lotes. Confírmelos en el fixture y no en el banco.
Programación en producción y trazabilidad
El cambio de densidad modifica la imagen de programación y, a menudo, el fixture. Se deben verificar tres elementos en la línea.
Tamaño de imagen y suma de verificación.El programador debe aceptar la imagen más grande, y la suma de verificación almacenada en el área del bootloader debe coincidir.
Verificación por lectura.Una verificación completa después de la programación detecta de inmediato un carrete con densidad incorrecta, en lugar de en el primer arranque.
Registro del ID único.El ID único de 96 bits vincula un dispositivo a un registro de producción. Registrarlo hace que las devoluciones de campo sean rastreables y ayuda a identificar un lote defectuoso.
7. Plan de pruebas
| Paso | Prueba | Criterios de aprobación |
|---|---|---|
| 1 | Read flash size and device ID | Matches the expected density |
| 2 | Program the full image | Verifies with zero errors |
| 3 | Boot and run the acceptance test | No timing regressions |
| 4 | OTA update with power cut | Recovers via the bootloader |
| 5 | EEPROM emulation wear test | No page exhaustion after 100k writes |
Cuando 128 KB todavía no son suficientes
Si la imagen proyectada supera aproximadamente los 100 KB, el siguiente paso no es otra variante de F103 — es una familia diferente. El Cortex-M3 a 72 MHz y 20 KB de RAM del F103 se convierte en la limitación antes que la memoria flash.
Las opciones incluyen la clase de 256 KB de la misma familia, un componente Cortex-M4 con más RAM y una unidad de punto flotante, o una memoria flash QSPI externa con soporte de ejecución en el lugar. Cada una es una decisión de plataforma con su propio coste de certificación y firmware.
La regla práctica: elegir la densidad que cubra las funciones de los próximos dos años, no el tamaño de imagen actual. Volver a cualificar la misma placa dos veces cuesta más que comprar un componente algo más grande desde el principio.
Una historia de producto a cinco años
Considere un controlador diseñado en 2021 con una imagen de 40 KB en el C8T6. Para 2023, la imagen alcanzó los 58 KB tras añadir una interfaz web. Para 2024, TLS la llevó más allá de los 64 KB, y el equipo comprimió las fuentes para que cupiera.
En 2025, el área de preparación de OTA ya no cabía. La solución en ese momento fue una revisión de la placa, una nueva distribución de particiones y una migración en campo; todo evitable si el diseño hubiera comenzado en el CBT6 por unos céntimos más.
Ese es el argumento a favor del margen: no que la flash adicional se vaya a usar de inmediato, sino que el coste de quedarse sin ella se mide en re-spins y no en céntimos.
8. Costo y planificación
La diferencia de precio entre el C8T6 y el CBT6 es pequeña. La decisión no gira en torno al costo unitario, sino a si los 64 KB adicionales evitan un futuro rediseño.
Tres señales abogan por el CBT6: la imagen actual supera los 45 KB, la hoja de ruta incluye una pila de red o una pantalla, o el producto tiene una vida útil de varios años. Dos señales abogan por quedarse en 64 KB: la imagen es estable y pequeña, y el volumen es lo suficientemente alto como para que los centavos importen.
Si la imagen ya está cerca de los 100 KB, pase directamente a la clase de 256 KB. Calificar un componente de 128 KB y luego cambiar de nuevo en un año es el camino más costoso.
Una regla de decisión para nuevos diseños
Anote tres números antes de elegir: el tamaño actual de la imagen, el tamaño esperado dentro de dos años y si se requiere OTA. Si la respuesta a OTA es sí, sume de nuevo el tamaño de la imagen. Si el total proyectado supera los 90 KB, comience en 128 KB o más.
Para un producto de función fija sin conectividad y sin OTA, 64 KB suele ser suficiente y el C8T6 sigue siendo la opción más económica. El error es asumir que un producto permanecerá fijo durante cinco años.
9. Preguntas frecuentes
¿Es el CBT6 un reemplazo directo del C8T6?
Física y funcionalmente, sí. El firmware necesita que se actualicen el script del enlazador y la tabla de particiones para la mayor memoria flash.
¿Aumenta la RAM?
No. Ambas piezas tienen 20 KB. Si la RAM es la limitación, una pieza con más flash no ayudará.
¿Puedo volver a C8T6 más adelante?
Solo si la imagen cabe en 64 KB. Planifica la tabla de particiones de modo que sea posible una degradación sin cambios en el código.
¿Las fuentes alternativas tienen el mismo registro de tamaño de flash?
Normalmente existe un registro compatible, pero el valor y la granularidad pueden variar. Consulta la hoja de datos de la pieza exacta.
¿Cuál es el error de migración más común?
Actualizar el script del enlazador pero no la tabla de particiones OTA, lo que produce actualizaciones que escriben fuera del área de preparación.
¿Debería pedir CBT6 para un nuevo diseño?
Si la imagen es inferior a 32 KB y es estable, C8T6 es suficiente. Si existe alguna posibilidad de crecimiento —una interfaz web, TLS, registro o OTA—, empiece con 128 KB y evite un segundo ciclo de diseño.
Notas de suministro
La disponibilidad en esta densidad es mejor que en 32 KB, porque más diseños la utilizan. Mantenga una segunda fuente aprobada y confirme que su algoritmo de programación de flash coincide con su fixture de producción; la imagen es la misma, pero las herramientas pueden no serlo. Compruébelo antes de realizar el pedido.
10. Fuentes
- Página de producto de ST STM32F103CB:st.com
- Documentación de GigaDevice GD32F103:gigadevice.com
Sobre el autor— Publicado por el Chip-Seek Supply Chain Intelligence Team. Realizamos seguimiento de la disponibilidad de componentes, las sustituciones y el riesgo de calificación para ingenieros de hardware y equipos de compras. Consulte nuestroproceso de calidad y trazabilidad.
¿Necesita más margen de flash?
Indíquenos la pieza actual y el tamaño de la imagen. Le cotizaremos las variantes de 64 KB y 128 KB desde inventario para que pueda comparar en la misma placa.