STM32F103RBT6 ถึง RET6: คู่มือการย้ายความหนาแน่นของแฟลช
STM32F103RCT6 และรุ่นพี่น้อง RBT6 กับ RET6 ใช้ฟุตพรินต์ 64 พินแบบ LQFP และคอร์ Cortex-M3 เดียวกัน ซึ่งเป็นเหตุผลว่าทำไมการอัปเกรดแฟลชในตระกูลนี้จึงมักถูกมองว่าเป็นการเปลี่ยนแทนได้ทันที ทั้งที่ไม่ใช่เช่นนั้น ความเข้ากันได้ของพินเป็นเรื่องทางกล แต่ขนาดหน้า Erase ของแฟลช SRAM และสมมติฐานของบูตโหลดเดอร์ไม่ได้รับประกันจากฟุตพรินต์ และคู่มือการโปรแกรมของ ST เองก็ระบุความแตกต่างนี้ไว้โดยตรง
1 ระหว่าง RBT6, RCT6 และ RET6 มีอะไรเปลี่ยนแปลงจริงบ้าง
ชิปทั้งสามเป็นไมโครคอนโทรลเลอร์สายประสิทธิภาพ STM32F103 ที่ใช้คอร์ Arm Cortex-M3 72 MHz เดียวกัน ชุดอุปกรณ์ต่อพ่วงเดียวกัน และแพ็กเกจ LQFP64 เดียวกัน โดยมีตัวถังขนาด 10 × 10 × 1.4 mm ตัวอักษรหลัง “F103” ร่วมกับตัวเลขเป็นตัวเข้ารหัสขนาดแฟลช: RBT6 มาพร้อมแฟลช 128 Kbytes และ 20 Kbytes ของ SRAM, RCT6 มาพร้อมแฟลช 256 Kbytes และ 48 Kbytes ของ SRAM, ส่วน RET6 มาพร้อมแฟลช 512 Kbytes และ 64 Kbyte ของ SRAM ได้สูงสุด ไม่มีสิ่งใดในซิลิคอนที่เปลี่ยนจำนวนพิน การกำหนดพิน หรืออุปกรณ์ต่อพ่วงหลัก มีเพียงปริมาณหน่วยความจำบนไดเท่านั้นที่เปลี่ยนแปลง
การมีฟุตพรินต์เหมือนกันแต่หน่วยความจำเพิ่มขึ้น ทำให้กรณีนี้เป็น “การอัปเกรดความจุ” อย่างแท้จริง ไม่ใช่การเปลี่ยนไปใช้ผลิตภัณฑ์จากผู้ผลิตรายอื่น ไม่มีการออกแบบบอร์ดใหม่ ไม่มีแพตเทิร์นแลนด์ใหม่ และไม่มีการเปลี่ยนแปลงที่ SWD หรือเฮดเดอร์ดีบัก JTAG งานที่เหลือทั้งหมดอยู่ในเฟิร์มแวร์ ได้แก่การยืนยันว่าไม่มีสิ่งใดในบิลด์ ลิงเกอร์สคริปต์ หรือไดรเวอร์แฟลชที่สมมติรูปแบบหน่วยความจำของชิปขนาดเล็กกว่า
ดาต้าชีตความหนาแน่นสูงของ ST (DS5792 ซึ่งครอบคลุมชิป 256 ถึง 512 Kbyte) และดาต้าชีตความหนาแน่นระดับกลางต่างอ้างอิงคำอธิบายตระกูลสายประสิทธิภาพเดียวกัน และดาต้าชีตเชิงพาณิชย์ STM32F103x8/B ระบุว่าตระกูลนี้ออกแบบมาให้เข้ากันได้เต็มรูปแบบทั้งแบบพินต่อพิน ซอฟต์แวร์ และฟีเจอร์ ข้อความดังกล่าวกล่าวถึงความสัมพันธ์ภายในตระกูล ไม่ใช่สิ่งทดแทนการตรวจสอบแผนผังหน่วยความจำเฉพาะของชิปเป้าหมาย
2 ผังพินเหมือนกันจริงหรือไม่
ในทางกลไก ใช่ สำหรับชิปสามรุ่นนี้โดยเฉพาะ RBT6, RCT6 และ RET6 ต่างระบุแพ็กเกจ LQFP 64, ขนาด 10 × 10 × 1.4 mm ในหน้าข้อมูลการสั่งซื้อของ ST โดยมีพิน I/O อเนกประสงค์ 51 พินในรูปแบบดังกล่าว นอกจากนี้ยังมีหมายเลขชิปรุ่นเดียวกันในแพ็กเกจอื่นด้วย (เช่น RBT6 เพิ่มตัวเลือก TFBGA64) ดังนั้นต้องตรวจสอบส่วนต่อท้ายแพ็กเกจและรหัสการสั่งซื้อที่แน่นอนเป็นรายรายการ การกล่าวว่า “จำนวนพินเท่ากัน” ไม่เท่ากับการยืนยันว่าฟุตพรินต์ตรงกันสำหรับชิ้นส่วนที่สั่งซื้อได้และกำลังใช้งานอยู่
| ชิ้นส่วน | แฟลช | SRAM | คลาสความหนาแน่น | มี LQFP64 ให้เลือก |
|---|---|---|---|---|
| STM32F103RBT6 | 128 KB | 20 KB | Medium-density | Yes |
| STM32F103RCT6 | 256 KB | 48 KB | High-density | Yes |
| STM32F103RET6 | 512 KB | 64 KB | High-density | Yes |
ก่อนตัดสินใจปรับปรุงบอร์ดไม่ว่าทางใด ให้เปิดตารางข้อมูลอุปกรณ์ในดาต้าชีตปัจจุบันสำหรับรหัสการสั่งซื้อที่จัดหาอยู่โดยเฉพาะ แค็ตตาล็อกของ ST เช่นเดียวกับผู้ผลิตส่วนใหญ่ อาจเพิ่มหรือยกเลิกตัวเลือกแพ็กเกจเฉพาะหมายเลขชิปเป็นระยะ และส่วนต่อท้ายของรหัสการสั่งซื้อ (“T6” ในที่นี้ รวมถึงตัวอักษรแพ็กเกจหรืออุณหภูมิที่ตามมา) คือสิ่งที่ตัวแทนจำหน่ายใช้ระบุสินค้าที่มีการจัดเก็บ
3 เหตุใด ST จึงจัดชิปเหล่านี้เป็นคลาส “ความหนาแน่น” ที่แตกต่างกัน
คู่มืออ้างอิง STM32F10xxx ของ ST (RM0008) และคู่มือการโปรแกรมแฟลช (PM0075) แบ่งตระกูล STM32F101/F102/F103 เป็นคลาสความหนาแน่นต่ำ (16 ถึง 32 Kbytes ของแฟลช) ความหนาแน่นระดับกลาง (64 ถึง 128 Kbytes) ความหนาแน่นสูง (256 ถึง 512 Kbytes) และคลาส XL-density RBT6 อยู่ในระดับความหนาแน่นกลาง ส่วน RCT6 และ RET6 อยู่ในระดับความหนาแน่นสูง นี่ไม่ใช่คำเรียกทางการตลาด แต่คลาสความหนาแน่นเป็นตัวกำหนดโครงสร้างอาร์เรย์แฟลชภายใน ซึ่งเป็นรายละเอียดที่มีผลต่อเฟิร์มแวร์
โดยเฉพาะอย่างยิ่ง PM0075 ระบุว่าบล็อกหน่วยความจำแฟลชหลักจัดเป็น 32 หน้าขนาด 1 Kbyte สำหรับอุปกรณ์ความหนาแน่นต่ำ 128 หน้าขนาด 1 Kbyte สำหรับอุปกรณ์ความหนาแน่นระดับกลาง และ 256 หน้าขนาด 2 Kbytes สำหรับอุปกรณ์ความหนาแน่นสูง ความละเอียดในการลบ ซึ่งเป็นบล็อกที่เล็กที่สุดที่ตัวควบคุมแฟลชสามารถลบได้ในการทำงานหนึ่งครั้ง ขึ้นอยู่กับคลาสความหนาแน่น ไม่ใช่การเป็นสมาชิกของตระกูลที่ใช้พินร่วมกันได้
4 หน้า Erase ของแฟลชคืออะไร และเหตุใดขนาดจึงสำคัญ
แฟลชบนชิปไม่สามารถเขียนทับทีละไบต์แบบที่ RAM ทำได้ เมื่อเปลี่ยนบิตที่โปรแกรมไว้แล้วจาก 0 กลับเป็น 1 ตัวควบคุมแฟลชต้องลบทั้งหน้าก่อน จากนั้นจึงโปรแกรมข้อมูลใหม่ลงไปได้ ดังนั้นหน้าจึงเป็นหน่วยอะตอมิกสำหรับการอัปเดตภาคสนามทุกประเภท ไม่ว่าจะเป็นบูตโหลดเดอร์ที่เขียนอิมเมจแอปพลิเคชันใหม่ การเขียนบล็อกการตั้งค่าใหม่ หรือการอัปเดตผ่านอากาศที่เตรียมเฟิร์มแวร์เวอร์ชันใหม่
การออกแบบที่สร้างขึ้นรอบ RBT6 ซึ่งลบแฟลชเป็นหน่วยขนาด 1 Kbyte และจัดเก็บบล็อกข้อมูลอิสระสองบล็อกห่างกัน 1 Kbyte เนื่องจากเป็นขอบเขตการลบที่ปลอดภัยสำหรับชิปนั้น กำลังพึ่งพาคุณสมบัติของอาร์เรย์แฟลชความหนาแน่นระดับกลาง เมื่อนำเฟิร์มแวร์เดิมไปใช้กับ RCT6 โดยไม่ตรวจสอบใหม่ คำสั่งลบจะล้างข้อมูลครั้งละ 2 Kbytes: บล็อกข้อมูลที่สองซึ่งเฟิร์มแวร์ยังเชื่อว่าแยกออกจากกัน จะอยู่ภายในหน้าที่เพิ่งถูกลบพร้อมกับบล็อกแรก
ความล้มเหลวนี้อาจไม่ดูเหมือนปัญหาแฟลชในตอนแรก แต่จะแสดงเป็นการตั้งค่าที่กลับไปเป็นค่าเดิมอย่างเงียบ ๆ พาร์ติชันแอปพลิเคชันเสียหายหลังการอัปเดต หรืออิมเมจ OTA ที่บูตได้ครั้งหนึ่งแล้วล้มเหลวหลังรอบการเขียนครั้งถัดไป เนื่องจากอาการปรากฏระหว่างการใช้งาน ไม่ใช่ระหว่างการแฟลช จึงง่ายที่จะเสียเวลาไล่ตรวจจังหวะเวลา แหล่งจ่ายไฟ หรืออินเทอร์รัพท์ ก่อนตรวจพบสาเหตุจริง ซึ่งคือสมมติฐานเกี่ยวกับขนาดหน้า
5 ขนาดหน้าที่กำหนดตายตัวจะทำให้บูตโหลดเดอร์ทำงานผิดพลาดที่ใด
บิลด์เฟิร์มแวร์ทั่วไปมีสามจุดที่เข้ารหัสสมมติฐานเกี่ยวกับขนาดหน้า erase และทั้งสามจุดต้องตรวจสอบเมื่อเปลี่ยนระหว่างคลาสความหนาแน่น:
- คำจำกัดความภูมิภาคแฟลชในสคริปต์ลิงเกอร์ การแบ่งบูตโหลดเดอร์/แอปพลิเคชันแบบกำหนดเองมักจัดแนวภูมิภาคตามขอบเขตหน้า erase ที่ใช้ระหว่างการพัฒนา หากเลือกขอบเขตนั้นเป็น 1 Kbyte บน RBT6 ภูมิภาคเหล่านั้นยังคงเป็นแอดเดรสที่ถูกต้องบน RCT6 แต่จะไม่จัดแนวตรงกับขอบเขต erase จริงของชิ้นส่วนที่เป็น 2 Kbyte อีกต่อไป ซึ่งอาจทำให้บางหน้าเหลื่อมคร่อมภูมิภาคแอปพลิเคชันและบูตโหลดเดอร์ระหว่างการอัปเดต
- รูทีน erase ของไดรเวอร์แฟลช ทั้ง ST's HAL และไลบรารี peripheral มาตรฐานต่างเปิดฟังก์ชัน erase แฟลชที่รับแอดเดรสของหน้า แต่ค่าคงที่ขนาดหน้าที่ใช้คำนวณจำนวนครั้งที่ต้องเรียก erase หรือระบุตำแหน่งเริ่มต้นของหน้าถัดไป บางครั้งถูกกำหนดไว้เฉพาะในโค้ดแอปพลิเคชัน แทนที่จะอ่านจากโครงสร้างหน่วยความจำของชิ้นส่วนเอง
- ไลบรารี OTA หรือไลบรารีจัดเก็บการตั้งค่าที่นำเข้าจากภายนอก HAL ไลบรารีจัดเก็บข้อมูลบนแฟลชจากบุคคลที่สามมักตั้งค่าเริ่มต้นเป็นขนาดหน้าที่กำหนดได้ ซึ่งต้องตั้งค่าแยกตามเป้าหมาย; การปล่อยค่าเริ่มต้น 1 Kbyte ไว้โดยไม่รู้ตัวขณะจัดหาซิลิคอน RCT6 จะทำให้เกิดความเสี่ยงต่อข้อมูลเสียหายแบบเดียวกัน โดยไม่มีอาการผิดปกติในระดับลิงเกอร์
วิธีแก้ในทางปฏิบัติสำหรับทั้งสามกรณีเหมือนกัน: ค้นหาการอ้างอิงทุกจุดถึงขนาดหน้า erase ในบิลด์ ยืนยันว่าค่านี้อ่านมาจาก (หรือจับคู่โดยตรงกับ) โครงสร้างจริงของชิ้นส่วนเป้าหมายตามดาตาชีตปัจจุบันและ PM0075 จากนั้นรันรอบ erase/program/verify แบบเต็มกับช่วงแอดเดรสที่เป็นตัวแทน ไม่ใช่เฉพาะแอดเดรสที่ใช้ระหว่างการนำระบบขึ้นครั้งแรก
6 นอกจากแฟลชแล้วมีอะไรเปลี่ยนแปลงบ้าง?
SRAM เปลี่ยนไปในทิศทางเดียวกับแฟลชแต่เพิ่มขึ้นในสัดส่วนที่มากกว่า: 20 KB บน RBT6 เทียบกับ 48 KB บน RCT6 มากกว่าสองเท่า และ 64 KB บน RET6 มากกว่าสามเท่า การออกแบบที่มีพื้นที่เหลือจำกัดใน RAM บนชิ้นส่วนขนาดเล็กกว่าจะมีเผื่อเพิ่มขึ้นอย่างมีนัยสำคัญสำหรับบัฟเฟอร์ที่ใหญ่ขึ้น ฮีปที่ใหญ่ขึ้น หรืองาน RTOS เพิ่มเติม ส่วนการออกแบบที่จัดสรร RAM ไว้อย่างพอดีสำหรับ RBT6's 20 KB ควรตรวจสอบอีกครั้งว่าการจัดสรรแบบคงที่ ขนาดสแตก และสัญลักษณ์ลิงเกอร์ยังสมเหตุสมผลหรือไม่; การเปลี่ยนไปใช้ชิ้นส่วนที่มี RAM มากขึ้นไม่ได้บังคับให้ต้องใช้ทั้งหมด แต่โค้ดใดก็ตามที่คำนวณแอดเดรสโดยอ้างอิงขนาด RAM ที่เล็กกว่าและคงที่ควรได้รับการตรวจสอบเช่นเดียวกับสมมติฐานเกี่ยวกับแฟลช
คอร์ โครงสร้างสัญญาณนาฬิกา โครงสร้าง GPIO และ peripheral การสื่อสาร (I2C, SPI, I2S, USART, USB, CAN) ไม่เปลี่ยนแปลงระหว่างชิ้นส่วนทั้งสามนี้ ข้อมูลจำเพาะทางไฟฟ้า ช่วงแรงดันใช้งาน และไทมิงของ peripheral เหล่านี้กำหนดโดยการออกแบบตระกูล performance-line ไม่ใช่ความหนาแน่นของหน่วยความจำ ดังนั้นไม่จำเป็นต้องทำ qualification ระดับ peripheral ซ้ำเพียงเพราะอัปเกรดแฟลช
7 ต้องตรวจสอบอะไรบ้างก่อนอัปเกรดชิ้นส่วน?
การอัปเกรดความหนาแน่นของตระกูลนี้จะปลอดภัยเมื่อรายการห้าข้อได้รับการตรวจสอบกับดาตาชีตปัจจุบันและคู่มือการโปรแกรมแฟลชของชิ้นส่วนเป้าหมายโดยเฉพาะ ไม่ใช่สันนิษฐานจากความเข้ากันได้ของขาเพียงอย่างเดียว
- รหัสแพ็กเกจที่สั่งซื้อได้ ยืนยันว่ารหัสสั่งซื้อ LQFP64 ที่ถูกต้องสำหรับความหนาแน่นเป้าหมายเป็นข้อมูลปัจจุบันและมีจากแหล่งที่ต้องการ; ตัวเลือกแพ็กเกจอาจแตกต่างกันตลอดช่วงความหนาแน่นสำหรับผู้ผลิตรายหนึ่ง
- ขนาดหน้า erase ของแฟลช ยืนยันว่าบูตโหลดเดอร์ ไลบรารี OTA หรือพื้นที่จัดเก็บการตั้งค่ามีการสมมติขนาดหน้าคงที่หรือไม่ และปรับค่าคงที่นั้นให้ตรงกับคลาสความหนาแน่นของชิ้นส่วนเป้าหมาย (1 Kbyte สำหรับความหนาแน่นระดับกลาง, 2 Kbyte สำหรับความหนาแน่นระดับสูง)
- การจัดแนวภูมิภาคในสคริปต์ลิงเกอร์ ตรวจสอบอีกครั้งว่าภูมิภาคแอปพลิเคชันและบูตโหลดเดอร์จัดแนวตามขอบเขตหน้า erase ใหม่ ไม่ใช่เพียงเป็นแอดเดรสแฟลชที่ถูกต้อง
- การระบุแอดเดรสสัมพันธ์กับ RAM ตรวจสอบโค้ดใดก็ตามที่คำนวณตำแหน่งบัฟเฟอร์หรือขีดจำกัดสแตกโดยอ้างอิงขนาด SRAM เฉพาะ แทนการใช้สัญลักษณ์ลิงเกอร์ของทูลเชน
- การทดสอบ erase/program/verify แบบเต็ม รันเส้นทางการอัปเดตทั้งหมด รวมถึงการจำลองการเขียนที่ถูกขัดจังหวะ หากแอปพลิเคชันรองรับการอัปเดตแบบป้องกันความเสียหาย ก่อนรับรองชิ้นส่วนใหม่สำหรับการผลิต
บันทึกว่าบิลด์เฟิร์มแวร์แต่ละรายการกำหนดเป้าหมายเป็นชิ้นส่วนใดโดยเฉพาะ (RBT6, RCT6 หรือ RET6) และหลีกเลี่ยงการจัดส่งไบนารีเดียวข้ามคลาสความหนาแน่น หากไม่มีการตรวจสอบขนาดหน้าอย่างชัดเจนภายในไดรเวอร์แฟลชเอง
8 มีทางเลือกที่ใช้ขาร่วมกันได้นอกตระกูล ST หรือไม่?
มีชิ้นส่วนที่รองรับการจัดหาจากผู้ผลิตรายที่สองซึ่งเข้ากันได้กับ STM32F103 และโดยทั่วไปจำหน่ายโดยใช้การจัดเรียงขา LQFP64 เดียวกันสำหรับความหนาแน่นเทียบเท่า ตามแนวทางเดียวกับคู่มืออ้างอิงข้าม STM32F103C8T6 ก่อนหน้านี้บนเว็บไซต์นี้ ข้อควรระวังเหมือนเดิม: ความเข้ากันได้ของขาเป็นข้ออ้างด้านกลไกเกี่ยวกับแพ็กเกจ และไม่ได้ยืนยันด้วยตัวมันเองว่าคอนโทรลเลอร์แฟลช ขนาดหน้า erase หรือไทมิงการโปรแกรมแฟลชจะเหมือนกัน ยืนยันคู่มือการโปรแกรมของผู้ผลิตรายนั้นเองเกี่ยวกับขนาดหน้า erase และการกำหนดค่ารอบการเข้าถึงแฟลช ก่อนสันนิษฐานว่าชิ้นส่วนจากผู้ผลิตรายที่สองทำงานเหมือนชิ้นส่วนต้นฉบับ ST ในระดับเฟิร์มแวร์
9 ควรระบุอะไรในคำขอจัดหา?
เมื่อจัดหาชิ้นส่วนที่อัปเกรดความหนาแน่น คำขอที่ระบุชิ้นส่วนเป้าหมายอย่างถูกต้องจะได้รับคำตอบที่ใช้งานได้เร็วกว่าคำขอที่ระบุเพียงขนาดแฟลช ซัพพลายเออร์สามารถยืนยันสินค้าคงคลังจากรหัสสั่งซื้อแบบเต็มได้ แต่ "256 KB STM32F103" แบบสั้นไม่ได้ระบุแพ็กเกจ เกรดอุณหภูมิ หรือ suffix ที่ถูกต้อง
ข้อมูลที่มีประโยชน์ได้แก่ หมายเลขชิ้นส่วนที่สั่งซื้อได้แบบเต็ม (รวม suffix ของแพ็กเกจและอุณหภูมิ) ปริมาณต่อบิลด์พร้อมปริมาณการใช้งานรายปี การออกแบบกำลังเปลี่ยนจากชิ้นส่วนขนาดเล็กเฉพาะรุ่นใด (ระบุหมายเลขชิ้นส่วนต้นทางที่แน่นอน) และรูทีน erase แฟลชของเฟิร์มแวร์ปัจจุบันได้รับการอัปเดตสำหรับคลาสความหนาแน่นเป้าหมายแล้วหรือไม่ หากมีเพียงความหนาแน่นเป้าหมายที่สำคัญและใช้ RCT6 หรือ RET6 ก็ได้ ให้ระบุเช่นนั้น; หากต้องการขนาด RAM เฉพาะ ให้ระบุแทนการขอ "ขนาดใหญ่ที่สุดที่มี"
สำหรับความพร้อมจำหน่ายปัจจุบันของตระกูลนี้ ให้ค้นหา รายการ STM32F103RCT6รายการ รายการ STM32F103RBT6 และ รายการ STM32F103RET6 บน chip-seek.com หน้าเหล่านี้แสดงผลแค็ตตาล็อกแบบเรียลไทม์ ไม่ใช่การยืนยันว่ามีสินค้าในสต็อก โปรดยืนยันจำนวนและรหัสวันที่กับใบเสนอราคา คู่มืออ้างอิงโยงก่อนหน้านี้ คู่มืออ้างอิงข้าม STM32F103C8T6 และ คู่มือ STM32F103CBT6 ครอบคลุมสมาชิก LQFP48 รุ่นเล็กกว่าของตระกูลเดียวกัน สำหรับโครงการที่ยังไม่ได้เลือกฟุตพรินต์ 64 พิน สามารถส่งคำขอจัดหาหลายรายการผ่าน ฟอร์ม BOM และ RFQ.
คำถามที่พบบ่อย
ฉันสามารถใช้ไบนารีเฟิร์มแวร์เดียวกันกับ RBT6 และ RCT6 ได้โดยไม่ต้องแก้ไขหรือไม่ ได้ก็ต่อเมื่อเฟิร์มแวร์อ่านโครงสร้างหน่วยความจำแฟลชจากคำจำกัดความของชิปนั้นเอง แทนการกำหนดขนาดเพจแบบฮาร์ดโค้ด เฟิร์มแวร์เริ่มต้นระบบส่วนใหญ่ที่เขียนสำหรับเป้าหมายเดียวจะกำหนดค่าเช่นนี้ไว้ตายตัว จึงควรตรวจสอบไดรเวอร์แฟลชและสคริปต์ลิงเกอร์ก่อนนำไบนารีกลับมาใช้
ฟุตพรินต์ LQFP64 เหมือนกันจริงหรือไม่ใน RBT6, RCT6 และ RET6 ใช่ สำหรับแพ็กเกจ LQFP 64, 10 × 10 × 1.4 mm ที่ระบุไว้ในข้อมูลการสั่งซื้อ ST ปัจจุบันของแต่ละชิ้นส่วน โปรดยืนยันรหัสสินค้าที่สั่งซื้อได้เฉพาะสำหรับชิ้นส่วนเป้าหมาย เนื่องจากความพร้อมจำหน่ายของแพ็กเกจอาจเปลี่ยนแปลงได้ตลอดอายุผลิตภัณฑ์
medium-density และ high-density ในคำศัพท์ของ ST แตกต่างกันอย่างไร เป็นประเภทความจุแฟลชที่กำหนดไว้ในคู่มืออ้างอิง RM0008 ของ ST: medium-density ครอบคลุมแฟลชขนาด 64 ถึง 128 Kbyte ส่วน high-density ครอบคลุม 256 ถึง 512 Kbyte ประเภทนี้กำหนดโครงสร้างภายในของอาร์เรย์แฟลช รวมถึงขนาดเพจสำหรับการลบ
การมี SRAM มากขึ้นจำเป็นต้องแก้ไขเฟิร์มแวร์เองหรือไม่ ไม่จำเป็น RAM ที่ไม่ได้ใช้ไม่จำเป็นต้องนำมาใช้ การตรวจสอบจำเป็นเฉพาะกับโค้ดที่คำนวณแอดเดรสหรือขีดจำกัดโดยอ้างอิงขนาดคงที่ RAM ของชิ้นส่วนขนาดเล็กกว่า แทนการใช้สัญลักษณ์ที่ลิงเกอร์จัดให้
ADC, ไทเมอร์, อุปกรณ์ต่อพ่วง USB และ CAN เปลี่ยนแปลงระหว่างชิ้นส่วนทั้งสามนี้หรือไม่ ไม่เปลี่ยน ชุดอุปกรณ์ต่อพ่วงหลัก ข้อมูลจำเพาะทางไฟฟ้า และต้นไม้นาฬิกาถูกกำหนดโดยการออกแบบตระกูล performance-line และไม่เปลี่ยนตามความหนาแน่นของหน่วยความจำในชิ้นส่วนทั้งสามนี้
จะเกิดอะไรขึ้นหากเฟิร์มแวร์ที่ใช้งานจริงกำหนดขนาดเพจลบไม่ถูกต้อง ข้อมูลที่อยู่ติดกันภายในเพจลบทางกายภาพเดียวกันอาจถูกลบโดยไม่ตั้งใจเมื่อมีการลบพื้นที่หนึ่ง ซึ่งโดยทั่วไปจะแสดงเป็นการตั้งค่าที่เสียหายหรือการอัปเดตล้มเหลว แทนที่จะเป็นข้อผิดพลาดในการโปรแกรมทันที
แหล่งข้อมูล
- ภาพปก: Raimond Spekking, ภาพถ่ายแพ็กเกจ STMicroelectronics STM32F107RBT6 LQFP64, CC BY-SA 4.0. Chip-seek ครอบตัดและจัดวางภาพปกภายใต้สัญญาอนุญาตเดียวกัน ภาพถ่ายนี้แสดงตระกูลแพ็กเกจ LQFP64 เดียวกัน และไม่ใช่ภาพถ่ายของ STM32F103RBT6, RCT6 หรือ RET6 โดยเฉพาะ และไม่ใช่หลักฐานสินค้าคงคลัง
- หน้าผลิตภัณฑ์ ST STM32F103RB: ขนาดแฟลช, SRAM, ตัวเลือกแพ็กเกจ และข้อมูลการสั่งซื้อ
- แผ่นข้อมูล ST STM32F103RC/RD/RE, DS5792: คำอธิบายตระกูล performance-line ความหนาแน่นสูง ความจุแฟลชและ SRAM และข้อมูลแพ็กเกจ
- หน้าผลิตภัณฑ์ ST STM32F103RE: ขนาดแฟลช การยืนยันแพ็กเกจ SRAM และ LQFP64
- คู่มือการโปรแกรมไมโครคอนโทรลเลอร์หน่วยความจำแฟลช ST PM0075, STM32F10xxx: โครงสร้างโมดูลแฟลช ขนาดเพจตามประเภทความหนาแน่น และคำจำกัดความของ low/medium/high-density
- แผ่นข้อมูล ST STM32F103x8/B: ข้อความระบุความเข้ากันได้ของตระกูล performance-line ในด้านการจัดขาพิน ซอฟต์แวร์ และคุณสมบัติ
ต้องการความช่วยเหลือในการจัดหาชิ้นส่วนที่มีความหนาแน่นเหมาะสมหรือไม่
ส่งหมายเลขชิ้นส่วนต้นทาง (หากย้ายจากความหนาแน่นที่ต่ำกว่า) ขนาดแฟลชเป้าหมาย และส่วนต่อท้ายแพ็กเกจที่แน่นอน ขอให้ยืนยันจำนวน ล็อต/รหัสวันที่ และผู้ถือครองสินค้าคงคลังก่อนอนุมัติ คู่มือนี้ไม่ได้ตรวจสอบสต็อกปัจจุบัน ผลการค้นหาในแค็ตตาล็อกเพียงอย่างเดียวไม่ยืนยันสินค้าคงคลังที่ถือครองเองหรือความเข้ากันได้ของเฟิร์มแวร์
กำลังทำงานกับตระกูล 48 พินแทนใช่หรือไม่ ดู คู่มือเทียบรุ่น STM32F103C8T6 ซึ่งครอบคลุมแพ็กเกจ LQFP48 ที่มีขนาดเล็กกว่า