STM32F103RBT6 till RET6: Guide för migrering av flashdensitet

STM32F103RCT6 guide cover using a real STMicroelectronics STM32F103 LQFP64 microcontroller photograph

STM32F103RBT6 till RET6: Guide för migrering av flashdensitet

STM32F103RCT6 och dess syskon RBT6 och RET6 delar samma 64-stifts LQFP-footprint och samma Cortex-M3-kärna, vilket är exakt varför en flashuppgradering i denna familj behandlas som ett drop-in-byte när den inte är det. Stiftkompatibilitet är mekanisk. Flashens raderingssidesstorlek, SRAM och bootloaderns egna antaganden garanteras inte av footprinten, och ST dokumenterar själv skillnaden direkt i sin programmeringsmanual.

1. Vad förändras egentligen mellan RBT6, RCT6 och RET6?

Alla tre komponenterna är STM32F103-mikrokontrollers i prestandalinjen, byggda kring samma 72 MHz Arm Cortex-M3-kärna, samma periferienheter och samma LQFP64-kapsel med en kropp på 10 × 10 × 1.4 mm. Bokstaven efter "F103" tillsammans med siffran anger flashstorleken: RBT6 levereras med 128 Kbytes flash och 20 Kbytes SRAM, RCT6 levereras med 256 Kbytes flash och 48 Kbytes SRAM, och RET6 levereras med 512 Kbytes flash och upp till 64 Kbytes SRAM. Ingenting i kislet förändrar stiftantalet, stiftfördelningen eller kärnans periferienheter; endast mängden minne på kislet förändras.

Kombinationen av identisk footprint och mer minne gör detta till ett verkligt fall av en "kapacitetsuppgradering" snarare än ett byte till en annan leverantör. Det behövs ingen ny kortrevision, inget nytt landningsmönster och ingen ändring av SWD- eller JTAG-debuggkontakten. Det återstående arbetet finns helt i programvaran: kontrollera att inget i bygget, länkarskriptet eller flashdrivrutinen förutsatte den mindre komponentens geometri.

STs eget datablad för hög densitet (DS5792, som omfattar komponenterna 256 till 512 Kbyte) och databladet för medelhög densitet hänvisar båda till samma beskrivning av prestandalinjefamiljen, och det kommersiella databladet STM32F103x8/B anger att familjen är utformad för fullständig stift-till-stift-, programvaru- och funktionskompatibilitet. Detta uttalande gäller familjerelationen och ersätter inte kontroll av den specifika minneskartan för den komponent som ska användas.

2. Är stiftkonfigurationen verkligen identisk?

Mekaniskt sett, ja, för just denna trio. RBT6, RCT6 och RET6 anger alla ett LQFP 64, 10 × 10 × 1.4 mm-kapselalternativ på STs beställningsinformationssidor, med 51 allmänna I/O-stift i denna konfiguration. Samma komponentnummer erbjuds även i andra kapslar (RBT6 lägger till exempel till ett TFBGA64-alternativ), så kapselsuffixet och den exakta beställningskoden måste kontrolleras individuellt. Ett påstående om "samma stiftantal" är inte detsamma som en verifierad footprintmatchning för den specifika beställningsbara komponent som används.

STM32F103RBT6, RCT6 and RET6 LQFP64 pinout showing identical pin assignment with only the flash and SRAM capacity changing between the three densities
Figur 1. Ursprunglig Chip-seek-stiftkarta för LQFP64-kapseln som delas av RBT6, RCT6 och RET6, baserad på stiftkonfigurationstabellerna i ST-databladen. Endast minneskapaciteten skiljer de tre åt; stiftnamnen och positionerna ändras inte.
Komponent Flash SRAM Densitetsklass LQFP64 erbjuds
STM32F103RBT6 128 KB 20 KB Medium-density Yes
STM32F103RCT6 256 KB 48 KB High-density Yes
STM32F103RET6 512 KB 64 KB High-density Yes

Innan ni fattar beslut om en eventuell ny kortrevision bör ni hämta den aktuella tabellen över komponentinformation i databladet för den exakta beställningskod som ska köpas in. STs katalog, liksom de flesta leverantörers, lägger periodvis till eller tar bort specifika kapselalternativ per komponentnummer, och beställningskodens suffix ("T6" här, samt eventuella efterföljande bokstäver för kapsel eller temperatur) är det som en distributör faktiskt lagerför.

3. Varför kallar ST dessa för olika "densitetsklasser"?

