รู้จัก STM32F4: เมื่อ Cortex-M3 ได้รับการอัปเกรด "สมองซีกคำนวณ" (DSP & FPU)
บทนำ: ไมโครคอนโทรลเลอร์ติดเทอร์โบ
ยินดีต้อนรับสู่ก้าวแรกของการเจาะลึก STM32F4 ครับ ในฐานะ Technical Writer ผมขอสรุปเนื้อหาจาก Datasheet หนาเตอะ ให้เป็นบทความที่เข้าใจง่าย เพื่อปูพื้นฐานว่าทำไมเราถึงเลือกใช้ชิปตัวนี้ และ “สมอง” ของมันที่ชื่อว่า ARM Cortex-M4 นั้นเก่งกว่ารุ่นพี่อย่าง Cortex-M3 (ที่อยู่ใน STM32F1 ยอดฮิต) อย่างไรครับ
ระดับความยาก: ⭐ พื้นฐาน-ปานกลาง เวลาที่ใช้: ~10 นาที (อ่านทำความเข้าใจ)
เปรียบเทียบง่ายๆ หาก STM32F1 (Cortex-M3) เป็นรถเก๋งที่ขับขี่ใช้งานทั่วไปได้ดีเยี่ยม STM32F4 (Cortex-M4) ก็คือรถเก๋งคันเดิมที่ถูกนำไป “ติดเทอร์โบ” และ “จูนกล่อง ECU แต่ง” เพิ่มเข้าไปครับ
โครงสร้างพื้นฐานและการขับขี่ (การเขียนโปรแกรม) นั้นคล้ายคลึงกันมาก แต่เมื่อไหร่ที่คุณจำเป็นต้องเหยียบคันเร่งเพื่อแซง (ต้องการการคำนวณคณิตศาสตร์ที่ซับซ้อน) เจ้า F4 จะทิ้งห่างแบบไม่เห็นฝุ่น บทความนี้จะพาไปดูว่าไอ้เจ้า “เทอร์โบ” ที่ว่านั้น ในทางเทคนิคคืออะไรกันแน่
เจาะลึกสถาปัตยกรรม (Architecture Deep Dive)
รากฐานที่เหมือนกัน: Harvard Architecture
ทั้ง Cortex-M3 และ M4 ใช้สถาปัตยกรรมแบบ Harvard ครับ ซึ่งต่างจากคอมพิวเตอร์ทั่วไป (Von Neumann) ตรงที่:
- ทางด่วนแยกสาย: มีถนน (Bus) แยกกันชัดเจนระหว่าง “คำสั่ง” (Instruction Bus) และ “ข้อมูล” (Data Bus) ทำให้ CPU สามารถดึงคำสั่งถัดไปมารอ และโหลดข้อมูลที่ต้องใช้ได้พร้อมๆ กันในรอบสัญญาณนาฬิกา (Clock Cycle) เดียว ไม่ต้องรอคิวกัน
- Pipeline 3 ขั้นตอน: ทำงานแบบ Fetch (ไปหยิบมา) -> Decode (แปลความหมาย) -> Execute (ลงมือทำ) ช่วยให้การประมวลผลลื่นไหลต่อเนื่อง
จุดต่างสำคัญ: Cortex-M4 มีอะไรที่ M3 ไม่มี?
Cortex-M4 ถูกออกแบบมาให้เป็น “Digital Signal Controller” คือการรวมความง่ายในการใช้งานของ Microcontroller เข้ากับพลังการคำนวณของ DSP (Digital Signal Processor)
| คุณสมบัติ | Cortex-M3 (STM32F1) | Cortex-M4 (STM32F4) | ประโยชน์ในงานจริง |
|---|---|---|---|
| Instruction Set | Thumb-2 | Thumb-2 + DSP + SIMD | F4 เขียนโค้ดประมวลผลสัญญาณ (Filter, Audio) ได้เร็วกว่ามาก |
| Floating Point | Software (ช้า) | Hardware FPU (เร็ว) | F4 คำนวณทศนิยม (float) ได้ใน 1-3 cycle ไม่หน่วง CPU |
| MAC Instruction | 32-bit result | Single Cycle MAC | จำเป็นมากสำหรับการทำ Digital Filter (เอาค่ามาคูณแล้วบวกสะสมอย่างรวดเร็ว) |
| Performance | ~1.25 DMIPS/MHz | ~1.25 DMIPS/MHz | หมายเหตุ: ประสิทธิภาพต่อ MHz พอๆ กัน แต่ F4 มักจะวิ่งที่ Clock Speed สูงกว่ามาก (เช่น 168MHz vs 72MHz) |
เจาะฟีเจอร์เด็ด (Key Features Highlights)
1. FPU: หน่วยประมวลผลทศนิยม (พระเอกของงาน)
นี่คือจุดเปลี่ยนสำคัญครับ ใน Cortex-M3 หากคุณเขียนโค้ดภาษา C เช่น float a = 3.14 * 2.5; ตัว Compiler จะต้องแปลงโค้ดบรรทัดนี้เป็นชุดคำสั่ง Assembly จำนวนมากเพื่อจำลองการคูณทศนิยมด้วย Software Library ซึ่งกินเวลาหลาย Cycle มากๆ
แต่ใน STM32F4 มีฮาร์ดแวร์เฉพาะทางที่เรียกว่า FPU (Floating Point Unit - Single Precision) ใส่มาให้เลย การคูณทศนิยมจึงใช้เวลาเพียง 1-3 Cycle เท่านั้น เร็วพอๆ กับการคูณจำนวนเต็มปกติ
ข้อควรระวัง: คุณต้องตั้งค่าเปิดใช้งาน FPU ใน Compiler หรือ IDE ของคุณก่อนนะครับ (เช่นการเลือก flag
-mfloat-abi=hardหรือเลือก build configuration ที่เปิดใช้ FPU) ไม่อย่างนั้นฮาร์ดแวร์ส่วนนี้จะไม่ถูกนำมาใช้งาน
2. DSP Instructions & SIMD
SIMD (Single Instruction Multiple Data) คือความสามารถในการ “สั่งงานทีเดียว ได้งานหลายชิ้น” ครับ
แผนภาพแสดงการทำงานของ SIMD: คำสั่งเดียว ประมวลผลข้อมูลเสียง 2 ตัวพร้อมกัน
สถานการณ์ตัวอย่าง: สมมติคุณทำระบบเสียง (Audio Processing) ข้อมูลเสียงมักมาในรูปแบบ 16-bit แต่ CPU ของเรากว้างถึง 32-bit
- Cortex-M3: ต้องโหลดข้อมูลเสียงตัวที่ 1 มาบวก แล้วค่อยโหลดตัวที่ 2 มาบวก (ทำ 2 รอบแยกกัน)
- Cortex-M4: สามารถใช้คำสั่ง SIMD เพื่อโหลดข้อมูล 16-bit สองตัวพร้อมกัน เข้ามาอัดอยู่ใน Register 32-bit ตัวเดียว แล้วสั่งบวกทีเดียว ได้ผลลัพธ์ออกมา 2 ค่าพร้อมกัน! ประหยัดเวลาการประมวลผลไปได้ครึ่งหนึ่งทันที
สรุปส่งท้าย
ถ้างานของคุณคือการเปิด-ปิดไฟ LED, อ่านค่า Switch, หรือสื่อสาร UART ทั่วไป Cortex-M3 (ตระกูล F1) ก็เพียงพอและคุ้มค่าแล้วครับ
แต่ถ้าโจทย์ของคุณคือ:
- Motor Control: ต้องคำนวณสมการ PID Loop ที่ซับซ้อนและใช้ทศนิยมเยอะๆ
- Audio Processing: ต้องการทำ Equalizer, FFT หรือ Digital Filter กับสัญญาณเสียง
- Sensor Fusion: อ่านค่าจาก IMU (Gyro/Accel) มาคำนวณหามุมด้วยอัลกอริทึม เช่น Kalman Filter
STM32F4 (Cortex-M4) คือคำตอบที่ใช่ที่สุด เพราะมันเกิดมาเพื่อ “เคี้ยว” คณิตศาสตร์โหดๆ ให้เป็นเรื่องง่ายครับ
อ้างอิงข้อมูลทางเทคนิค:
- STM32F4 Datasheet & Reference Manual
- ARM Cortex-M4 Technical Reference Manual