แนะนำชิปไมโครคอนโทรลเลอร์ Raspberry Pi RP253x SoC#


แนะนำชิป RP253x และบอร์ด Pico 2#

ในเดือนสิงหาคม ค.ศ. 2024 ได้มีการเปิดตัวชิปไมโครคอนโทรลเลอร์ RP2350 ซึ่งจัดอยู่ในซีรีย์ RP235x ของบริษัท Raspberry Pi Ltd. ในเมือง Cambridge (UK) และถือว่าเป็นรุ่นที่สองถัดจากชิปรุ่น RP2040 ที่ได้มีการเปิดเผยครั้งแรกในเดือนมกราคม ค.ศ. 2021

นอกจากนั้นแล้วทางบริษัทยังได้เปิดตัวบอร์ดไมโครคอนโทรลเลอร์ที่มีชื่อว่า Raspberry Pi Pico 2 ที่ใช้ชิปรุ่น RP2350 บอร์ด Pico 2 (RP2350) มีขนาดของบอร์ดและขาตรงกับบอร์ด Pico (RP2040) แต่ยังคงมีการเลือกใช้คอนเนกเตอร์ Micro USB (ไม่ได้เปลี่ยนเป็น Type-C) สำหรับการจ่ายไฟเลี้ยง และเชื่อมต่อกับคอมพิวเตอร์ของผู้ใช้ และยังไม่มีการเพิ่มปุ่มกดรีเซตที่ขา RUN

บอร์ด Pico 2 ยังไม่มีโมดูล WiFi/BLE แต่บอร์ดรุ่น Pico 2 W มีการใช้งานโมดูล Infineon 43439 (2.4GHz 802.11n Wi-Fi and Bluetooth 5.2) เหมือนบอร์ด Pico W

ในเชิงเปรียบเทียบ RP2040 มีตัวประมวลผลเป็นซีพียูขนาด 32 บิต แบบ Dual-Core, 32-bit Arm Cortex M0+ ทำงานด้วยความถี่สูงสุด 150MHz (แต่ใช้ความถี่แบบ Overclock ได้อีก) ในขณะที่ RP235x ก็ยังคงเลือกใช้สถาปัตยกรรมแบบ Dual-Core แต่ใช้สถาปัตยกรรมของซีพียูรุ่นใหม่กว่า

ชิปในตระกูล RP235x ซึ่งผลิตโดยใช้เทคโนโลยีเซมิคอนดักเตอร์ขนาด 40 นาโนเมตร (โดยให้บริษัท IMEC ทำชิปต้นแบบ และบริษัท TSMC ผลิตจำนวนมาก) จำแนกออกไปเป็นตัวเลือกย่อยได้ดังนี้

  1. RP2350A และ RP2350B (ไม่มีหน่วยความจำ Flash อยู่ภายในชิป) และมีรุ่นย่อยคือ A และ B แตกต่างกันที่ตัวถัง (IC Package) และ จำนวนขา GPIOs

    • A: ใช้ตัวถังแบบ QFN60 (7x7mm^2, 30 GPIOs)
    • B: ใช้ตัวถังแบบ QFN80 (10x10mm^2, 48 GPIOs)
  2. RP2354A และ RP2354B เป็นรุ่นที่มีหน่วยความจำแบบ Flash ขนาด 2MB รวมอยู่ในชิปเดียวกัน (เป็นการออกแบบและผลิตชิปในรูปแบบที่เรียกว่า SiP: Stacked-in-Package)

หากพิจารณาพื้นที่ภายในชิปสำหรับการสร้างวงจรด้วยสารกึ่งตัวนำ หรือ Die Size ชิป RP2350 มีขนาด 5.3mm^2 เปรียบเทียบกับ 2mm^2 สำหรับชิป RP2040 (ใช้เทคโนโลยีการผลิต 40nm เหมือนกัน) ดังนั้นจึงมีขนาดของวงจรภายในที่ใหญ่กว่า

