ในบทความนี้ได้จะเป็นการทดลองใช้บอร์ด STM32-NUCLEO F401RE ในการ toggle LED และสำหรับบทความนี้ผู้ทดลองได้ทดลองบนระบบปฏิบัติการณ์ Windows 8.1 และซอฟต์แวร์ที่ใช้งานมีดังนี้
- STM32CubeMX v.4.7.0 (Download here)
- CubeMx2EmBlocks (Download here)
- EmBlocks v.2.30 (Download here)
- STM32 ST-LINK Utility v.3.5 (Download here)
สำหรับขั้นตอนเริ่มต้นใช้งานบอร์ด
STM32-NUCLEO F401RE ในการใช้งานบอร์ดเพื่อ toggle LED มีขั้นตอนดังนี้
o ดาวน์โหลดและติดตั้ง STM32 ST-LINK Utility เพื่อให้ติดต่อสื่อสารกับบอร์ดดังกล่าวผ่านพอร์ต USB ได้
o ติดตั้งโปรแกรม STM32CubeMX ซึ่งภายในบทความนี้ได้ใช้งานเวอร์ชัน 4.7.0 เมื่อติดตั้งโปรแกรมเสร็จแล้วให้เปิด โปรแกรมขึ้น แล้วเลือก New Project
o ดาวน์โหลดและติดตั้ง STM32 ST-LINK Utility เพื่อให้ติดต่อสื่อสารกับบอร์ดดังกล่าวผ่านพอร์ต USB ได้
o ติดตั้งโปรแกรม STM32CubeMX ซึ่งภายในบทความนี้ได้ใช้งานเวอร์ชัน 4.7.0 เมื่อติดตั้งโปรแกรมเสร็จแล้วให้เปิด โปรแกรมขึ้น แล้วเลือก New Project
หน้าเริ่มต้นโปรแกรม STM32CubeMX v
4.7.0
o ต่อมาให้เลือกแท็บ Board Selector ,เลือก Type of Board เป็น
Nucleo, และเลือก MCU Series เป็น STM32F4
ต่อมาให้แก้ไขในส่วนของ Peripheral Selection โดยแก้ไขที่ Led ให้ช่อง Nb เป็น 1 แล้วกดเลือกบอร์ด NUCLEO-F401RE แล้วกด ok เพื่อสร้าง
Project ใหม่
ภาพแสดงขั้นตอนเริ่มต้นการสร้าง
Project
ภาพหน้าต่างของโปรแกรมเมื่อสร้าง
Project สำเร็จ
o ต่อมาจะเป็นกำหนดชื่อ Project ,ไดเรคทอรี่ที่จัดเก็บ
และ Toolchain/IDE ซึ่งจะเลือกเป็น
TrueSTUDIO โดยสามารถเข้าไปตั้งค่าได้ที่
Project -> Setting
หน้าต่างแสดงการกำหนดค่าใน
Project Setting
o เมื่อกำหนดเสร็จแล้วให้ Generate Code โดยเลือกที่ Project -> Generate Code ซึ่งเมื่อ Generate Code เสร็จแล้วจะได้ Project ที่มีไดเรคทอรี่ดังภาพด้านล่าง
ภาพแสดงไดเรคทอรี่ใน Project ที่สร้างไว้
o ขั้นตอนถัดมาจะเป็นการเริ่มต้นการใช้โปรแกรม EmBlocks
ในการพัฒนาและเขียนโค้ดสำหรับบอร์ดนี้
ซึ่งจากโปรเจคที่เราสร้างได้จากโปรแกรม STM32CubeMX จะต้องใช้โปรแกรม
CubeMx2EmBlocks เพื่อ convert CubeMx ให้ใช้กับโปรแกรม EmBlocks
ได้ โดยเมื่อเปิดโปรแกรมขึ้นมาแล้วเลือก
โฟลเดอร์ที่มีโปรเจค cubemx อยู่ แล้วโปรแกรมจะทำการ convert ให้อัตโนมัติ ซึ่งเราจะได้ไฟล์ .ebp ขึ้นมาในโฟลเดอร์โปรเจค
หน้าต่างเริ่มต้นโปรแกรม CubeMx2EmBlocks
หน้าต่างแสดงการเลือกไดเรคทอรี่ในโปรแกรม CubeMx2EmBlocks
ภาพหน้าต่าง เมื่อโปรแกรม CubeMx2EmBlocks ทำการ convert
เสร็จ
ภาพแสดงโฟลเดอร์โปรเจคที่มี่ไฟล์ .ebp เพิ่มขึ้น
o หลังจากนั้นให้เปิดโปรแกรม
EmBlocks ขึ้นมาแล้วเปิดไฟล์ .ebp
หน้าต่างเริ่มของโปรแกรม
EmBlocks
ภาพแสดงการเลือกไฟล์
.ebd
ภาพหน้าต่างโปรแกรม EmBlocks เมื่อมีการเปิดไฟล์โปรเจคเสร็จแล้ว
o ทำการเขียนโค้ดในไฟล์
main.c
เพื่อให้บอร์ดสามารถ toggle LED ได้
ภาพแสดงตัวอย่างการเขียนโค้ดใน
main.c โดยใช้ HAL library
แบบใหม่ และไม่ใช้ SPL
o ก่อนทำการทำการ
Build Target จะต้องกำหนดคอมไพล์เลอร์เป็น ARM GCC Compiler (Emblocks
–bare-metal) และชนิดของไฟล์เอาต์พุตให้เป็น .bin
โดยสามารถเข้าไปกำหนดค่าได้ที่ Project > Build option
สำหรับการกำหนดชนิดของไฟล์เอาต์พุตให้เป็นไฟล์ .bin ให้กดเลือกไปที่แท็บ Pre/post build steps แล้วตั้งค่าที่
Post-build step ให้เป็น Always และเพิ่มข้อความนี้ในลงช่องว่าง
arm-none-eabi-objcopy -O binary $(TARGET_OUTPUT_DIR)/$(TARGET_OUTPUT_BASENAME).elf $(TARGET_OUTPUT_DIR)/$(TARGET_OUTPUT_BASENAME).bin
arm-none-eabi-objcopy -O binary $(TARGET_OUTPUT_DIR)/$(TARGET_OUTPUT_BASENAME).elf $(TARGET_OUTPUT_DIR)/$(TARGET_OUTPUT_BASENAME).bin
ภาพแสดงการเลือกคอมไพล์เลอร์
ภาพแสดงการกำหนดชนิดของไฟล์เอาต์พุตให้เป็นไฟล์
.bin
o ทำการ
Build Target โดยเลือกที่ Project -> Build Target ซึ่งไฟล์
.bin ที่ได้จะถูกเก็บไว้ในไดเรคทอรี่ bin/Debug
ภาพการ
Build Target
ตัวอย่าง
logs เมื่อทำการ Build เสร็จแล้ว
ภาพแดงไดเรคทอรี่ที่จัดเก็บไฟล์
.bin
หลัง Build สำเร็จ
o ขั้นตอนต่อไปจะเป็นการโปรแกรมลงบอร์ดโดยใช้โปรแกรม
ST-Link โดยขั้นตอนการทำคือเปิดไฟล์ .bin ขึ้นมา แล้วเลือกไปที่ Target -> Program แล้วกด ok
หน้าต่างแรกของโปรแกรม
ST-Link
ภาพขั้นตอนการเลือกไฟล์
.bin ในโปรแกรม St-Link
ภาพหน้าต่างเมื่อมีการเปิดไฟล์
.bin ขึ้นมา
ภาพบอกสถานะการโปรแกรมสำเร็จในหน้าต่างโปรแกรม
ST Link
ผลการทำงานของการทดลองใช้งานบอร์ด STM32-NUCLEO
F401RE ในการ Toggle
LED
ภาพแสดงการกระพริบของไฟบนบอร์ด
STM32-NUCLEO
F401RE
ผลการวัดโดยใช้ออสซิลโลสโคป
ภาพผลการวัดโดยใช้ออสซิลโลสโคป
ความถี่ที่วัดได้คือ 35.71 Hz
และแรงดันที่วัดได้คือ 3.36 V
บทความนี้เป็นส่วนหนึ่งของรายวิชา 010123120 Embedded System Design Lab
คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมไฟฟ้าและคอมพิวเตอร์
มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ
No comments:
Post a Comment