STs referensmanual för STM32F10xxx (RM0008) och manualen för flashprogrammering (PM0075) delar in familjen STM32F101/F102/F103 i klasserna låg densitet (16 till 32 Kbytes flash), medelhög densitet (64 till 128 Kbytes), hög densitet (256 till 512 Kbytes) och XL-densitet. RBT6 tillhör klassen med medelhög densitet; RCT6 och RET6 tillhör klassen med hög densitet. Detta är inte en marknadsföringsetikett: densitetsklassen avgör hur det interna flashminnesfältet är organiserat, vilket påverkar programvaran.

Specifikt anger PM0075 att huvudblocket för flashminnet är organiserat som 32 sidor på 1 Kbyte för enheter med låg densitet, 128 sidor på 1 Kbyte för enheter med medelhög densitet och 256 sidor på 2 Kbytes för enheter med hög densitet. Raderingsgranulariteten, det minsta block som flashkontrollern kan radera i en operation, är kopplad till densitetsklassen, inte till komponentfamiljens stiftkompatibilitet.

4. Vad är en flashraderingssida, och varför spelar dess storlek roll?

Inbyggt flashminne kan inte skrivas om en byte i taget på samma sätt som RAM kan. För att ändra tidigare programmerade bitar från 0 tillbaka till 1 måste flashkontrollern radera en hel sida, och först därefter kan nya data programmeras i den. Sidan är därför den atomära enheten för alla uppdateringar i fält, oavsett om det handlar om att en bootloader skriver en ny programavbild, att ett inställningsblock skrivs om eller att en trådlös uppdatering förbereder en ny firmwareversion.

Flash memory map comparison showing RBT6 organized as 128 pages of 1 Kbyte and RCT6/RET6 organized as larger pages of 2 Kbytes, from the STM32F10xxx flash programming manual
Figur 2. Ursprungligt Chip-seek-diagram över flashorganisationen som beskrivs i STs PM0075 programmeringsmanual: enheter med medelhög densitet använder en sida på 1 Kbyte, medan enheter med hög densitet använder en sida på 2 Kbyte.

En konstruktion baserad på RBT6 som raderar flash i enheter om 1 Kbyte och lagrar två oberoende datablock med 1 Kbyte mellan sig eftersom det var en säker raderingsgräns på den komponenten, förlitar sig på en egenskap hos flashminnesfältet med medelhög densitet. Om samma firmware flyttas till RCT6 utan att detta kontrolleras igen innebär det att raderingskommandot nu rensar 2 Kbytes åt gången: det andra datablocket, som firmware fortfarande tror är isolerat, ligger inuti sidan som just raderades tillsammans med det första.

Detta feltillstånd ser till en början inte ut som ett flashproblem. Det visar sig som inställningar som tyst återställs, en programpartition som skadas efter en uppdatering eller en OTA-avbild som startar en gång och sedan misslyckas efter nästa skrivcykel. Eftersom symptomet uppstår under användning och inte under flashning är det lätt att lägga tid på att undersöka timing, strömförsörjning eller avbrott innan den verkliga orsaken, ett antagande om sidesstorleken, kontrolleras.

5. Var går en hårdkodad sidesstorlek sönder i en bootloader?

Diagram showing three places a firmware build encodes flash erase page size: linker script regions, the flash driver erase routine, and third-party OTA or settings storage libraries
Figur 3. Ursprungligt Chip-seek-diagram över de tre ställen där en typisk STM32F103-firmwarebygge kodar ett antagande om raderingssidesstorlek; alla måste granskas när måldelens densitetsklass ändras.

Tre ställen i en typisk firmwarebygge kodar ett antagande om raderingssidesstorlek, och alla tre måste granskas vid byte mellan densitetsklasser:

  1. Länkarskriptets definitioner av flashminnesregioner. En anpassad bootloader-/applikationsuppdelning anpassar ofta regionerna till den raderingssidesegräns som användes under utvecklingen. Om den gränsen valdes som 1 Kbyte på RBT6, är regionerna fortfarande giltiga adresser på RCT6, men de är inte längre anpassade till den delens faktiska 2 Kbyte raderingsgräns, vilket kan göra att delvisa sidor sträcker sig över applikations- och bootloaderregionerna under en uppdatering.
  2. Flashdrivrutinens raderingsrutin. Både ST's HAL och standardbiblioteket för periferienheter exponerar flashraderingsfunktioner som tar en sidadress, men sidstorhetskonstanten som används för att beräkna hur många raderingsanrop som behövs, eller var nästa sida börjar, definieras ibland lokalt i applikationskoden i stället för att läsas från delens egen minnesorganisation.
  3. Alla OTA- eller inställningslagringsbibliotek som hämtas från utanför HAL. Tredjepartsbibliotek för flashbaserad lagring använder ofta som standard en konfigurerbar sidstorlek som måste ställas in per måldel; om en 1 Kbyte-standard lämnas kvar i tysthet när RCT6-kisel används uppstår samma korruptionsrisk utan något symptom på länkarnivå.