รหัสของชิป RP2354 A/B มีความหมายดังนี้

  • 2: Number of CPU Cores
  • 3: Arm-Cortex M33 (default)
  • 5: On-chip SRAM = log2( 520KB / 16KB )
  • 4: On-chip Flash = log2( 2048KB / 128KB )

บอร์ด Pico 2 ใช้ชิป RP2350A และมีชิปหน่วยความจำแฟลชภายนอก (Quad-SPI flash) ขนาด 4MB

รูป: บอร์ด Pico 2 และ Pico 2 W

รูป: แผนผังแสดงตำแหน่งขาของบอร์ด Pico 2

รูป: แผนผังแสดงตำแหน่งขาของบอร์ด Pico 2 W

แรงดันไฟเลี้ยงสำหรับบอร์ด Pico 2 / Pico 2 W

  • จุดอ้างอิง VBUS
    • ตรงกับขา VBUS ของบอร์ด
    • ใช้รับแรงดันไฟเลี้ยง 5V ± 10% ซึ่งได้จากคอนเนกเตอร์ micro-USB
  • จุดอ้างอิงVSYS
    • ตรงกับขา VSYS ของบอร์ด
    • ได้รับแรงดันไฟฟ้าอินพุตมาจาก VBUS ต่อผ่านไดโอดแบบ Schottky
    • ใช้สำหรับแรงดันไฟเลี้ยงในช่วงได้ในช่วง 1.8V ~ 5.5V แล้วนำไปใช้กับวงจรสวิตชิง (SMPS)

วงจร Buck-Boost SMPS (RT6150) ใช้สำหรับสร้างแรงดันไฟเลี้ยง 3.3V (3V3) และวงจรนี้มีขา 3V3_EN ควบคุมการทำงานของวงจรดังกล่าว ขานี้ต่อผ่านตัวต้านทาน 100kΩ ไปยัง VSYS ถ้าต่อขานี้ไปยัง GND จะปิดการจ่ายไฟเลี้ยงให้บอร์ด

รูป: วงจร Power Supply ของบอร์ด Pico 2

ขา GPIO ของบอร์ด Pico 2 ที่เกี่ยวข้องกับวงจร SMPS ได้แก่

  • GPIO24: ใช้สำหรับตรวจสอบระดับแรงดันไฟฟ้า VBUS โดยต่อผ่านวงจรแบ่งแรงดัน (Voltage Divider):
  • GPIO23: ใช้สำหรับการเลือกโหมดการทำงานของ RT6150 (SMPS) โดยต่อกับขา PS
    • PS=0: Pulse Frequency Modulation (PFM) mode (default) มีตัวต้านทาน 100kΩ pulldown
    • PS=1: Pulse Width Modulation (PWM) mode
  • GPIO29: ใช้ในการวัดระดับแรงดันไฟฟ้าของ VSYS โดยต่อกับ ADC ช่องอินพุต ADC3

 


ข้อมูลจำเพาะเกี่ยวกับชิป RP2350#

