การเขียนโปรแกรม ARM Cortex-M ตอนที่ 4 : เปรียบเทียบความเร็ว

Spread the love

ตอนนี้เราจะมาดูกันว่าบอร์ดแต่ละแบบเร็วช้าต่างกันแค่ไหน วิธีการคือเราจะให้บอร์ดทุกอันทำงานแบบเดียวกันตาม flowchart นี้

สรุปย่อๆ ว่าให้ดูจำนวนเต็มทุกตัวตั้งแต่ 1-10000 ว่าตัวไหนเป็นจำนวนเฉพาะ ถ้าเป็นจำนวนเฉพาะให้เปิด LED ถ้าไม่ใช่ให้ดับ LED เมื่อครบแล้วถือเป็น 1 รอบ ให้บวกตัวนับจำนวนรอบแล้วแสดงผลที่ 7-segment LED

บอร์ดที่นำมาทดสอบมีด้วยกัน 4 ตัว ตามรูป

boards

การทดสอบจะทำทั้งหมด 5 ครั้ง

BoardsProgramming Method
Arduino UNOArduino IDE - software SPI
Arduino M0Arduino IDE - software SPI
STM32F103C8 board (blue pill)Arduino IDE - software SPI
STM32F103C8 board (blue pill)HAL driver - Atollic TrueSTUDIO - hardware SPI
STM32F030F4P6 boardHAL driver - Atollic TrueSTUDIO - hardware SPI

Code ที่ใช้ทดสอบนี้ใช้ library อยู่ 2 ตัว คือ

  1. MAX7219/MAX7221 Digital Tube 7-Segment LED Display Arduino Library
    https://github.com/ozhantr/DigitLedDisplay/
  2. Library for driving MAX7219 displays using STM32
    https://github.com/petoknm/MAX7219 โดยได้เพิ่ม code สำหรับใช้งาน 7-segment LED เข้าไป

ผลการทดสอบ

สรุป

  1. บอร์ดที่ใช้ชิป ARM ทุกตัวทำงานเร็วกว่า Arduino UNO อย่างเห็นได้ชัด
  2. Arduino M0 ทำงานได้ช้ากว่า STM32F0 น่าจะเพราะใช้ Software SPI จาก Arduino IDE
  3. STM32F103 ที่ใช้ Arduino IDE ทำงานเร็วกว่า STM32F103 ที่ใช้ HAL driver และ hardware SPI ก็น่าจะเพราะว่าได้ตั้งความเร็วของ hardware SPI ไว้ที่ประมาณ 1 MHz ขณะที่การทำ bit bang ตรงๆ นั้นจะสัมพันธ์กับ clock ของตัว MCU ซึ่งส่งผลให้ทำงานได้เร็วกว่า 1 MHz

ตอนอื่นๆ

Add a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.