Alternatif STM32F103CBT6: Panduan MCU Flash 128 KB
Die yang sama, footprint 48-pin yang sama, flash dua kali lipat — dan pekerjaan firmware yang kebanyakan orang lupakan sebelum melakukan penggantian.
TL;DR
- STM32F103CBT6adalah varian sekeluarga 128 KB dari C8T6: Cortex-M3 yang sama, LQFP 48-pin yang sama, toolchain yang sama.
- Ini adalah cara paling rendah risiko untuk menambah ruang cadangan — tanpa perubahan papan, tanpa driver baru, hanya peninjauan peta memori.
- Pekerjaannya ada pada linker script, tabel partisi OTA, dan tabel vektor — bukan pada periferal.
- Sumber alternatif dengan 128 KB tersedia, tetapi memiliki peringatan "pin sama, silikon berbeda" yang sama seperti keluarga 64 KB.
- Jika image masih berkembang, rencanakan untuk kelas 256 KB daripada harus melakukan kualifikasi dua kali.
1. Mengapa CBT6 ada
Keluarga F103 dibangun di sekitar satu die yang dapat dikonfigurasi dengan kepadatan flash berbeda. Itulah sebabnya C6T6, C8T6, dan CBT6 berbagi paket, pinout, dan set periferal: perbedaannya adalah memori, bukan arsitektur.
Bagi perancang, itu adalah anugerah. Board yang dikualifikasi untuk C8T6 menerima CBT6 tanpa perubahan tata letak, dan firmware dikompilasi tanpa perubahan driver. Satu-satunya pertanyaan adalah apakah peta memori masih berlaku.
Bagi pembeli, ini adalah keputusan harga dan ketersediaan: part 128 KB sedikit lebih mahal, tetapi menghilangkan risiko redesain penyimpanan kedua di kemudian hari.
2. Tiga varian memori
| Komponen | Flash | RAM | Ada stok |
|---|---|---|---|
| STM32F103C6T6 | 32 KB | 10 KB | Yes |
| STM32F103C8T6 | 64 KB | 20 KB | Yes |
| STM32F103CBT6 | 128 KB | 20 KB | Yes |
Perhatikan apa yang tidak berubah: RAM tetap 20 KB pada C8T6 dan CBT6. Menggandakan flash tidak memberi aplikasi lebih banyak stack, heap, atau buffer. Jika batasnya adalah RAM, solusinya adalah keluarga yang berbeda, bukan varian flash yang lebih besar.
32 KB C6T6 adalah trade-off sebaliknya: paling murah, tetapi hanya layak untuk image tetap yang kecil. Berpindah dari 32 KB ke 128 KB adalah peningkatan empat kali lipat dan biasanya menyelesaikan kendala secara permanen.
Apa yang tetap identik
Pinout, paket, set periferal, clock tree, dan antarmuka debug tidak berubah di seluruh C6T6, C8T6, dan CBT6. Board yang sama, kristal yang sama, header SWD yang sama, dan sirkuit USB yang sama berfungsi dengan ketiganya.
Itulah sebabnya peningkatan ini sering disebut "gratis". Upaya rekayasanya nyata tetapi terbatas: perbarui linker script, tinjau tabel partisi, jalankan ulang tes penerimaan. Tidak ada perubahan skema, tidak ada tata letak ulang, tidak ada driver baru.
Satu-satunya perbedaan periferal yang perlu diperiksa adalah geometri halaman pengontrol flash, karena ukuran halaman menentukan cara EEPROM yang diemulasikan dan bootloader melakukan penghapusan.
Dalam praktiknya, C8T6 dan CBT6 sering kali dapat dipertukarkan di tingkat distributor, dan pilihannya bergantung pada mana yang tersedia pada saat build. Fleksibilitas itu sendiri menjadi alasan untuk merancang tabel partisi di sekitar 128 KB, sehingga salah satu part dapat digunakan tanpa perubahan firmware.
3. Ketika 64 KB tidak lagi cukup
Firmware tumbuh dalam langkah-langkah yang dapat diprediksi. Proyek yang nyaman muat di 40 KB dapat melewati 64 KB ketika salah satu dari lima hal terjadi.
Tumpukan jaringan ditambahkan.Bahkan stack TCP/IP ringkas dengan TLS mengonsumsi puluhan kilobyte.
Layar dan set font ditambahkan.Beberapa set glif Tionghoa atau Jepang dapat melebihi seluruh anggaran aplikasi.
OTA staging ditambahkan.Pembaruan dual-bank memerlukan ruang untuk image kedua, atau setidaknya image terkompresi.
Penyimpanan log atau konfigurasi berpindah ke flash.Halaman EEPROM emulasi mengurangi ruang aplikasi yang dapat digunakan.
Simbol debug atau bootloader bertambah besar.Bootloader menempati bagian bawah flash baik diukur maupun tidak.
Apa yang sebenarnya menghabiskan 64 KB tambahan
Akan membantu untuk melihat ke mana ruang digunakan sebelum memutuskan. Aplikasi terhubung yang tipikal pada kelas MCU ini kurang lebih terbagi seperti ini: bootloader 16 KB, kode aplikasi 30–50 KB, stack TCP/IP ringkas 12–20 KB, TLS 15–25 KB, sistem file dan konfigurasi 4–8 KB, serta area staging OTA yang setara dengan ukuran image.
Jumlahkan angka-angka itu dan batas atasnya akan cepat tercapai. Aplikasi 45 KB dengan TLS dan staging dual-bank membutuhkan lebih dari 128 KB sebelum ada data logging atau font sama sekali. Itulah sebabnya komponen 64 KB terasa memadai di bench lalu kehabisan ruang saat integrasi.
Aritmetika yang sama menjelaskan mengapa "cukup aktifkan TLS" adalah keputusan penyimpanan sama besarnya dengan keputusan keamanan. Cipher suite dan penyimpanan sertifikat tidak gratis.
4. Pekerjaan migrasi
| Item | Apa yang berubah |
|---|---|
| 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 |
Kesalahan paling umum adalah mengubah linker script dan lupa tabel partisi. Board lalu diprogram dengan benar tetapi pembaruan OTA menulis melewati wilayah staging, atau bootloader menolak image yang dianggap terlalu besar.
Ketahanan dan EEPROM teremulasi
Flash bukan EEPROM. Flash F103 memiliki rating untuk jumlah siklus hapus yang terbatas, biasanya dalam kisaran sepuluh ribu per halaman. Blok konfigurasi yang ditulis setiap kali daya dimatikan akan menghabiskan satu halaman jauh sebelum masa pakai produk berakhir.
EEPROM teremulasi mengatasi ini dengan dua teknik. Pertama, ia menulis ke lokasi baru alih-alih menimpa, sehingga keausan menyebar ke seluruh halaman atau blok. Kedua, ia menyimpan indeks kecil di RAM dan hanya menulis ulang indeks saat halaman penuh.
Kedua teknik mengonsumsi flash secara proporsional terhadap jumlah variabel dan kedalaman wear-leveling. Pada part 64 KB, ini bisa menjadi sebagian signifikan dari anggaran; pada CBT6, ruang ekstra membuat skema wear-leveling yang lebih dalam terjangkau.
Jika produk mencatat data secara terus-menerus, pertimbangkan FRAM eksternal atau SPI flash kecil daripada memakai flash internal MCU. Biayanya moderat dan peningkatan keandalannya besar.
Clock, wait state, dan performa yang dipersepsikan
Flash yang lebih besar tidak membuat MCU lebih cepat, tetapi dapat mengubah jumlah flash wait state yang digunakan kode saat berjalan. Pada 72 MHz, F103 memerlukan wait state pada kedua density; perbedaannya muncul ketika kode ditempatkan pada alamat yang berbeda atau ketika prefetch buffer berperilaku berbeda.
Untuk sebagian besar aplikasi, hal ini tidak terlihat. Untuk loop yang dihitung per siklus, antarmuka bit-banged, dan loop kontrol yang ketat, hal ini dapat berpengaruh, dan uji penerimaan harus mencakup jalur yang sensitif terhadap waktu, bukan hanya pemeriksaan fungsional.
Jika desain berjalan di bawah 48 MHz, wait state biasanya nol dan perbedaannya hilang sepenuhnya. Itu salah satu alasan banyak desain industri sengaja berjalan lebih lambat dari maksimum.
5. Ukuran flash saat runtime
F103 melaporkan ukuran flash-nya dalam register yang dapat dibaca firmware. Itu berguna untuk platform yang dikirim dengan part 64 KB atau 128 KB, dan itu juga jebakan: kode yang meng-hardcode jumlah halaman atau alamat sektor akan berperilaku salah pada density yang berbeda.
Jika produk dapat dikirim dengan kedua varian, baca ukurannya saat boot dan konfigurasikan lapisan penyimpanan berdasarkan ukuran itu. Jika produk dikirim dengan hanya satu varian, pastikan ukuran yang diharapkan dalam uji manufaktur agar reel yang salah tertangkap sebelum perakitan.
Opsi desain OTA
Empat pola umum digunakan, dan biaya flash-nya berbeda tajam.
Dual bank.Dua slot image penuh plus bootloader. Aman dan sederhana, tetapi membutuhkan dua kali ukuran image. Pada 128 KB, image 40 KB dengan staging dual-bank memakai 80 KB sebelum data.
Staging terkompresi.Image yang diunduh disimpan dalam keadaan terkompresi dan diekspansi di tempat saat boot. Menghemat ruang, menambah langkah dekompresi dan mode kegagalan jika dekompresor terinterupsi.
Staging eksternal.Image disimpan di SPI flash eksternal, dan MCU menyalinnya secara internal. Menambah satu komponen tetapi sepenuhnya menghilangkan batasan ruang internal.
Tanpa staging.Perangkat mengunduh dan menulis secara langsung, biasanya dengan bootloader pemulihan. Paling murah dalam hal flash, paling berisiko di lapangan.
Pola mana pun yang dipilih, tabel partisi harus ditetapkan sebelum firmware ditulis. Mengubahnya nanti membuat setiap perangkat di lapangan tidak valid.
Pemeriksaan kompatibilitas firmware
Empat pemeriksaan menangkap sebagian besar masalah migrasi sebelum mencapai lapangan.
ID perangkat.Kode startup firmware mungkin bercabang berdasarkan ID; tambahkan nilai baru secara eksplisit.
Register ukuran flash.Pastikan nilai yang diharapkan dalam uji manufaktur, sehingga reel dengan kepadatan salah ditolak pada saat pemrograman.
Offset tabel vektor.Jika bootloader memindahkan aplikasi, pastikan offset tersebut sesuai dengan tabel partisi baru.
Jumlah halaman emulasi EEPROM.Jumlah halaman yang dicadangkan untuk konfigurasi harus sesuai dengan tata letak baru, atau halaman terakhir akan tumpang tindih dengan aplikasi.
6. Sumber kedua pada 128 KB
| Keluarga | Flash | Catatan |
|---|---|---|
| GD32F103CBT6 | 128 KB | Pin compatible; different flash timing and higher clock capability |
Aturan yang sama dari artikel 64 KB berlaku: kompatibilitas pin bersifat mekanis, dan firmware harus divalidasi. Dengan flash yang lebih besar, muncul satu item tambahan — algoritma pemrograman flash dan granularitas penghapusan dapat berbeda, yang memengaruhi waktu produksi dan desain OTA.
Verifikasi juga jalur pemulihan. Jika bootloader mendukung DFU melalui USB atau UART, uji pemulihan dari image aplikasi yang rusak pada kepadatan baru, karena deskriptor DFU sering kali menyandikan ukuran image maksimum.
Akses debug tidak berubah, tetapi option bytes layak diperiksa: proteksi read-out, perilaku watchdog, dan konfigurasi pin boot disimpan di flash dan status defaultnya dapat berbeda antar lot. Konfirmasikan pada fixture, bukan di bench.
Pemrograman produksi dan ketertelusuran
Mengganti kepadatan mengubah image pemrograman dan, sering kali, fixture. Tiga item harus diverifikasi di lini produksi.
Ukuran image dan checksum.Programmer harus menerima image yang lebih besar, dan checksum yang disimpan di area bootloader harus cocok.
Verifikasi baca-balik.Verifikasi penuh setelah pemrograman langsung menangkap reel dengan densitas salah, bukan saat boot pertama.
Pencatatan ID unik.ID unik 96-bit mengaitkan perangkat dengan catatan produksi. Mencatatnya membuat retur lapangan dapat ditelusuri dan membantu mengidentifikasi lot yang buruk.
7. Rencana pengujian
| Langkah | Uji | Kriteria lulus |
|---|---|---|
| 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 |
Ketika 128 KB masih belum cukup
Jika image yang diproyeksikan berada di atas sekitar 100 KB, langkah berikutnya bukanlah varian F103 lain — melainkan keluarga yang berbeda. Cortex-M3 pada F103 dengan 72 MHz dan RAM 20 KB menjadi kendala lebih dulu sebelum flash.
Opsinya mencakup kelas 256 KB dalam keluarga yang sama, bagian Cortex-M4 dengan RAM lebih besar dan unit floating-point, atau QSPI flash eksternal dengan dukungan execute-in-place. Masing-masing adalah keputusan platform dengan biaya sertifikasi dan firmware tersendiri.
Aturan praktisnya: pilih kapasitas yang mencakup fitur dua tahun ke depan, bukan ukuran image saat ini. Kualifikasi ulang board yang sama dua kali lebih mahal daripada membeli bagian yang sedikit lebih besar sejak awal.
Kisah produk lima tahun
Pertimbangkan sebuah controller yang dirancang pada 2021 dengan image 40 KB pada C8T6. Pada 2023 image mencapai 58 KB setelah menambahkan antarmuka web. Pada 2024, TLS mendorongnya melewati 64 KB, dan tim mengompres font agar muat.
Pada 2025 area staging OTA tidak lagi muat. Perbaikan pada titik itu adalah revisi board, tata letak partisi baru, dan migrasi lapangan — semuanya dapat dihindari jika desain dimulai pada CBT6 dengan biaya beberapa sen lebih.
Itulah argumen untuk ruang cadangan: bukan bahwa flash tambahan akan langsung digunakan, tetapi bahwa biaya kehabisan ruang diukur dalam re-spin, bukan dalam sen.
8. Biaya dan perencanaan
Perbedaan harga antara C8T6 dan CBT6 kecil. Keputusan ini bukan tentang biaya per unit; melainkan tentang apakah tambahan 64 KB menghilangkan kebutuhan desain ulang di masa depan.
Tiga sinyal mendukung CBT6: image saat ini di atas 45 KB, roadmap mencakup network stack atau display, atau produk memiliki masa hidup multi-tahun. Dua sinyal mendukung tetap di 64 KB: image stabil dan kecil, dan volume cukup tinggi sehingga sen menjadi penting.
Jika image sudah mendekati 100 KB, langsung ke kelas 256 KB. Mengkualifikasi part 128 KB lalu berpindah lagi dalam setahun adalah jalur paling mahal.
Aturan keputusan untuk desain baru
Tuliskan tiga angka sebelum memilih: ukuran image saat ini, perkiraan ukuran dalam dua tahun, dan apakah OTA diperlukan. Jika jawaban untuk OTA adalah ya, tambahkan ukuran image lagi. Jika total proyeksi di atas 90 KB, mulai dari 128 KB atau lebih tinggi.
Untuk produk dengan fungsi tetap tanpa konektivitas dan tanpa OTA, 64 KB biasanya cukup dan C8T6 tetap menjadi pilihan yang lebih murah. Kesalahannya adalah mengasumsikan bahwa suatu produk akan tetap tidak berubah selama lima tahun.
9. FAQ
Apakah CBT6 kompatibel langsung sebagai pengganti C8T6?
Secara fisik dan fungsional ya. Firmware perlu memperbarui linker script dan tabel partisi untuk flash yang lebih besar.
Apakah RAM bertambah?
Tidak. Kedua komponen memiliki 20 KB. Jika RAM menjadi kendala, komponen dengan flash lebih besar tidak akan membantu.
Bisakah saya kembali ke C8T6 nanti?
Hanya jika image muat dalam 64 KB. Rencanakan tabel partisi agar downgrade dapat dilakukan tanpa perubahan kode.
Apakah sumber alternatif memiliki register ukuran flash yang sama?
Biasanya ada register yang kompatibel, tetapi nilainya dan granularitasnya dapat berbeda. Baca datasheet untuk part yang tepat.
Apa bug migrasi yang paling umum?
Memperbarui linker script tetapi tidak memperbarui tabel partisi OTA, yang menghasilkan update yang menulis di luar area staging.
Apakah saya harus memesan CBT6 untuk desain baru?
Jika image firmware di bawah 32 KB dan stabil, C8T6 cukup. Jika ada kemungkinan pertumbuhan — antarmuka web, TLS, logging, atau OTA — mulailah dari 128 KB dan hindari siklus desain kedua.
Catatan pasokan
Ketersediaan pada kepadatan ini lebih baik daripada pada 32 KB, karena lebih banyak desain menggunakannya. Pertahankan satu sumber kedua yang disetujui dan pastikan algoritma pemrograman flash-nya cocok dengan fixture produksi Anda; image-nya sama, tetapi tooling-nya mungkin tidak. Periksa sebelum Anda melakukan pemesanan.
10. Sumber
- Halaman produk ST STM32F103CB:st.com
- Dokumentasi GigaDevice GD32F103:gigadevice.com
Tentang penulis— Diterbitkan oleh Tim Intelijen Rantai Pasok Chip-Seek. Kami memantau ketersediaan komponen, substitusi, dan risiko kualifikasi untuk insinyur perangkat keras dan tim pengadaan. Bacaproses kualitas dan ketertelusuran.
Butuh lebih banyak headroom flash?
Beri tahu kami part saat ini dan ukuran image. Kami akan memberikan penawaran untuk varian 64 KB dan 128 KB dari stok agar Anda dapat membandingkannya pada board yang sama.