STM32F103CBT6-Alternativen: Leitfaden für 128-KB-Flash-MCUs
Derselbe Die, derselbe 48-Pin-Footprint, doppelt so viel Flash — und die Firmware-Arbeit, die die meisten vor dem Austausch vergessen.
TL;DR
- STM32F103CBT6ist das 128-KB-Schwestermodell des C8T6: gleicher Cortex-M3, gleiches 48-Pin-LQFP, gleiche Toolchain.
- Es ist der risikoärmste Weg, zusätzlichen Spielraum zu schaffen – keine Platinenänderung, keine neuen Treiber, nur eine Überprüfung der Speicherbelegung.
- Die Arbeit liegt im Linker-Skript, in der OTA-Partitionstabelle und in der Vektortabelle – nicht in der Peripherie.
- Zweitquellen mit 128 KB existieren, aber für sie gelten dieselben Vorbehalte „gleiche Pins, anderes Silizium“ wie für die 64-KB-Familie.
- Wenn das Firmware-Image noch wächst, planen Sie die 256-KB-Klasse ein, anstatt zweimal zu qualifizieren.
1. Warum der CBT6 existiert
Die F103-Familie wurde um einen einzigen Die herum aufgebaut, der mit unterschiedlichen Flash-Dichten konfiguriert werden konnte. Deshalb teilen sich C6T6, C8T6 und CBT6 ein Gehäuse, ein Pinout und ein Peripherie-Set: Die Unterschiede liegen im Speicher, nicht in der Architektur.
Für einen Entwickler ist das ein Geschenk. Eine für den C8T6 qualifizierte Platine nimmt den CBT6 ohne Layoutänderung auf, und die Firmware kompiliert ohne Treiberänderungen. Die einzige Frage ist, ob die Speichermap noch gilt.
Für einen Einkäufer ist es eine Preis- und Verfügbarkeitsentscheidung: Das 128-KB-Bauteil kostet etwas mehr, beseitigt aber das Risiko eines späteren zweiten Speicher-Redesigns.
2. Die drei Speichervarianten
| Bauteil | Flash-Speicher | RAM | Auf Lager |
|---|---|---|---|
| STM32F103C6T6 | 32 KB | 10 KB | Yes |
| STM32F103C8T6 | 64 KB | 20 KB | Yes |
| STM32F103CBT6 | 128 KB | 20 KB | Yes |
Beachten Sie, was sich nicht ändert: Der RAM bleibt sowohl beim C8T6 als auch beim CBT6 bei 20 KB. Eine Verdopplung des Flash-Speichers verleiht der Anwendung nicht mehr Stack, Heap oder Puffer. Wenn das RAM der begrenzende Faktor ist, liegt die Antwort in einer anderen Familie, nicht in einem größeren Flash-Bauteil.
Der 32-KB-C6T6 ist der umgekehrte Kompromiss: am günstigsten, aber nur für ein kleines, festes Image praktikabel. Der Wechsel von 32 KB auf 128 KB ist eine Vervierfachung und löst die Einschränkung in der Regel dauerhaft.
Was gleich bleibt
Pinbelegung, Gehäuse, Peripherieset, Taktbaum und Debug-Schnittstelle sind bei C6T6, C8T6 und CBT6 unverändert. Dasselbe Board, derselbe Quarz, derselbe SWD-Header und dieselbe USB-Schaltung funktionieren mit allen drei.
Deshalb wird das Upgrade oft als "kostenlos" bezeichnet. Der Entwicklungsaufwand ist real, aber begrenzt: Linker-Skript aktualisieren, Partitionstabelle prüfen, Abnahmetests erneut ausführen. Keine Änderung am Schaltplan, kein neues Layout, keine neuen Treiber.
Der einzige erwähnenswerte Peripherieunterschied ist die Seitengeometrie des Flash-Controllers, denn die Seitengröße bestimmt, wie das emulierte EEPROM und der Bootloader löschen.
In der Praxis sind C8T6 und CBT6 auf Distributorenebene oft austauschbar, und die Wahl hängt davon ab, welcher zum Zeitpunkt des Builds verfügbar ist. Diese Flexibilität ist selbst ein Argument dafür, die Partitionstabelle auf 128 KB auszulegen, sodass beide Teile ohne Firmware-Änderung verwendet werden können.
3. Wenn 64 KB nicht mehr ausreichen
Firmware wächst in vorhersehbaren Schritten. Ein Projekt, das bei 40 KB bequem passte, kann 64 KB überschreiten, wenn eines von fünf Dingen eintritt.
Ein Netzwerk-Stack wird hinzugefügt.Selbst ein kompakter TCP/IP-Stack mit TLS verbraucht Dutzende Kilobyte.
Ein Display und ein Schriftartensatz werden hinzugefügt.Ein paar chinesische oder japanische Glyphensätze können das gesamte Anwendungsbudget überschreiten.
OTA-Staging wird hinzugefügt.Dual-Bank-Updates benötigen Platz für ein zweites Image oder zumindest für ein komprimiertes.
Protokollierung oder Konfigurationsspeicherung verlagert sich in den Flash-Speicher.Emulierte EEPROM-Seiten reduzieren den nutzbaren Anwendungsspeicher.
Debug-Symbole oder ein Bootloader wachsen.Der Bootloader belegt den unteren Bereich des Flash-Speichers, unabhängig davon, ob jemand ihn misst.
Was die zusätzlichen 64 KB tatsächlich verbraucht
Es hilft zu sehen, wohin der Speicherplatz geht, bevor man sich entscheidet. Eine typische vernetzte Anwendung auf dieser MCU-Klasse verteilt sich grob wie folgt: Bootloader 16 KB, Anwendungscode 30–50 KB, ein kompakter TCP/IP-Stack 12–20 KB, TLS 15–25 KB, ein Dateisystem und Konfiguration 4–8 KB sowie ein OTA-Staging-Bereich in der Größe des Images.
Rechnet man diese Zahlen zusammen, ist die Obergrenze schnell erreicht. Eine 45-KB-Anwendung mit TLS und Dual-Bank-Staging benötigt mehr als 128 KB, bevor überhaupt Logging- oder Font-Daten hinzukommen. Deshalb wirkt das 64-KB-Bauteil auf dem Prüfstand ausreichend und reicht dann während der Integration nicht mehr aus.
Dieselbe Rechnung erklärt, warum „einfach TLS aktivieren“ ebenso eine Speicherentscheidung wie eine Sicherheitsentscheidung ist. Cipher Suites und Zertifikatsspeicher kosten ebenfalls Speicher.
4. Der Migrationsaufwand
| Element | Was sich ändert |
|---|---|
| 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 |
Der häufigste Fehler ist, das Linker-Skript zu ändern und die Partitionstabelle zu vergessen. Das Board lässt sich dann zwar korrekt programmieren, aber das OTA-Update schreibt über den Staging-Bereich hinaus, oder der Bootloader lehnt ein Image ab, das er für zu groß hält.
Zyklusfestigkeit und emuliertes EEPROM
Flash ist kein EEPROM. Der Flash des F103 ist für eine begrenzte Anzahl von Löschzyklen ausgelegt, typischerweise im Bereich von zehntausend pro Seite. Ein Konfigurationsblock, der bei jedem Ausschalten geschrieben wird, erschöpft eine Seite lange vor dem Ende der Produktlebensdauer.
Emuliertes EEPROM löst dies mit zwei Techniken. Erstens wird an eine freie Stelle geschrieben, statt zu überschreiben, sodass sich der Verschleiß über eine Seite oder einen Block verteilt. Zweitens wird ein kleiner Index im RAM gehalten und der Index nur neu geschrieben, wenn die Seite voll ist.
Beide Techniken verbrauchen Flash proportional zur Anzahl der Variablen und zur Tiefe des Wear-Levelings. Bei einem 64-KB-Baustein kann dies einen erheblichen Anteil des Budgets ausmachen; beim CBT6 ermöglicht der zusätzliche Speicherplatz ein tieferes Wear-Leveling-Schema.
Wenn das Produkt kontinuierlich Daten aufzeichnet, sollte ein externes FRAM oder ein kleiner SPI-Flash in Betracht gezogen werden, anstatt den internen Flash des MCU zu verschleißen. Die Kosten sind moderat und der Zuverlässigkeitsgewinn ist groß.
Takt, Wait States und wahrgenommene Performance
Ein größerer Flash-Speicher macht den MCU nicht schneller, kann aber die Anzahl der Flash-Wait-States ändern, mit denen der Code läuft. Bei 72 MHz benötigt der F103 bei beiden Dichten Wait States; der Unterschied zeigt sich, wenn Code an unterschiedlichen Adressen platziert wird oder wenn sich der Prefetch-Puffer anders verhält.
Für die meisten Anwendungen ist das unsichtbar. Bei zyklusgezählten Schleifen, bit-banged Schnittstellen und engen Regelkreisen kann es eine Rolle spielen, und der Abnahmetest sollte die zeitkritischen Pfade einschließen und nicht nur funktionale Prüfungen.
Wenn das Design unter 48 MHz läuft, sind die Wait States normalerweise null und der Unterschied verschwindet vollständig. Das ist ein Grund, warum viele industrielle Designs bewusst langsamer als das Maximum laufen.
5. Flash-Größe zur Laufzeit
Der F103 meldet seine Flash-Größe in einem Register, das die Firmware lesen kann. Das ist nützlich für eine Plattform, die entweder mit 64-KB- oder 128-KB-Varianten ausgeliefert wird, und es ist auch eine Falle: Code, der Seitenzahlen oder Sektoradressen fest codiert, verhält sich bei einer anderen Dichte fehlerhaft.
Wenn das Produkt mit beiden Varianten ausgeliefert werden kann, lesen Sie die Größe beim Booten aus und konfigurieren Sie die Speicherschicht danach. Wenn es nur mit einer Variante ausgeliefert wird, prüfen Sie die erwartete Größe im Fertigungstest, damit eine falsche Rolle vor der Montage erkannt wird.
OTA-Designoptionen
Vier Muster sind üblich, und ihre Flash-Kosten unterscheiden sich stark.
Dual-Bank.Zwei vollständige Image-Slots plus einen Bootloader. Sicher und einfach, erfordert aber die doppelte Image-Größe. Bei 128 KB verbraucht ein 40-KB-Image mit Dual-Bank-Staging 80 KB vor den Daten.
Komprimiertes Staging.Das heruntergeladene Image wird komprimiert gespeichert und beim Booten an Ort und Stelle entpackt. Spart Platz, fügt einen Dekomprimierungsschritt und einen Fehlermodus hinzu, falls der Dekompressor unterbrochen wird.
Externes Staging.Das Image wird in einem externen SPI-Flash gespeichert, und die MCU kopiert es intern. Fügt eine Komponente hinzu, beseitigt aber die interne Platzbeschränkung vollständig.
Kein Staging.Das Gerät lädt herunter und schreibt direkt, typischerweise mit einem Recovery-Bootloader. Am günstigsten im Flash, am riskantesten im Feld.
Unabhängig davon, welches Muster gewählt wird, muss die Partitionstabelle festgelegt sein, bevor die Firmware geschrieben wird. Eine spätere Änderung macht jedes Gerät im Feld ungültig.
Firmware-Kompatibilitätsprüfungen
Vier Prüfungen fangen die meisten Migrationsprobleme ab, bevor sie in den Feldeinsatz gelangen.
Geräte-ID.Der Startcode der Firmware kann abhängig von der ID verzweigen; fügen Sie den neuen Wert explizit hinzu.
Flash-Größenregister.Den erwarteten Wert im Fertigungstest prüfen, sodass eine Rolle mit falscher Dichte bereits beim Programmieren aussortiert wird.
Offset der Vektortabelle.Wenn der Bootloader die Anwendung verschiebt, bestätigen Sie, dass der Offset zur neuen Partitionstabelle passt.
Seitenanzahl der EEPROM-Emulation.Die Anzahl der für die Konfiguration reservierten Seiten muss mit dem neuen Layout übereinstimmen, andernfalls überschneidet sich die letzte Seite mit der Anwendung.
6. Zweitquellen bei 128 KB
| Familie | Flash-Speicher | Hinweis |
|---|---|---|
| GD32F103CBT6 | 128 KB | Pin compatible; different flash timing and higher clock capability |
Es gelten dieselben Regeln wie im 64-KB-Artikel: Die Pin-Kompatibilität ist mechanisch, und die Firmware muss validiert werden. Bei größerem Flash kommt ein zusätzlicher Punkt hinzu — der Flash-Programmieralgorithmus und die Löschgranularität können abweichen, was sich sowohl auf die Produktionszeit als auch auf das OTA-Design auswirkt.
Prüfen Sie außerdem den Recovery-Pfad. Wenn der Bootloader DFU über USB oder UART unterstützt, testen Sie eine Wiederherstellung aus einem beschädigten Anwendungsabbild auf der neuen Dichte, da der DFU-Deskriptor häufig die maximale Abbildgröße kodiert.
Der Debug-Zugriff ist unverändert, aber die Option Bytes sind eine Prüfung wert: Ausleseschutz, Watchdog-Verhalten und Boot-Pin-Konfiguration werden im Flash gespeichert und können sich im Standardzustand zwischen Chargen unterscheiden. Bestätigen Sie sie am Fixture und nicht auf dem Labortisch.
Produktionsprogrammierung und Rückverfolgbarkeit
Ein Wechsel der Dichte ändert das Programmierabbild und häufig auch das Fixture. Drei Punkte sollten in der Fertigungslinie verifiziert werden.
Imagegröße und Prüfsumme.Das Programmiergerät muss das größere Image akzeptieren, und die im Bootloader-Bereich gespeicherte Prüfsumme muss übereinstimmen.
Rücklese-Verifikation.Eine vollständige Verifizierung nach der Programmierung erkennt eine Rolle mit falscher Dichte sofort, statt erst beim ersten Start.
Unique-ID-Protokollierung.Die 96-Bit-Unique-ID verknüpft ein Gerät mit einem Produktionsdatensatz. Ihre Protokollierung macht Feldrückläufer nachverfolgbar und hilft, eine fehlerhafte Charge zu identifizieren.
7. Testplan
| Schritt | Test | Bestandskriterien |
|---|---|---|
| 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 |
Wenn 128 KB noch nicht ausreichen
Wenn die prognostizierte Image-Größe über etwa 100 KB liegt, ist der nächste Schritt keine andere F103-Variante — sondern eine andere Familie. Der Cortex-M3 des F103 mit 72 MHz und 20 KB RAM wird eher zum Engpass als der Flash-Speicher.
Zu den Optionen gehören die 256-KB-Klasse derselben Familie, ein Cortex-M4-Teil mit mehr RAM und einer Gleitkommaeinheit oder ein externer QSPI-Flash mit Execute-in-Place-Unterstützung. Jede davon ist eine Plattformentscheidung mit eigenen Zertifizierungs- und Firmware-Kosten.
Die praktische Regel: Wählen Sie die Speicherdichte, die die Funktionen der nächsten zwei Jahre abdeckt, nicht die aktuelle Image-Größe. Dieselbe Platine zweimal neu zu qualifizieren ist teurer, als von Anfang an ein etwas größeres Bauteil zu kaufen.
Eine Produktgeschichte über fünf Jahre
Betrachten Sie einen Controller, der 2021 mit einem 40-KB-Image auf dem C8T6 entwickelt wurde. Bis 2023 erreichte das Image 58 KB, nachdem eine Webschnittstelle hinzugefügt worden war. Bis 2024 trieb TLS es über 64 KB, und das Team komprimierte Schriftarten, damit es passte.
2025 passte der OTA-Staging-Bereich nicht mehr. Die Lösung war zu diesem Zeitpunkt eine Platinenrevision, ein neues Partitionslayout und eine Migration im Feld – alles vermeidbar, wenn das Design von Anfang an auf dem CBT6 für ein paar Cent mehr begonnen hätte.
Das ist das Argument für Reserve: nicht, dass der zusätzliche Flash sofort genutzt wird, sondern dass sich die Kosten eines zu knappen Speichers in Re-Spins und nicht in Cent messen lassen.
8. Kosten und Planung
Der Preisunterschied zwischen C8T6 und CBT6 ist gering. Bei der Entscheidung geht es nicht um die Stückkosten; es geht darum, ob die zusätzlichen 64 KB ein zukünftiges Redesign überflüssig machen.
Drei Signale sprechen für den CBT6: Das aktuelle Image ist größer als 45 KB, die Roadmap enthält einen Netzwerk-Stack oder ein Display, oder das Produkt hat eine mehrjährige Lebensdauer. Zwei Signale sprechen dafür, bei 64 KB zu bleiben: Das Image ist stabil und klein, und die Stückzahl ist hoch genug, dass Cents eine Rolle spielen.
Wenn das Image bereits nahe 100 KB liegt, gehen Sie direkt zur 256-KB-Klasse. Ein 128-KB-Bauteil zu qualifizieren und dann in einem Jahr erneut zu wechseln, ist der teuerste Weg.
Eine Entscheidungsregel für neue Designs
Notieren Sie drei Zahlen, bevor Sie wählen: aktuelle Image-Größe, erwartete Größe in zwei Jahren und ob OTA erforderlich ist. Wenn die Antwort auf OTA ja ist, addieren Sie die Image-Größe erneut. Wenn die prognostizierte Gesamtsumme über 90 KB liegt, beginnen Sie bei 128 KB oder höher.
Für ein Produkt mit fest definierten Funktionen ohne Konnektivität und ohne OTA sind 64 KB normalerweise ausreichend, und der C8T6 bleibt die günstigere Wahl. Der Fehler besteht darin, anzunehmen, dass ein Produkt fünf Jahre lang unverändert bleibt.
9. FAQ
Ist CBT6 ein Drop-in-Ersatz für C8T6?
Physisch und funktional ja. Die Firmware benötigt ein aktualisiertes Linker-Skript und eine aktualisierte Partitionstabelle für den größeren Flash-Speicher.
Erhöht sich der RAM?
Nein. Beide Bauteile haben 20 KB. Wenn RAM der limitierende Faktor ist, hilft eine Variante mit größerem Flash nicht weiter.
Kann ich später wieder auf C8T6 zurückgehen?
Nur wenn das Image in 64 KB passt. Plane die Partitionstabelle so, dass ein Downgrade ohne Codeänderung möglich ist.
Haben Zweitquellen dasselbe Flash-Größenregister?
Normalerweise existiert ein kompatibles Register, aber der Wert und die Granularität können abweichen. Lies das Datenblatt für das genaue Bauteil.
Was ist der häufigste Migrationsfehler?
Das Linker-Skript zu aktualisieren, aber nicht die OTA-Partitionstabelle, was zu Updates führt, die außerhalb des Staging-Bereichs schreiben.
Sollte ich CBT6 für ein neues Design bestellen?
Wenn das Image unter 32 KB groß und stabil ist, ist C8T6 in Ordnung. Wenn es irgendeine Chance auf Wachstum gibt – eine Weboberfläche, TLS, Logging oder OTA –, beginnen Sie mit 128 KB und vermeiden Sie einen zweiten Designzyklus.
Lieferhinweise
Die Verfügbarkeit bei dieser Dichte ist besser als bei 32 KB, weil mehr Designs diese Dichte nutzen. Halten Sie eine zugelassene Zweitquelle vor und bestätigen Sie, dass deren Flash-Programmieralgorithmus mit Ihrer Produktionsvorrichtung übereinstimmt; das Image ist dasselbe, aber das Tooling ist möglicherweise nicht identisch. Prüfen Sie es, bevor Sie die Bestellung aufgeben.
10. Quellen
- ST STM32F103CB Produktseite:st.com
- GigaDevice GD32F103 Dokumentation:gigadevice.com
Über den Autor— Veröffentlicht vom Chip-Seek Supply Chain Intelligence Team. Wir verfolgen Komponentenverfügbarkeit, Substitutionen und Qualifizierungsrisiken für Hardware-Ingenieure und Beschaffungsteams. Lesen Sie unserenQualitäts- und Rückverfolgbarkeitsprozess.
Brauchen Sie mehr Flash-Reservespeicher?
Nennen Sie uns das aktuelle Bauteil und die Image-Größe. Wir bieten Ihnen die 64 KB- und 128 KB-Varianten ab Lager an, damit Sie sie auf derselben Platine vergleichen können.