Monday 6 April 2015

เริ่มต้นใช้งานบอร์ด STM32-NUCLEO F401RE


      ในบทความนี้ได้จะเป็นการทดลองใช้บอร์ด STM32-NUCLEO F401RE ในการ toggle LED และสำหรับบทความนี้ผู้ทดลองได้ทดลองบนระบบปฏิบัติการณ์ Windows 8.1 และซอฟต์แวร์ที่ใช้งานมีดังนี้


 สำหรับขั้นตอนเริ่มต้นใช้งานบอร์ด STM32-NUCLEO F401RE ในการใช้งานบอร์ดเพื่อ toggle LED มีขั้นตอนดังนี้
          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

ภาพแสดงการเลือกคอมไพล์เลอร์ 

ภาพแสดงการกำหนดชนิดของไฟล์เอาต์พุตให้เป็นไฟล์  .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  ขึ้นมา

 ภาพการโปรแกรมลงบอร์ดโดยการเลือกที่  Target -> Program


ภาพหน้าต่าง Program

 ภาพบอกสถานะการโปรแกรมสำเร็จในหน้าต่างโปรแกรม  ST Link


ผลการทำงานของการทดลองใช้งานบอร์ด STM32-NUCLEO F401RE ในการ  Toggle LED



ภาพแสดงการกระพริบของไฟบนบอร์ด STM32-NUCLEO F401RE

ผลการวัดโดยใช้ออสซิลโลสโคป


ภาพผลการวัดโดยใช้ออสซิลโลสโคป ความถี่ที่วัดได้คือ 35.71 Hz และแรงดันที่วัดได้คือ  3.36 V












บทความนี้เป็นส่วนหนึ่งของรายวิชา 010123120 Embedded System Design Lab 
คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมไฟฟ้าและคอมพิวเตอร์

 มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ
Read More »

ตอบคำถามเบื้องต้นของ STM32 Nucleo

1) ใช้แรงดันไฟเลี้ยงจากแหล่งใดได้บ้าง ช่วงแรงดันที่ใช้ได้

ได้จากทั้งหมด 4 แบบ

1.1) ST-LINK USB connector CN1 (U5V or VBUS) ช่วงแรงดันไฟเลี้ยง USB กระแสสูงสุดที่ใช้ได้คือ 100 mA เมื่อ Jumper JP1 มีสถานะ ON และใช้กระแสได้สูงสุด 300 mA เมื่อ Jumper JP1 มีสถานะ OFF

1.2) External power supply inputs VIN ช่วงแรงดันที่ใช้ได้คือ 7-12 V กระแสสูงสุดที่ใช่ได้คือ 800 mA โดยเมื่อจะใช้ให้ทำการปลด Jumper JP1 และ เชื่อม Jumper JP5 pin 2 และ pin 3 โดยสามารถต่อผ่าน Connector pin CN 6 pin 8 และ CN 7 pin 24

1.3) External power supply inputs EV5 ช่วงแรงดันที่ใช้ได้คือ 4.75-5.25 V กระแสสูงสุดที่ใช่ได้คือ 500 mA โดยเมื่อจะใช้ให้ทำการปลด Jumper JP1 และ เชื่อม Jumper JP5 pin 2 และ pin 3 โดยสามารถต่อผ่าน Connector pin CN 7 pin 6

1.4) External power supply inputs +3V3 ช่วงแรงดันที่ใช้ได้คือ 3-3.6 V โดยเมื่อจะใช้มีทางเลือกสองทางคือ ตัดแผ่น PCB ส่วนของ ST-LINK ออกหรือ ปิด SB2 และ SB12 โดยสามารถต่อผ่าน Connector pin CN 6 pin 4 และ CN 7 pin 12 และ pin 16 เมื่อใช้ ในโหมดนี้จะไม่สามารถ ใช้ ST-LINK ในการ Program หรือ Debug ได้


2) ใช้ toolchain + IDE อะไร (ต้องเป็น opensource)
      ใช้ Em::Blocks IDE, gcc-arm-none-eabi-4_9-2015q1, STM32CubeF4/ST HAL Driver V1.1.0


3) ขา I/O จ่ายกระแสสูงสุดได้กี่ mA
      ขา I/O ทุกๆขาสามารถจ่ายกระแสได้สูงสุด 25 mA แต่ทุกๆขารวมกันจ่ายได้ไม่เกิน 120 mA


4) มีขา SPI, I2C, UART กี่ชุด
      มีขา SPI จำนวน 3 ชุด I2C จำนวน 3 ชุด UART จำนวน 3 ชุด


5) มีขาสำหรับ ADC ขาใดบ้าง และใช้แรงดันช่วงใด มีขนาด resolution กี่บิต
      มีขา PA0-PA7, PB0-PB1 , PC0-PC5 แรงดัน Vref อยู่ในช่วง 1.7-3.6 V มีขนาด resolution 12 บิต


6) ใช้ความถี่จากแหล่งใด จากภายใน และภายนอก ใช้ความถี่สูงสุดสำหรับ CPU core ได้เท่ากี่ MHz

      ใช้ความถี่จากภายในแบบ High speed ได้สูงสุด 16 MHz แบบ Low speed อยู่ในช่วง 17-47 kHz และความถี่จากภายนอกแบบ High speed ได้ในช่วง 1-50 MHz แบบ Low speed อยู่ในช่วง 32.768-1000 kHz และความถี่จากภายนอกที่มาจาก crystal/ceramic resonator แบบ High speed ได้ในช่วง 4-26 MHz แบบ Low speed อยู่ในช่วง 32.768 kHz










บทความนี้เป็นส่วนหนึ่งของรายวิชา 010123120 Embedded System Design Lab 
คณะวิศวกรรมศาสตร์ ภาควิชาวิศวกรรมไฟฟ้าและคอมพิวเตอร์
 มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าพระนครเหนือ
Read More »