Week4 - Group Assignment
Task of group assignemnt
Demonstrate and compare the toolchains and development workflows for available embedded architectures
Which microcontroller should I choose?
We asked Deepseek for recommanded Microcontroller.
We need to choose a main chip that has Wi-Fi, a camera, and a display.
We got the following recommanations:
- ESP32-S3
- ESP32-CAM
- Raspberry Pi Pico W
- Raspberry Pi Zero2 W
- ESP32-S2
- ESP-EYE
- NVIDIA Jetson Nano
- STM32H747I-DISCO
Some of the Microcontrollers are sold by Seeed Studio, I will find the XIAO series.
Specification of Seeed Studio XIAO series
I asked Deepseek to help me find out all the specfications of Seeed Studio XIAO series, with the following propmt.
Help me list the specs of all the boards in the Seeed Studio XIAO series, including cpu frequency, ram flash size, etc. Present it in table form
Here’s a table summarizing the specifications of the boards in the Seeed Studio XIAO series, including CPU frequency, RAM, flash size, and other key features:
Model | CPU | CPU Frequency | RAM | Flash Size | Wireless | GPIO | Analog Inputs | USB Interface | Other Features |
---|---|---|---|---|---|---|---|---|---|
XIAO SAMD21 | ARM Cortex-M0+ (SAMD21) | 48 MHz | 32 KB | 256 KB | None | 14 | 11 | USB-C | I2C, SPI, UART, DAC |
XIAO nRF52840 | ARM Cortex-M4 (nRF52840) | 64 MHz | 256 KB | 1 MB | Bluetooth 5.0 | 14 | 6 | USB-C | BLE, NFC, I2C, SPI, UART |
XIAO RP2040 | Dual-core ARM Cortex-M0+ (RP2040) | 133 MHz | 264 KB | 2 MB | None | 11 | 4 | USB-C | PIO, I2C, SPI, UART, PWM |
XIAO ESP32C3 | RISC-V (ESP32-C3) | 160 MHz | 400 KB | 4 MB | Wi-Fi, BLE 5.0 | 11 | 4 | USB-C | Wi-Fi, BLE, I2C, SPI, UART |
XIAO ESP32S3 | Xtensa Dual-Core (ESP32-S3) | 240 MHz | 512 KB | 8 MB | Wi-Fi, BLE 5.0 | 14 | 9 | USB-C | Wi-Fi, BLE, I2C, SPI, UART, Camera I/F |
XIAO BLE Sense | ARM Cortex-M4 (nRF52840) | 64 MHz | 256 KB | 1 MB | Bluetooth 5.0 | 14 | 6 | USB-C | BLE, NFC, I2C, SPI, UART, IMU, PDM Mic |
XIAO BLE Sense (nRF52840) | ARM Cortex-M4 (nRF52840) | 64 MHz | 256 KB | 1 MB | Bluetooth 5.0 | 14 | 6 | USB-C | BLE, NFC, I2C, SPI, UART, IMU, PDM Mic |
XIAO BLE Sense (ESP32C3) | RISC-V (ESP32-C3) | 160 MHz | 400 KB | 4 MB | Wi-Fi, BLE 5.0 | 11 | 4 | USB-C | Wi-Fi, BLE, I2C, SPI, UART, IMU, PDM Mic |
Notes:
- GPIO: The number of general-purpose input/output pins available.
- Analog Inputs: The number of analog input pins.
- USB Interface: All XIAO boards feature a USB-C connector.
- Wireless: Includes Wi-Fi, Bluetooth, or BLE capabilities where applicable.
- Other Features: Additional peripherals or interfaces like I2C, SPI, UART, DAC, PIO, etc.
Then, we choose RP2040 & ESP32C3 as our chooses for whole of our Fab Academy journey.
About RP2040
Here's the datasheets and documentations about RP2040 Microcontroller.
The Specifcation:
-
Dual ARM Cortex-M0+ @ 133MHz
-
264kB on-chip SRAM in six independent banks
-
Support for up to 16MB of off-chip Flash memory via dedicated QSPI bus
-
DMA controller
-
Fully-connected AHB crossbar
-
Interpolator and integer divider peripherals
-
On-chip programmable LDO to generate core voltage
-
2 on-chip PLLs to generate USB and core clocks
-
30 GPIO pins, 4 of which can be used as analogue inputs
-
Peripherals
-
2 UARTs
-
2 SPI controllers
-
2 I2C controllers
-
16 PWM channels
-
USB 1.1 controller and PHY, with host and device support
-
8 PIO state machines
-
RP2040 has a dual M0+ processor cores, DMA, internal memory and peripheral blocks connected via AHB/APB bus fabric.
- Code may be executed directly from external memory through a dedicated SPI, DSPI or QSPI interface. A small cache improves performance for typical applications.
- Debug is available via the SWD interface.
- Internal SRAM is arranged in banks which can contain code or data and is accessed via dedicated AHB bus fabric connections, allowing bus masters to access separate bus slaves without being stalled.
- DMA bus masters are available to offload repetitive data transfer tasks from the processors.
- GPIO pins can be driven directly, or from a variety of dedicated logic functions.
- Dedicated hardware for fixed functions such as SPI, I2C, UART.
- Flexible configurable PIO controllers can be used to provide a wide variety of IO functions.
- A USB controller with embedded PHY can be used to provide FS/LS Host or Device connectivity under software control.
- Four ADC inputs which are shared with GPIO pins.
- Two PLLs to provide a fixed 48MHz clock for USB or ADC, and a flexible system clock up to 133MHz.
- An internal Voltage Regulator to supply the core voltage so the end product only needs supply the IO voltage.
About RISC-V Microcontroller (ESP32-C3)
Here's the datasheets and documentations about ESP32-C3 Microcontroller.
The Specification:
- Low-power SoC equipped with RISC-V 32-bit single-core processor, up to 160MHz main frequency
- Supports 2.4GHz Wi-Fi (802.11 b/g/n) and Bluetooth® 5 (LE)
- 400KB of SRAM and 384KB ROM, and 4MB of onboard Flash memory
- Castellated module and onboard ceramic antenna, allows soldering direct to carrier boards
- Supports flexible clock, module power supply independent setting, and other controls to realize low power consumption in different scenarios
- Integrated with USB serial port full-speed controller, 15 × GPIO pins allows flexibly configuring pin functions
- 3 × SPI, 1 × I2C, 2 × UART, 1 × I2S, 2 × ADC, etc.
Comparion
Item | Processor | Wireless Connectivity | Memory | Interfaces | PWM/Analog Pins | Onboard Buttons | Onboard LEDS | Battery Charge Chip | Programming Languages |
---|---|---|---|---|---|---|---|---|---|
Seeed Studio XIAO ESP32C3 | ESP32-C3 32-bit RISC-V @160MHz | WiFi and Bluetooth 5 (BLE) | 400KB SRAM, 4MB onboard Flash | I2C/UART/SPI | 11/4 | Reset/ Boot Button | Charge LED | Built-in | Arduino/MicroPython |
Seeed Studio RP2040 | RP2040 Dual-core M0+@133Mhz | N/A | 264KB SRAM 2MB onboard Flash | I2C/UART/SPI | 11/4 | Reset/ Boot Button | Full-color RGB/ 3-in-one LED | N/A | Arduino/ MicroPython/ CircuitPython |
In Processor, ESP32C3 is faster than RP2040. In memory, memory of ESP32C3 is larger than RP2040's. They can be also programmed with Arduino, MicroPython. We will compare the toolchains with Arduino & MicroPython.
Then, we compare the toolchains and development workflows for available embedded architectures.