STM32F103CBT6 alternatieven: gids voor 128 KB Flash MCU

STM32F103CBT6 Alternatives: 128 KB Flash MCU Guide

STM32F103CBT6 alternatieven: gids voor 128 KB Flash MCU

Dezelfde die, dezelfde 48-pins footprint, twee keer zoveel flash — en het firmwarewerk dat de meeste mensen vergeten voordat ze omwisselen.

Inkoopgids· MCU ·MCU / MPU / SoC-inventaris · 64 KB kruisverwijzing

TL;DR

  • STM32F103CBT6is de 128 KB-variant van de C8T6: dezelfde Cortex-M3, dezelfde 48-pins LQFP, dezelfde toolchain.
  • Het is de minst risicovolle manier om extra ruimte toe te voegen — geen boardwijziging, geen nieuwe drivers, alleen een controle van de geheugenindeling.
  • Het werk zit in het linkerscript, de OTA-partitietabel en de vectortabel — niet in de perifere eenheden.
  • Er bestaan tweede bronnen met 128 KB, maar ze hebben dezelfde voorbehouden 'dezelfde pins, ander silicium' als de 64 KB-familie.
  • Als de image nog groeit, plan dan voor de 256 KB-klasse in plaats van twee keer te kwalificeren.

1. Waarom de CBT6 bestaat

De F103-familie is gebouwd rond één enkele die die met verschillende flashdichtheden kon worden geconfigureerd. Daarom delen de C6T6, C8T6 en CBT6 een package, een pinout en een set peripherals: de verschillen zitten in het geheugen, niet in de architectuur.

Voor een ontwerper is dat een geschenk. Een board dat voor de C8T6 is gekwalificeerd, accepteert de CBT6 zonder wijziging van de layout, en de firmware compileert zonder wijzigingen aan de drivers. De enige vraag is of de geheugenindeling nog steeds standhoudt.

Voor een inkoper is het een beslissing over prijs en beschikbaarheid: het 128 KB-onderdeel kost iets meer, maar het voorkomt dat de opslag later een tweede keer opnieuw moet worden ontworpen.

2. De drie geheugenvarianten

Onderdeel Flash RAM Op voorraad
STM32F103C6T6 32 KB 10 KB Yes
STM32F103C8T6 64 KB 20 KB Yes
STM32F103CBT6 128 KB 20 KB Yes

Let op wat niet verandert: RAM blijft 20 KB voor zowel de C8T6 als de CBT6. Het verdubbelen van het flashgeheugen geeft de applicatie niet meer stack, heap of buffers. Als de beperking RAM is, is het antwoord een andere familie, niet een onderdeel met meer flashgeheugen.

De 32 KB C6T6 is de omgekeerde afweging: de goedkoopste, maar alleen haalbaar voor een kleine vaste image. Van 32 KB naar 128 KB is een viervoudige toename en lost de beperking meestal definitief op.

Wat identiek blijft

Pinout, behuizing, set aan peripherals, klokstructuur en debug-interface zijn ongewijzigd voor de C6T6, C8T6 en CBT6. Hetzelfde board, hetzelfde kristal, dezelfde SWD-header en dezelfde USB-schakeling werken met alle drie.

Daarom wordt de upgrade vaak als "gratis" omschreven. De engineering-inspanning is reëel maar begrensd: werk het linkerscript bij, controleer de partitietabel en voer de acceptatietests opnieuw uit. Geen wijziging in het schema, geen herlayout en geen nieuwe drivers.

Het enige noemenswaardige verschil in peripherals dat gecontroleerd moet worden, is de paginageometrie van de flashcontroller, omdat de paginagrootte bepaalt hoe de geëmuleerde EEPROM en de bootloader wissen.

In de praktijk zijn de C8T6 en CBT6 op distributieniveau vaak uitwisselbaar, en komt de keuze neer op welke op het moment van de build beschikbaar is. Die flexibiliteit is op zichzelf een argument om de partitietabel rond 128 KB te ontwerpen, zodat beide onderdelen zonder firmwarewijziging kunnen worden gebruikt.

3. Wanneer 64 KB niet meer voldoende is

Firmware groeit in voorspelbare stappen. Een project dat comfortabel binnen 40 KB paste, kan de 64 KB-grens overschrijden wanneer een van de volgende vijf dingen gebeurt.

Er wordt een netwerkstack toegevoegd.Zelfs een compacte TCP/IP-stack met TLS verbruikt tientallen kilobytes.

Er wordt een display en een set lettertypen toegevoegd.Een paar Chinese of Japanse glyphsets kunnen het volledige applicatiebudget overschrijden.

