Hands-On Embedded Systems: A Progressive Lab Series from Microcontroller Foundations to SoC Protocol Mastery

Last modified by Microchip on 2026/06/26 07:30

Explore real-world embedded development through structured labs on ARM® Cortex®-M, GPIO, UART, SPI, I²C, DMA, and TrustZone.

This two-semester lab series is designed to guide students from the fundamentals of 32-bit microcontrollers to advanced SoC communication protocols and performance features. Starting with GPIO, timers, UART, and interrupts in the initial semester, students build a strong foundation in embedded systems. In the subsequent semester, they advance into SPI and I²C protocols, ADC/DAC interfacing, DMA-based data transfers, and secure firmware design using TrustZone.

Each lab is carefully sequenced to reinforce theoretical modules, encourage datasheet and TRM exploration, and develop industry-relevant skills through hands-on experimentation, waveform validation, and modular code development.

Who is this for?

Undergraduates who have completed introductory embedded systems coursework and want practical, register-level mastery of 32-bit microcontrollers and SoC interfaces.

Hardware/Tools (used across both subjects):

  • PIC32CM LS00 Curiosity Nano+ Touch Evaluation Kit (EV41C56A)
  • Curiosity Nano Explorer (EV58G97A)
  • Logic Analyzer (e.g., Saleae Logic)
  • MPLAB® X IDE, XC32 compiler; optional: MPLAB® Data Visualizer, MCC

Subject 1 (Initial Semester)

Introductory Microcontrollers (32-bit)

Focus: ARM® Cortex®‑M23 architecture, memory model, GPIO/clock/UART, interrupts, SysTick, and TrustZone concepts.

Total Module Hours: ~18 Hrs

Concepts Covered

  • Module 1: ARM® Cortex®‑M23 / ARM®v8‑M Architecture (8 hr)
    Data flow model, programmer’s model (registers and usage), memory organization (code, SRAM, peripherals, SCS), secure vs non‑secure execution, DMA concept, timers (1–2 ms configs), and interrupts/NVIC overview.

  • Module 2: GPIO, Clock, and UART Interfacing (10 hr)
    GPIO modes (analog/digital/AF), PIC32CM LSx clock system (oscillators, PLL, peripheral clocking), UART concepts (baud, framing, sync, pins, FIFOs, error handling), and register‑level configuration.
Lab TitleDescription
1MPLAB® X IDE Code Setup & Project CreationBuild, run, debug and tips & tricks.
2Datasheet Exploration & GPIO BasicsPin mapping, I²C1 pins, analog vs digital.
3LED Toggle with Software DelayBusy‑wait timing; limitations.
4Clock System ConfigurationInternal vs external source; impact on SysTick & UART.
5LED Toggle with Timer ModulePrecise hardware timing.
6Switch Input via GPIODebouncing and state indication.
7UART Polling Mode

TX/RX, baud config, echo.

8UART Interrupt ModeTX “STRING”, ISR‑driven I/O, NVIC basics.
9Timer Interrupt500 ms periodic ISR toggling.
10SysTick SysTick Timer to calculate execution time of an operation.
11Memory Map Exploration

Code/SRAM/peripheral/SCS via debugger.

12DMA DemonstrationMemory ↔ memory or peripheral‑assisted transfer (intro).
13Cooperative SchedulerSysTick‑driven multi‑task loop (LED/UART/ADC).
14Secure vs Non-Secure Zone DemoAccess control & violations.

Outcomes:

Students become confident in reading TRMs/datasheets, configuring GPIO/clock/UART/timers, writing interrupt‑driven code, understanding memory maps, and building a cooperative scheduler—a foundation for advanced SoC communication.