Product description
Adafruit’s compact ItsyBitsy development board is now available with the Raspberry Pi RP2040 chip. The board features 8 MB SPI Flash and 264 kB SRAM, providing ample space for libraries and larger codebases.
The RP2040 is a fast dual-core ARM Cortex-M0+ running at approximately 125 MHz on this board.
Features:
- Dimensions: 36 × 18 × 4 mm (same as other ItsyBitsy boards)
- RP2040 – 32-bit dual-core Cortex-M0+ at ~125 MHz
- 3.3 V logic and operating voltage
- 264 kB RAM
- 8 MB SPI Flash (no EEPROM)
- 23 GPIO pins with support for:
- 4 × 12-bit ADC (one more than the Raspberry Pi Pico)
- 2 × I2C, 2 × SPI, 2 × UART
- 16 × PWM outputs (for servos, LEDs, etc.)
- 10 GPIO without ADC/serial grouped together for optimal PIO usage
- Red status LED on pin #11
- Onboard NeoPixel (can be fully powered down to save energy)
- Dedicated reset and bootloader buttons for easy programming
- 3.3 V regulator, up to 500 mA (short bursts)
- Power enable pin
- Powered via USB or external supply
- SWD pins for debugging
- 12 MHz crystal for accurate timing
- Vhigh pin outputs the higher of VBAT or VUSB for powering LEDs, servos, etc.
- D5 (!) includes level shifting for 5 V logic compatibility
- Micro USB connector
About PIO:
The RP2040 includes two Programmable I/O (PIO) blocks, with a total of eight state machines, designed to offload the CPU. PIO can monitor pins and process signals independently of the processor.
At high clock speeds (up to 133 MHz), serial communication with older or slower peripherals can become inefficient. PIO handles this by processing data while the CPU continues its tasks. It’s especially useful for obscure protocols or displays that require "bit-banging"—generating signal patterns without interpreting the protocol.
- Access to all GPIO pins
- Operating frequency: 2 kHz – 133 MHz
- Pin read/write, FIFO handling, clock counting in one cycle
- Examples: clock generation, servo control, LED dimming
PIO is programmed using pioasm, a compact assembly-like language with only nine instructions. It’s a great way to get started with low-level programming in a well-defined and well-documented environment.