บทนำ: ไมโครคอนโทรลเลอร์ติดเทอร์โบ

ยินดีต้อนรับสู่ก้าวแรกของการเจาะลึก 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) ตรงที่:

  1. ทางด่วนแยกสาย: มีถนน (Bus) แยกกันชัดเจนระหว่าง “คำสั่ง” (Instruction Bus) และ “ข้อมูล” (Data Bus) ทำให้ CPU สามารถดึงคำสั่งถัดไปมารอ และโหลดข้อมูลที่ต้องใช้ได้พร้อมๆ กันในรอบสัญญาณนาฬิกา (Clock Cycle) เดียว ไม่ต้องรอคิวกัน
  2. 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 Diagram showing 32-bit register split into two 16-bit audio samples แผนภาพแสดงการทำงานของ 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