OTA-staging wordt toegevoegd.Dual-bank-updates hebben ruimte nodig voor een tweede image, of ten minste een gecomprimeerde.

Logging of configuratieopslag verhuist naar flash.Geëmuleerde EEPROM-pagina's verkleinen de bruikbare applicatieruimte.

Debugsymbolen of een bootloader groeien.De bootloader bezet de onderkant van flash, of iemand het nu meet of niet.

Wat verbruikt daadwerkelijk de extra 64 KB

Het helpt om te zien waar de ruimte naartoe gaat voordat je een beslissing neemt. Een typische connected applicatie op deze klasse MCU valt ongeveer als volgt uiteen: bootloader 16 KB, applicatiecode 30–50 KB, een compacte TCP/IP-stack 12–20 KB, TLS 15–25 KB, een bestandssysteem en configuratie 4–8 KB, en een OTA-staginggebied gelijk aan de imagegrootte.

Tel die getallen op en de limiet is snel bereikt. Een applicatie van 45 KB met TLS en dual-bank-staging heeft meer dan 128 KB nodig voordat er nog maar logging- of fontgegevens bij komen. Daarom lijkt de 64 KB-uitvoering op de werkbank toereikend en komt ze tijdens de integratie ruimte tekort.

Dezelfde rekensom verklaart waarom "gewoon TLS inschakelen" net zo goed een opslagbeslissing als een beveiligingsbeslissing is. Cipher suites en certificaatstores zijn niet gratis.

4. De migratiewerkzaamheden

Item Wat verandert
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

De meest voorkomende fout is het wijzigen van het linkerscript en het vergeten van de partitietabel. Het board programmeert dan correct, maar de OTA-update schrijft voorbij de staging-regio, of de bootloader weigert een image die hij te groot acht.

Uithoudingsvermogen en geëmuleerde EEPROM

Flash is geen EEPROM. De F103-flash is gespecificeerd voor een beperkt aantal wiscycli, doorgaans in de orde van tienduizend per pagina. Een configuratieblok dat bij elke power-down wordt geschreven, put een pagina lang voordat de levensduur van het product afloopt.

Geëmuleerde EEPROM lost dit op met twee technieken. Ten eerste wordt naar een nieuwe locatie geschreven in plaats van te overschrijven, zodat slijtage over een pagina of een blok wordt verdeeld. Ten tweede wordt een kleine index in RAM bijgehouden en wordt de index alleen herschreven wanneer de pagina vol is.

Beide technieken verbruiken flash evenredig met het aantal variabelen en de diepte van de slijtnivellering. Op een onderdeel van 64 KB kan dit een aanzienlijk deel van het budget zijn; op de CBT6 maakt de extra ruimte een dieper slijtnivelleringsschema betaalbaar.

Als het product continu data logt, overweeg dan een externe FRAM of een kleine SPI-flash in plaats van de interne flash van de MCU te slijten. De kosten zijn bescheiden en de betrouwbaarheidswinst is groot.

Klok, waitstates en ervaren prestaties

Een grotere flash maakt de MCU niet sneller, maar kan het aantal flash-waitstates veranderen waarmee de code draait. Bij 72 MHz heeft de F103 waitstates nodig op beide dichtheden; het verschil komt naar voren wanneer code op verschillende adressen wordt geplaatst of wanneer de prefetch-buffer zich anders gedraagt.

Voor de meeste toepassingen is dit onzichtbaar. Voor op cycli getelde lussen, bit-banged interfaces en strakke regellussen kan het ertoe doen, en de acceptatietest moet de timinggevoelige paden omvatten in plaats van alleen functionele controles.

Als het ontwerp onder 48 MHz draait, zijn waitstates meestal nul en verdwijnt het verschil volledig. Dat is een reden waarom veel industriële ontwerpen opzettelijk langzamer draaien dan het maximum.

5. Flashgrootte tijdens runtime

De F103 rapporteert zijn flashgrootte in een register dat firmware kan lezen. Dat is nuttig voor een platform dat wordt geleverd met ofwel 64 KB- of 128 KB-onderdelen, en het is ook een valkuil: code die paginatellingen of sectoradressen hardcodeert, gedraagt zich verkeerd bij een andere dichtheid.

Als het product met beide varianten kan worden verzonden, lees dan de grootte bij het opstarten en configureer de opslaglaag op basis daarvan. Als het met slechts één variant wordt verzonden, controleer dan de verwachte grootte in de productietest, zodat een verkeerde reel vóór assemblage wordt opgemerkt.

OTA-ontwerpopties