ลองมาศึกษาข้อมูลจำเพาะเกี่ยวกับชิป RP2350 ดังนี้

  • มีสถาปัตยกรรมแบบ Symmetric dual-core, dual-architecture
    • Dual-core: Core 0 & Core 1
    • Dual-architecture: Arm Cortex-M33 & Hazard3 RISC-V (32-bit)
  • RP2350 มีซีพียูดังนี้
    • Arm Cortex-M33: 150MHz 3-stage pipeline, 4.09 CoreMark/MHz
    • RISC-V Hazard3: 150MHz, 3-stage pipeline, 3.81 CoreMark/MHz
  • ถ้าใช้ซีพียู ** Arm Cortex-M33 ก็สามารถใช้คำสั่งได้สำหรับ single-precision floating-point arithmetic** (hard-fp)
  • ชิป RP2350 มีวงจร On-chip Switching Regulator อยู่ภายในชิป เพื่อสร้างแรงดันไฟเลี้ยง 1.1V สำหรับ Core Voltage จากแรงดันไฟเลี้ยง 3.3V
  • ความถี่ในการประมวลผลของซีพียู: 48MHz ~ 150MHz (แต่สามารถใช้ความถี่สูงกว่ากำหนดได้ หรือ Overclock)
  • มีหน่วยความจำ SRAM: 520KB (มากกว่า SRAM ของ RP2040 ซึ่งมีขนาด ** 264KB**)
  • มีหน่วยความจำแบบ ROM: 32KB ซึ่งภายในมีเฟิร์มแวร์สำหรับ UART & USB (UF2) Bootloaders
  • มีหน่วยความจำแบบ OTP (anti-fuse, One-Time Programmable): 8KB
  • ต้องใช้ชิปหน่วยความจำภานอกสำหรับ External Flash (Primary Flash) ขนาดสูงสุด 16MB
  • เขียนอ่านข้อมูลด้วยบัส Serial SPI รองรับการเชื่อมต่อแบบ Dual SPI / Quad SPI (QSPI)
  • สามารถต่อไอซี Secondary Serial Flash หรือหน่วยความจำ External Serial RAM (PSRAM) ได้อีก
  • ถ้าใช้ชิป Arm Cortex-M33 ก็สามารถใช้งานฟังก์ชันของ Arm TrustZone เช่น
    • Secure Boot ซึ่งช่วยให้การบูทระบบมีความปลอดภัย และป้องกันการอ่านหรือเขียนข้อมูลที่ไม่ปลอดภัย
    • SHA-256 accelerator ซึ่งเป็นวงจรสำหรับการคำนวณ Secure Hash
    • TRNG (true random number generator) ซึ่งเป็นวงจรสร้างเลขสุ่ม
  • มีวงจรรอบข้างซีพียู (On-chip Peripherals) อย่างเช่น
    • 2× UARTs
    • 2× SPI controllers
    • 2× I2C controllers
    • 24× PWM channels
    • 3× 12-bit ADC
  • ขา GPIO ใช้กับแรงดันได้ในช่วง 1.8V ~ 3.3V (IO Voltage) แต่บอร์ด Pico 2 / Pico 2 W มีแรงดันไฟฟ้า IO voltage อยู่ที่ระดับ 3.3V
  • รองรับการเชื่อมต่อด้วย USB 1.1 (Controller + PHY)
  • มีวงจรที่เรียกว่า Programmable IO (PIO) blocks จำนวน 3 ชุด PIO0 ~ PIO2 ในขณะที่ชิป RP2040 มี PIO เพียง 2 ชุด

ในมุมมองของการออกแบบสถาปัตยกรรมชิป มีประเด็นที่น่าสนใจดังนี้

  • มีตัวประมวลผล 2 ชุด ทำงานได้เหมือนกันและขนานกันได้ (ในเอกสารของผู้ผลิต เรียกว่า CPU Sockets) แต่ละชุด มีซีพียู Arm Cortex-M33 CPU กับ RISV-C CPU อยู่ด้วยกัน (คู่กัน)
  • ทีมงานออกแบบ ได้ใส่ RISC-V CPU Core (open ISA) มาเป็นตัวเลือกให้ลองใช้งานคู่กับ Arm-Cortex-M33 และลองเปรียบเทียบประสิทธิภาพ
  • โดยปรกติ หลังจากรีเซตชิป และมีการเลือกรันโค้ด โดยใช้ Arm-Cortex-M33 ในแต่ละ CPU Socket ซีพียู RISC-V ก็จะไม่ทำงาน และอยู่ในโหมดการทำงานที่ถือว่าใช้พลังงานต่ำมาก ๆ
  • การเลือกใช้ซีพียูอันไหนในแต่ละ CPU Socket จะมีการตรวจสอบหลังจากรีเซตระบบเท่านั้น และชุดคำสั่งของโปรแกรมในหน่วยความจำแฟลช ที่จะใช้จะต้องตรงกับสถาปัตยกรรมที่เลือกใช้ด้วย

บอร์ดไมโครคอนโทรลเลอร์ที่ใช้ชิป RP2350#

