บอร์ด STM32F103C8T6

การใช้งานบอร์ด STM32 STM32F103C8T6 กับ Arduino IDE



บอร์ด STM32 STM32F103C8T6 บอร์ดพัฒนาไมโครคอนโทรลเลอร์ STM32F103C8T6 มีแรม 20KB รอม 64KB รองรับบัส I2C SPI UART และ CAN มี GPIO ทั้งหมด 37 ช่อง และมี ADC 12 บิต ให้ใช้งาน 10 ช่อง ใช้แรงดันไฟฟ้า 3.3V รองรับการทำงานกับ Arduino IDE ใช้ MCU ARM 32 Cortex-M3 CPU. ซึ่งรองรับการทำงานแบบ 32 Bit

คอมไพล์เลอร์ที่นิยมใช้งานกันได้แก่ STM32CubeIDE , AC6 System Workbench for STM32 , ARM Keil MDK , ARM Mbed Online Compiler , Arm Mbed Studio และ Arduino IDE โดยในบทความนี้ จะแสดงการใช้งานบอร์ด STM32 กับ Arduino IDE โดยใช้ระบบปฏิบัติการ Windows 10

ขั้นตอนการทํางาน

1 : เพิ่มบอร์ด STM32 ลงใน Arduino IDE



ติดตั้งบอร์ด STM32 ลงใน Arduino IDE ตามขั้นตอนลิงค์ด้านล่าง



2 : เชื่อมต่อสาย STM32F103C8T6 กับ CP2102 USB

STM32 USB to UART


UART หรือชื่อเต็ม Universal Asynchronous Receiver and Transmitter เป็นการสื่อสารข้อมูลผ่านพอร์ตอนุกรมแบบอะซิงโครนัส (asynchronous serial communication) ระหว่างอุปกรณ์ต่าง ๆ ซึ่งนิยมใช้เป็นการสื่อสารระหว่างไมโครคอนโทรลเลอร์ด้วยกัน การทำงานแบบอะซิงโครนัสหมายความว่าจะไม่มีสัญญาณนาฬิกา (clock signal) ส่งออกมาจากตัวส่งหรือตัวรับเพื่อกำหนดจังหวะการรับส่งข้อมูล แต่จะกำหนดผ่านโดยการตั้งความเร็วในการรับส่งข้อมูลของอุปกรณ์ดังกล่าวแทน

การใช้งานร่วมกันระหว่าง STM32F103C8T6 ตัวนี้กับ PC เพื่ออัพโหลดโปรแกรม ก็สามารถทำได้หลายวิธี ซึ่งที่นิยมกันก็คือผ่านทาง STLink หรือ Serial Port ซึ่งในบทความนี้จะใช้การสื่อสารกันผ่านพอร์ตอนุกรม (Serial Port) แบบ UART โดยมีการเชื่อมต่อดังนี้

STM32 | CP2102 USB 

PA9 <----> RXD  
PA10 <----> TXD
5V <----> +5V
G  <----> GND
เชื่อมต่อสาย STM32F103C8T6 กับ USB to UART
การใช้งานบอร์ด STM32 STM32F103C8T6 กับ Arduino IDE


3 : ตรวจสอบไดร์เวอร์ ของ CP2102 USB


คลิกขวา ที่ Start เลือกไปที่ Device Manager

การติดตั้งไดร์เวอร์ ST-Link



ไปที่ Ports (COM & LPT) จะพบ Silicon Labs CP210x USB to UART Bridge ในตัวอย่างเป็น (COM6) แสดงว่าคอมพิวเตอร์ของเราสามารถ ติดต่อสื่อสารกับ บอร์ด CP2102 USB ได้แล้ว



4 : อัพโหลดโค้ด STM32


ย้ายจั้มเปอร์สีเหลืองด้านบนให้มาอยู่อีกฝั่ง จาก โหมดใช้งาน เปลี่ยนเป็น โหมดอัพโหลดโปรแกรม

โหมดอัพโหลดโปรแกรม STM32



ในตัวอย่างนี้ เราจะมาทดลองสั่งงาน เปิด/ปิด หลอดไฟ LED ที่เชื่อมต่อกับ ขา PC13 ที่มาพร้อมกับบอร์ด STM32 อยู่แล้ว หลักการทำงานคือ ให้มีการทำให้ LED กระพริบด้วยอัตราคงที่ (ให้สลับสถานะลอจิกทุก ๆ 1000 มิลลิวินาที)

หลอดไฟ LED ที่เชื่อมต่อกับ ขา PC13


เขียนโปรแกรมและอัพโหลดโค้ดด้านล่างนี้ ไปที่ STM32

void setup() {
  pinMode(PC13, OUTPUT);
}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(1000);
  digitalWrite(PC13, LOW);
  delay(1000);
}



ไปที่ Tools -> Board -> STM32F1 Boards (STM32duino.com) -> Generic STM32F103C series

ไปที่ Tools -> Board -> STM32F1 Boards (STM32duino.com) -> Generic STM32F103C series



ไปที่ Tools -> Upload method: -> Serial

ไปที่ Tools -> Upload method: -> Serial


เลือก Port โดยไปที่ Tools -> Port -> COM6

(โดย COM6 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)

ตั้งค่า Upload STM32

กดปุ่ม RESET 1 ครั้ง

กดปุ่ม RESET  STM32 1 ครั้ง


คลิกที่ Upload

คลิกที่ Upload


รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง และ บรรทัดสุดท้าย ด้านล่างสุดขึ้นคำว่า done. แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ด STM32 ได้สำเร็จแล้ว

รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง และ บรรทัดสุดท้าย ด้านล่างสุดขึ้นคำว่า done. แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ด STM32 ได้สำเร็จแล้ว
รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง และ บรรทัดสุดท้าย ด้านล่างสุดขึ้นคำว่า done. แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ด STM32 ได้สำเร็จแล้ว



5 : ทดสอบการทํางาน


ย้ายจั้มเปอร์สีเหลืองด้านบน จาก โหมดอัพโหลดโปรแกรม เปลี่ยนเป็น โหมดใช้งาน


กดปุ่ม RESET 1 ครั้ง

กดปุ่ม RESET STM32 1 ครั้ง


ผลลัพธ์การทำงานคือ ไฟ LED สีเขียว กระพริบ แสดงว่า การอัพโหลดโค้ด โปรแกรมแรกของคุณ กับ STM32 สำเร็จแล้ว

หลอดไฟ LED ที่เชื่อมต่อกับ ขา PC13
การใช้งานบอร์ด STM32 STM32F103C8T6 กับ Arduino IDE


6 : อุปกรณ์ที่ใช้