Vier patronen zijn gangbaar, en hun flashkosten verschillen sterk.

Dual bank.Twee volledige image-slots plus een bootloader. Veilig en eenvoudig, maar vereist het dubbele imageformaat. Op 128 KB verbruikt een image van 40 KB met dual-bank-staging 80 KB vóór de gegevens.

Gecomprimeerde staging.De gedownloade image wordt gecomprimeerd opgeslagen en bij het opstarten ter plaatse uitgepakt. Bespaart ruimte, voegt een decompressiestap toe en een faalmodus als de decompressor wordt onderbroken.

Externe staging.De image wordt opgeslagen in een externe SPI-flash, en de MCU kopieert deze intern. Voegt een component toe, maar heft de interne ruimtebeperking volledig op.

Geen staging.Het apparaat downloadt en schrijft rechtstreeks, doorgaans met een recovery-bootloader. Het goedkoopst qua flash, het riskantst in het veld.

Welk patroon ook wordt gekozen, de partitietabel moet vastliggen voordat de firmware wordt geschreven. Als deze later wordt gewijzigd, maakt dat elk apparaat in het veld ongeldig.

Firmwarecompatibiliteitscontroles

Vier controles vangen de meeste migratieproblemen af voordat ze in het veld terechtkomen.

Device-ID.De opstartcode van de firmware kan op de ID vertakken; voeg de nieuwe waarde expliciet toe.

Flashgrootteregister.Controleer in de productietest dat de verwachte waarde aanwezig is, zodat een reel met de verkeerde dichtheid bij het programmeren wordt afgekeurd.

Vectortabel-offset.Als de bootloader de applicatie verplaatst, controleer dan of de offset overeenkomt met de nieuwe partitietabel.

Aantal pagina's voor EEPROM-emulatie.Het aantal pagina's dat voor de configuratie is gereserveerd, moet overeenkomen met de nieuwe indeling, anders zal de laatste pagina de applicatie overlappen.

6. Tweede bronnen bij 128 KB

Familie Flash Opmerking
GD32F103CBT6 128 KB Pin compatible; different flash timing and higher clock capability

Dezelfde regels uit het 64 KB-artikel gelden: pincompatibiliteit is mechanisch, en de firmware moet worden gevalideerd. Bij een grotere flash verschijnt één extra punt — het flash-programmeeralgoritme en de erase-granulariteit kunnen verschillen, wat zowel de productietijd als het OTA-ontwerp beïnvloedt.

Controleer ook het herstelpad. Als de bootloader DFU via USB of UART ondersteunt, test dan een herstel van een beschadigd applicatie-image op de nieuwe dichtheid, omdat de DFU-descriptor vaak de maximale imagegrootte codeert.

Debugtoegang is ongewijzigd, maar de optiebytes zijn een controle waard: uitleesbeveiliging, watchdoggedrag en configuratie van de bootpin worden in flash opgeslagen en kunnen per lot verschillen in de standaardstatus. Bevestig ze op de fixture in plaats van op de werkbank.

Productieprogrammering en traceerbaarheid

Het wijzigen van de dichtheid verandert het programmeerimage en vaak ook de fixture. Drie punten moeten op de lijn worden geverifieerd.

Imagegrootte en checksum.Het programmeerapparaat moet de grotere image accepteren, en de checksum die in het bootloadergebied is opgeslagen moet overeenkomen.

Terugleesverificatie.Een volledige verificatie na het programmeren vangt een reel met de verkeerde dichtheid onmiddellijk af, in plaats van bij de eerste opstart.

Loggen van unieke ID.De 96-bits unieke ID koppelt een apparaat aan een productierecord. Door deze te loggen worden retouren uit het veld traceerbaar en helpt het een slechte partij te identificeren.

7. Testplan

Stap Test Slaagcriteria
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

Wanneer 128 KB nog steeds niet genoeg is

Als de geprojecteerde image groter is dan ongeveer 100 KB, is de volgende stap niet een andere F103-variant — het is een andere familie. De Cortex-M3 van de F103 op 72 MHz en 20 KB RAM vormt eerder de beperking dan het flashgeheugen.

Opties zijn onder meer de 256 KB-klasse in dezelfde familie, een Cortex-M4-onderdeel met meer RAM en een floating-point unit, of een externe QSPI-flash met ondersteuning voor execute-in-place. Elk is een platformbeslissing met eigen certificerings- en firmwarekosten.

De praktische regel: kies de dichtheid die de komende twee jaar aan functies dekt, niet de huidige imagegrootte. Hetzelfde board twee keer opnieuw kwalificeren is duurder dan vanaf het begin een iets groter onderdeel te kopen.