นอกจากบอร์ด Pico 2 แล้วยังมีบริษัทอื่นที่ได้พัฒนาบอร์ดและใช้ชิป RP2350 อีกหลายบริษัท (Third-party RP2350-based boards) มีตัวอย่างเช่น

  • Tiny2350 (Pimoroni Ltd.)
  • Metro RP2350, Feather RP2350 (Adafruit Industries)
  • W5500-EVB-Pico2, W6100-EVB-Pico2 (WIZnet Co. Ltd.)
  • Pro Micro RP2350 (Sparkfun)
  • Challenger+ RP2350 WiFi6/BLE5 (iLabs)
  • XIAO RP2350 (Seeed Studio)

บอร์ด Sparkfun Pro Micro RP2350 มีการใส่ชิปหน่วยความจำ PSRAM มาให้ด้วย หรือบอร์ดของบางบริษัทที่มีการใส่โมดูล ESP32-C6 ช่วยทำให้ RP2350 สามารถสื่อสารไร้สายด้วย WiFi/BLE ได้ด้วย


ซอฟต์แวร์สำหรับการเขียนโค้ด RP235x#

สำหรับการเขียนโค้ด C/C++ ผู้ใช้จะต้องติดตั้งและใช้งานซอฟต์แวร์ที่มีชื่อว่า Pico C/C++ SDK (v2.0.0+) (Online Doc) และสามารถใช้งานร่วมกับ VS Code IDE ได้ แนะนำให้ลองใช้งานร่วมกับ Pico VS Code Extension Pack รองรับการเขียนโค้ดและเลือกใช้ชุดคำสั่งได้สำหรับ Arm Cortex-M33 และ RISC-V

หากต้องการเขียนโค้ดด้วย Arduino Sketch ก็ให้เลือกใช้ Arduino Core for Raspberry Pi Pico (Community Edition) สำหรับ Arduino IDE Software แต่จะต้องใช้สำหรับเวอร์ชัน v4.0.0 (หรือสูงกว่า) เพื่อรองรับการใช้งานชิป RP2350 และตั้งแต่เวอร์ชัน v4.3.0 รองรับการใช้งาน WiFi / BLE สำหรับบอร์ด Pico 2 W

การเขียนโค้ดด้วยภาษา MicroPython ก็ทำได้เช่นกัน ผู้ใช้สามารถดาวน์โหลดไฟล์เฟิร์มแวร์ ซึ่งเป็นไฟล์ .UF2 มาติดตั้งใช้งานสำหรับบอร์ด Pico 2


การติดตั้งและใช้งาน Arduino Core#

ถัดไปเป็นตัวอย่างการเขียนโค้ด Arduino Sketch โดยใช้ Arduino Core for Raspberry Pi Pico และทดลองใช้กับบอร์ด Pico 2 / Pico 2 W

รูป: การเพิ่มรายการ URL ใน Arduino IDE - Boards Manager

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

รูป: การติดตั้ง Arduino Core for Raspberry Pi Pico (ทดลองใช้เวอร์ชัน 4.30) ใน Arduino IDE - Boards Manager

ถัดไปเป็นโค้ดตัวอย่าง Arduino Sketch ทำให้ LED บนบอร์ด Pico 2 / Pico 2 W กระพริบด้วยอัตราคงที่ และส่งข้อความออกมาผ่านทาง USB CDC (Serial)

ข้อสังเกต: บอร์ด Pico 2 W มีโมดูล Wi-Fi / BLE และขาที่ต่อกับวงจร LED บนบอร์ด ไม่ใช่ขา GP25

#include <Arduino.h>

#define LED_PIN  (64) // 25: Pico / Pico 2 25 and 64: Pico W / Pico 2 W

void setup() {
  Serial.begin(115200);
  while(!Serial);
  Serial.printf("Arduino Pico Version: v%s\n", ARDUINO_PICO_VERSION_STR );
  Serial.printf("LED Pin: %u\n", LED_PIN );
  pinMode( LED_PIN, OUTPUT ); 
}