Den praktiska lösningen är densamma i alla tre fallen: hitta varje hänvisning till raderingssidesstorleken i bygget, bekräfta att den läses från (eller uttryckligen matchas mot) måldelens faktiska organisation i det aktuella databladet och PM0075, och kör om en fullständig raderings-/programmerings-/verifieringscykel över ett representativt adressintervall, inte bara de adresser som användes under den ursprungliga uppstarten.

6. Vad ändras utöver flashminnet?

Bar chart comparing flash and SRAM capacity across STM32F103RBT6, RCT6 and RET6, showing SRAM growing proportionally faster than flash
Figur 4. Ursprungligt Chip-seek-diagram som jämför flash- och SRAM-kapacitet hos de tre delarna, baserat på varje dels aktuella ST-datablad.

SRAM ökar i samma riktning som flashminnet, men med en större relativ förändring: 20 KB på RBT6 jämfört med 48 KB på RCT6 är mer än dubbelt så mycket, och 64 KB på RET6 är mer än tre gånger så mycket. En design som låg nära gränsen för RAM på den mindre delen får betydande utrymme för större buffertar, en större heap eller ytterligare RTOS-uppgifter. En design som dimensionerade RAM exakt för RBT6's 20 KB bör kontrollera att alla statiska allokeringar med fast storlek, stackstorlekar och länkarsymboler fortfarande är rimliga; ett byte till en del med mer tillgängligt RAM kräver inte att allt används, men all kod som beräknade adresser i förhållande till en fast, mindre RAM-storlek bör granskas på samma sätt som flashantagandena.

Kärnan, klockträdet, GPIO-strukturen och kommunikationsperiferienheterna (I2C, SPI, I2S, USART, USB, CAN) ändras inte mellan dessa tre delar. De elektriska specifikationerna, driftspänningsområdet och tidsparametrarna för dessa periferienheter fastställs av designen för prestandafamiljen, inte av minnesdensiteten, så en kvalificering på periferienhetsnivå behöver inte upprepas enbart på grund av flashuppgraderingen.

7. Vad måste verifieras innan delen uppgraderas?

En densitetsuppgradering i denna familj är säker när fem punkter har kontrollerats mot den specifika måldelens aktuella datablad och manualen för flashprogrammering, i stället för att antas enbart utifrån stiftkompatibiliteten.

  1. Beställningsbar kapselkod. Bekräfta att den exakta LQFP64-beställningskoden för måldensiteten är aktuell och tillgänglig från den avsedda källan; kapselalternativ kan skilja sig åt inom densitetsintervallet hos en viss tillverkare.
  2. Flashminnets raderingssidesstorlek. Bekräfta om bootloadern, OTA-biblioteket eller inställningslagringen förutsätter en fast sidstorlek, och uppdatera denna konstant så att den matchar måldelens densitetsklass (1 Kbyte för medeldensitet, 2 Kbyte för hög densitet).
  3. Regionjustering i länkarskriptet. Kontrollera på nytt att applikations- och bootloaderregionerna är anpassade till den nya raderingssidesgränsen, inte bara till en giltig flashadress.
  4. RAM-relativ adressering. Granska all kod som beräknade buffertplaceringar eller stackgränser i förhållande till en specifik SRAM-storlek i stället för att använda verktygskedjans länkarsymboler.
  5. Fullständigt raderings-/programmerings-/verifieringstest. Kör hela uppdateringsflödet, inklusive en simulerad avbruten skrivning om applikationen stöder felsäkra uppdateringar, innan den nya delen kvalificeras för produktion.

Dokumentera vilken specifik del (RBT6, RCT6 eller RET6) en viss firmwarebygge riktar sig mot, och undvik att leverera en enda binärfil över densitetsklasser utan en uttrycklig sidstorlekskontroll i själva flashdrivrutinen.

8. Finns det stiftkompatibla alternativ utanför ST-familjen?