Een productverhaal van vijf jaar

Denk aan een controller die in 2021 is ontworpen met een image van 40 KB op de C8T6. In 2023 bereikte het image 58 KB nadat een webinterface was toegevoegd. In 2024 duwde TLS het voorbij 64 KB, en het team comprimeerde lettertypen om het passend te maken.

In 2025 paste de OTA-stagingruimte niet meer. De oplossing op dat moment was een boardrevisie, een nieuwe partitie-indeling en een veldmigratie — allemaal vermijdbaar als het ontwerp op de CBT6 was begonnen voor een paar cent meer.

Dat is het argument voor headroom: niet dat de extra flash onmiddellijk wordt gebruikt, maar dat de kosten van het tekortschieten worden gemeten in re-spins in plaats van in centen.

8. Kosten en planning

Het prijsverschil tussen de C8T6 en CBT6 is klein. De beslissing gaat niet over de stukprijs; ze gaat erom of de extra 64 KB een toekomstig herontwerp voorkomt.

Drie signalen pleiten voor de CBT6: de huidige image is groter dan 45 KB, de roadmap omvat een netwerkstack of een display, of het product heeft een levensduur van meerdere jaren. Twee signalen pleiten ervoor om bij 64 KB te blijven: de image is stabiel en klein, en het volume is hoog genoeg dat centen ertoe doen.

Als de image al dicht bij 100 KB ligt, ga dan direct naar de 256 KB-klasse. Een 128 KB-component kwalificeren en dan over een jaar opnieuw overstappen is het duurste pad.

Een beslisregel voor nieuwe ontwerpen

Noteer drie getallen voordat u kiest: huidige imagegrootte, verwachte grootte over twee jaar, en of OTA vereist is. Als het antwoord op OTA ja is, tel dan de imagegrootte er nogmaals bij op. Als het geprojecteerde totaal boven 90 KB ligt, begin dan bij 128 KB of hoger.

Voor een product met een vaste functie zonder connectiviteit en zonder OTA is 64 KB meestal ruim voldoende, en de C8T6 blijft de goedkopere keuze. De fout is aannemen dat een product vijf jaar lang ongewijzigd blijft.

9. FAQ

Is CBT6 een drop-invervanging voor C8T6?

Fysiek en functioneel ja. De firmware vereist dat het linkerscript en de partitietabel worden bijgewerkt voor de grotere flash.

Neemt het RAM toe?

Nee. Beide onderdelen hebben 20 KB. Als RAM de beperkende factor is, helpt een onderdeel met grotere flash niet.

Kan ik later terugkeren naar C8T6?

Alleen als de image in 64 KB past. Plan de partitietabel zodanig dat een downgrade mogelijk is zonder codewijziging.

Hebben alternatieve leveranciers hetzelfde register voor de flashgrootte?

Meestal bestaat er een compatibel register, maar de waarde en de granulariteit kunnen verschillen. Lees de datasheet voor het exacte onderdeel.

Wat is de meest voorkomende migratiebug?

Het bijwerken van het linkerscript maar niet de OTA-partitietabel, waardoor updates buiten de stagingruimte schrijven.

Moet ik CBT6 bestellen voor een nieuw ontwerp?

Als de image onder 32 KB is en stabiel, is C8T6 prima. Als er enige kans op groei is — een webinterface, TLS, logging of OTA — begin dan bij 128 KB en vermijd een tweede ontwerpcyclus.

Leveringsnotities

Beschikbaarheid bij deze dichtheid is beter dan bij 32 KB, omdat meer ontwerpen het gebruiken. Houd één goedgekeurde tweede bron aan en bevestig dat het flash-programmeeralgoritme ervan overeenkomt met je productiefixture; de image is hetzelfde, maar de tooling mogelijk niet. Controleer dit voordat je de bestelling plaatst.

10. Bronnen

Over de auteur— Gepubliceerd door het Chip-Seek Supply Chain Intelligence Team. We volgen beschikbaarheid van componenten, substituties en kwalificatierisico voor hardware-ingenieurs en inkoopteams. Lees onzekwaliteits- en traceerbaarheidsproces.

Meer flash-ruimte nodig?

Laat ons het huidige onderdeel en de imagegrootte weten. We geven u een prijsopgave voor de 64 KB- en 128 KB-varianten uit voorraad, zodat u ze op hetzelfde board kunt vergelijken.

Controleer CBT6-voorraadMonsters aanvragen

Check stock by part number

Turn this insight into a sourcing decision.

Need pricing or a drop-in alternative? Submit a BOM / RFQ or talk to our team.