Hands-On Embedded Systems: A Progressive Lab Series from Microcontroller Foundations to SoC Protocol Mastery
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 | Title | Description |
|---|---|---|
| 1 | MPLAB® X IDE Code Setup & Project Creation | Build, run, debug and tips & tricks. |
| 2 | Datasheet Exploration & GPIO Basics | Pin mapping, I²C1 pins, analog vs digital. |
| 3 | LED Toggle with Software Delay | Busy‑wait timing; limitations. |
| 4 | Clock System Configuration | Internal vs external source; impact on SysTick & UART. |
| 5 | LED Toggle with Timer Module | Precise hardware timing. |
| 6 | Switch Input via GPIO | Debouncing and state indication. |
| 7 | UART Polling Mode | TX/RX, baud config, echo. |
| 8 | UART Interrupt Mode | TX “STRING”, ISR‑driven I/O, NVIC basics. |
| 9 | Timer Interrupt | 500 ms periodic ISR toggling. |
| 10 | SysTick | SysTick Timer to calculate execution time of an operation. |
| 11 | Memory Map Exploration | Code/SRAM/peripheral/SCS via debugger. |
| 12 | DMA Demonstration | Memory ↔ memory or peripheral‑assisted transfer (intro). |
| 13 | Cooperative Scheduler | SysTick‑driven multi‑task loop (LED/UART/ADC). |
| 14 | Secure vs Non-Secure Zone Demo | Access 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.