STM32F103-kompatibla andrahandsdelar finns från andra tillverkare och säljs i allmänhet med samma LQFP64-stiftarrangemang för motsvarande densiteter, enligt samma logik som den tidigare STM32F103C8T6-korsreferensguiden på denna webbplats. Förbehållet är detsamma här: stiftkompatibilitet är ett mekaniskt påstående om kapseln och fastställer inte i sig en identisk flashkontroller, identisk raderingssidesstorlek eller identiska tidsparametrar för flashprogrammering. Bekräfta den specifika tillverkarens egen programmeringsmanual för raderingssidesstorleken och konfigurationen av flashåtkomstcykeln innan du antar att en andrahandsdel fungerar som det ursprungliga ST på firmwarenivå.

9. Vad ska ingå i inköpsförfrågan?

Vid inköp av en densitetsuppgradering ger en förfrågan som anger den exakta måldelen ett användbart svar snabbare än en som bara anger en flashstorlek. En leverantör kan bekräfta lagerstatus utifrån den fullständiga beställningskoden, men ett naket "256 KB STM32F103" anger inte kapsel, temperaturklass eller exakt suffix.

Användbara fält är det fullständiga beställningsbara artikelnumret (inklusive kapsel- och temperatursuffix), kvantiteten per bygge med årsvolym, om designen byter från en specifik mindre del (ange det exakta artikelnumret för källdelen), samt om den aktuella firmwarens flashraderingsrutin redan har uppdaterats för måldensitetsklassen. Om endast måldensiteten är viktig och antingen RCT6 eller RET6 fungerar, säg det; om en specifik RAM-storlek krävs, ange den i stället för att begära "den största tillgängliga".

För aktuell tillgänglighet i denna familj, sök i STM32F103RCT6-listningen, STM32F103RBT6-listningen och STM32F103RET6-listningen på chip-seek.com. Dessa sidor visar aktuella katalogresultat snarare än ett lagerlöfte; bekräfta kvantitet och datakod mot offerten. Den tidigare STM32F103C8T6-korsreferensguiden och STM32F103CBT6-guide omfattar de mindre LQFP48-medlemmarna i samma familj för projekt som ännu inte har valt 64-stiftskapslingen. En förfrågan om sourcing med flera rader kan skickas via BOM och RFQ-formulär.

Vanliga frågor

Kan jag använda samma firmwarebinär på RBT6 och RCT6 utan ändringar? Endast om firmware redan läser flashminnets geometri från komponentens egna definitioner i stället för att hårdkoda sidstorleken. Det mesta uppstartskod som skrivits för ett enda mål hårdkodar den, så granska flashdrivrutinen och länkarskriptet innan binären återanvänds.

Är LQFP64-kapslingen faktiskt identisk mellan RBT6, RCT6 och RET6? Ja, för LQFP 64, 10 × 10 × 1.4 mm-kapslingen som anges i varje komponents aktuella ST-beställningsinformation. Bekräfta den specifika beställningskoden för målkomponenten, eftersom kapslingstillgängligheten kan ändras under produktens livscykel.

Vad är skillnaden mellan medium density och high density i ST:s terminologi? Det är en klassificering av flashkapacitet som definieras i ST:s RM0008-referensmanual: medium density omfattar 64 till 128 Kbytes flashminne, medan high density omfattar 256 till 512 Kbytes. Klassen bestämmer flashminnesmatrisens interna organisation, inklusive raderingssidans storlek.

Kräver mer SRAM i sig några firmwareändringar? Nej. Oanvänt RAM behöver inte användas. Granskning behövs endast för kod som beräknar adresser eller gränser i förhållande till den mindre komponentens fasta RAM-storlek i stället för att använda symboler från länkaren.

Ändras ADC, timers, USB och CAN-periferienheter mellan dessa tre komponenter? Nej. Den centrala uppsättningen periferienheter, de elektriska specifikationerna och klockträdet bestäms av familjedesignen för performance-line och ändras inte med minnestätheten i denna trio.

Vad händer om raderingssidan har fel storlek i firmware som används i produktion? När ett område raderas kan intilliggande data inom samma fysiska raderingssida oavsiktligt raderas, vilket vanligtvis visar sig som skadade inställningar eller en misslyckad uppdatering snarare än som ett omedelbart programmeringsfel.

Källor

Behöver du hjälp att hitta rätt densitet?

Skicka källkomponentens artikelnummer (om du migrerar från en lägre densitet), målflashens storlek och den exakta kapslingssuffixen. Begär bekräftad kvantitet, lot-/datumkod och lagerägare före godkännande. Den här guiden har inte verifierat aktuellt lager; katalogresultat i sig fastställer inte egenägt lager eller firmwarekompatibilitet.

Sök i aktuellt lagerSkicka en RFQ

Arbetar du i stället med 48-stiftsfamiljen? STM32F103C8T6-korsreferensguide omfattar den mindre LQFP48-kapslingen.

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.