void loop() {
  static int state = 0;
  Serial.println("Hello Pico 2 W!");
  digitalWrite( LED_PIN, state ^= 1 );
  delay(1000);
}

หากเริ่มต้นใช้งานครั้งแรก จะต้องทำให้บอร์ด Pico 2 / Pico 2 W เข้าสู่โหมด Bootloader โดยการกดปุ่ม BOOTSEL ค้างไว้ แล้วเชื่อมต่อกับพอร์ต USB ของคอมพิวเตอร์ จากนั้นจะมองเห็น Flash Drive ที่มีชื่อว่า RP2350

รูป: การเลือกพอร์ตสำหรับอัปโหลด โดยใช้วิธี UF2 Board

รูป: การอัปโหลดเฟิร์มแวร์ไปยังบอร์ด Pico 2 W ได้สำเร็จ โดยใช้วิธี UF2

เมื่อทำขั้นตอน Build และ Upload ไปยังบอร์ด Pico 2 ได้แล้ว จะเห็นว่า LED บนบอร์ดจะกระพริบ และมองเห็นว่า มีพอร์ตอนุกรม (Serial) แทนที่พอร์ต UF2

รูป: การเลือกพอร์ตอนุกรม (Serial Port) เพื่อเชื่อมต่อกับบอร์ด Pico 2 และรับข้อความจากบอร์ด

รูป: ตัวอย่างข้อความจากบอร์ด Pico 2 W ที่ได้รับโดยเปิดใช้งาน Arduino Serial Monitor

เมื่อมองเห็นพอร์ตอนุกรมของบอร์ด Pico 2 แล้ว การอัปโหลดเฟิร์มแวร์ในครั้งถัดไป ก็ไม่จำเป็นต้องใช้วิธี UF2 แต่ใช้ช่องทางพอร์ตอนุกรม (USB CDC) แทน ทำให้สะดวกในการฝึกเขียนโปรแกรม

 


แหล่งจ่ายไฟเลี้ยงสำหรับบอร์ด Pico 2 / Pico 2 W#

โดยปรกติแล้ว บอร์ด Pico 2 W ได้รับแรงดันไฟเลี้ยงจากคอนเนกเตอร์ Micro USB หรือจากขา VBUS แต่ผู้ใช้สามารถใช้แรงดันไฟเลี้ยงจากภายนอกได้ โดยต่อเข้าที่ขา VSYS

รูป: การใช้แหล่งจ่ายไฟเลี้ยงภายนอกโดยนำมาต่อเข้าที่ขา VSYS ผ่านไดโอด Schottky หรืออีกทางเลือกหนึ่งคือ การใช้ไอซีทรานซิสเตอร์แบบ P-MOSFET มาต่อเพิ่ม

ในกรณีที่ใช้ทรานซิสเตอร์แบบ P-MOSFET สำหรับแหล่งจ่ายภายนอก (ไม่เกิน 5.5V) หากมีแรงดันไฟเลี้ยงที่ขา VBUS ประมาณ 5V จะทำให้ P-MOSFET ไม่ทำงาน แต่ถ้า VBUS=0V จะทำให้ และ P-MOSFET ทำงานและจ่ายไฟเลี้ยงไปยังขา VSYS


กล่าวสรุป#

ชิป RP253x เป็นชิปไมโครคอนโทรลเลอร์ที่มีราคาไม่แพง และมีประสิทธิภาพ หรือความสามารถในการประมวลผลสูงกว่าชิป RP2040 รุ่นก่อน เช่น หากใช้คำสั่งสำหรับคำนวณเลขทศนิยม หรือ Floating-point ก็จะทำได้เร็วกว่า เนื่องจากมีวงจร FPU (Floating-point Unit) อยู่ภายในชิป และชิป RP253x ก็มีซีพียูภายใน 2 ชุด ทำงานร่วมกันได้ เป็นตัวอย่างการประมวลผลระดับฮาร์ดแวร์แบบขนานกัน (Parallel Processing)

แหล่งข้อมูลอ้างอิง

 


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Created: 2024-09-07 | Last Updated: 2024-11-29