การติดตั้ง Arduino Bootloader สำหรับบอร์ด STM32F103

--

Blue Pill เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ใช้ชิป STM32F103C8T6 ซึ่งเป็นชิป ARM Cortex-M3 แบบ 32 บิต บอร์ดนี้หาซื้อได้ทั่วไปจาก AliExpress ในราคาประหยัดเมื่อเทียบกับประสิทธิภาพที่สูง คุณสมบัติสำคัญของบอร์ดนี้ คือ ใช้ชิป STM32F103C8T6 มี Flash 64 KB SRAM 20 KB ความเร็ว 72 MHz บอร์ดนี้ทำงานที่ 3.3V แต่ก็มีบาง pin ที่รับอิพุท 5V ได้ด้วย ซึ่งสามารถทำงานได้กับเซนเซอร์ 5V บางตัว เช่น Hall sensor encoder หรือ Ultrasonic sensor HC-SR04

จุดด้อยของบอร์ดนี้อย่างหนึ่ง คือ ต้องอัพโหลดโปรแกรมผ่าน ST-Link V2 ซึ่งอาจจะไม่สะดวกต่อการใช้งาน บทความนี้จะนำเสนอการติดตั้ง Arduino Bootloader สำหรับบอร์ด STM32F103 Blue Pill ซึ่งจะทำให้บอร์ดนี้สามารถอัพโหลดโค๊ดผ่านพอร์ต USB ได้เหมือนกับบอร์ด Arduino ทั่วไป

การติดตั้ง Arduino_STM32

Arduino_STM32 เป็นซอฟต์แวร์ที่ทำให้เราสามารถเขียนโปรแกรมสำหรับบอร์ด STM32F103 ด้วย Arduino IDE ผมได้สรุปวิธีการติดตั้งจากเวบไซต์ของ Arduino_STM32 ดังนี้ โดยผมใช้ระบบปฏิบัติการ Windows

1. ติดตั้ง Arduino IDE เวอร์ชั่น 1.8.19 สำหรับ Windows (โดยไม่ผ่าน App Store) ตามคำสั่งนี้

2. เปิด Arduino IDE แล้วไปที่ Tools->Boards manager ค้นหาและเลือกติดตั้ง Arduino SAM boards (Cortex-M3) ขั้นตอนนี้จำเป็น เพราะมีการติดตั้ง arm-none-eabi-g++ toolchain ด้วย

3. สร้างโฟล์เดอร์ชื่อ hardware ใน Documents/Arduino จากนั้นดาวน์โหลด Arduino_STM32 แล้วแตกไฟล์ในไปไว้ในโฟลเดอร์ hardware ของ Arduino IDE ที่สร้างไว้ สุดท้ายเราจะได้โฟล์เดอร์ตามนี้ Documents/Arduino/hardware/Arduino_STM32

4. ติดตั้ง driver โดยการดับเบิลคลิ๊กที่ไฟล์ Documents\Arduino\hardware\Arduino_STM32\drivers\win\install_drivers.bat

5. ปิดและเปิด Arduino IDE ขึ้นมาใหม่อีกครั้ง เลือก Tools->Board เราก็จะพบว่ามี Generic STM32F103C series รวมทั้งบอร์ด STM32 อื่นๆ ที่สนับสนุนให้เลือก ตามภาพ

การเลือกบอร์ด STM32 ใน Arduino IDE

การติดตั้ง Bootloader

  1. ติดตั้ง FLASHER-STM32 โดยดาวน์โหลดได้จากเวบไซต์ของ STMicroelectronics
  2. ดาวน์โหลดไฟล์ Bootloader ได้จาก github.com/rogerclarkmelbourne/STM32duino-bootloader เลือกไฟล์ generic_boot20_pc13.bin
  3. ที่บอร์ด Blue Pill เลื่อนจัมเปอร์ซ้ายสุดขึ้นไปตำแหน่ง programming mode ตามภาพ

4. เชื่อมต่อบอร์ด Blue Pill กับ USB to TTL ตามตารางนี้

5. เปิดโปรแกรม Flash Loader Demonstrator GUI เลือก Port ที่ตรงกับของ USB to TTL โดยเช็คได้จาก Device Manager ตามภาพ แล้วคลิ๊กปุ่ม Next

6. หากเชื่อมต่อสำเร็จโปรแกรมจะแจ้งขนาด Flash Size ตามภาพ จากนั้นคลิ๊กปุ่ม Next

7. เลือก Target ให้ตรงกับ specs. ของบอร์ดของเรา ตามภาพ แล้วคลิ๊กปุ่ม Next

8. เลือก Download to device จากนั้นเลือกไฟล์ generic_boot20_pc13.bin ที่เตรียมไว้ และเลือกออปชั่น Verify after download ตามภาพ แล้วคลิ๊กปุ่ม Next

9. หากอัพโหลด Bootloader สำเร็จ โปรแกรมจะแจ้งข้อความตามภาพ จากนั้นให้คลิ๊กปุ่ม Close

10. ถอดสาย USB to TTL ออก แล้วเลื่อนจัมเปอร์ซ้ายสุดลงมาตำแหน่ง working mode ตามเดิม ตามภาพ

การทดสอบ Bootloader

1. ต่อสาย micro USB กับบอร์ด Blue Pill เหมือนกับที่ใช้งานบอร์ด Arduino ทั่วไป เปิดโปรแกรม Arduino IDE ขึ้นมา เลือก Board และ Variant ตามรูป ให้เลือก Port สำหรับ Blue Pill ที่มี (Maple Mini) ต่อท้าย

2. ทดสอบอัพโหลดโค๊ดโดยการเปิดไฟล์ Examples->Basics->Blink เพิ่มบรรทัด #define LED_BUILTIN PC13 ตามภาพ หากไม่มีข้อผิดพลาด ก็จะสามารถอัพโหลดโค๊ดผ่านสาย USB ตามปกติ ตามภาพ

จะเห็นได้ว่า Arduino Bootloader จะทำให้เราสามารถอัพโหลดโค๊ดลงบอร์ด STM32F103C8C6 Blue Pill ได้อย่างสะดวก

แหล่งอ้างอิง

https://youtu.be/gceDzvpRuyo

--

--

No responses yet