FRM-201 · Firmware & MCU
I2C, SPI & CAN Protocol Firmware
Implementing and debugging the buses embedded systems communicate over, from the firmware side.
Who this course is for
Firmware engineers responsible for the buses an embedded product talks over — I2C and SPI on the board, CAN across the machine — who need them to work and to fail gracefully.
Prerequisites
Course outline
Day 1 — I2C
- Open-drain signalling, pull-up sizing and rise time: the physics under the protocol
- Start/stop, addressing, ACK/NACK and repeated start
- Clock stretching: slaves that need it and masters that mishandle it
- Implementing master and slave firmware, polled and interrupt-driven
- Stuck-bus detection and recovery: nine clocks and a clean reset
Day 2 — SPI
- Modes 0–3, clock polarity and phase, and the mode-mismatch signature
- Chip-select behaviour, framing and daisy chains
- Full-duplex reality: what shifts in while you shift out
- DMA-driven transfers: descriptor setup and the throughput ceiling
- Multi-slave topologies and signal integrity at speed
Day 3 — CAN and CAN FD
- Dominant/recessive signalling, bit timing and the sample point
- CSMA/CR arbitration: why the lowest ID wins and what that does to latency
- Acceptance filtering, masks and reducing ISR load
- Error frames, error counters, bus-off and fault confinement
- CAN FD: the second bit rate, longer payloads and arbitration-phase limits
Hands-on labs
Labs follow the academy model — 35% principles, 20% guided investigation, 45% engineering studio. Every claim you make in a lab is backed by a trace, a counter or a measurement you captured yourself. How we teach
- Lab: bring up I2C master and slave firmware on two boards and decode the traffic on a logic analyser before trusting the analyser's decoder
- Lab: inject NACK, clock-stretch and stuck-bus faults into your I2C link and implement recovery for each
- Lab: drive an SPI peripheral in each mode, capture the waveforms, and diagnose a deliberately mis-configured mode/polarity combination
- Lab: move an SPI transfer path from polling to DMA and measure CPU load and throughput before and after
- Lab: build a two-node CAN exchange, force arbitration collisions, inject errors up to bus-off, and implement and demonstrate recovery
This course uses lab hardware. In-person cohorts get boards on the desk; online cohorts get remote board access over SSH and JTAG.
Capstone project
Implement a three-bus firmware subsystem: an I2C sensor network, a DMA-driven SPI peripheral and a CAN node with a documented message plan and worst-case latency budget — each with fault injection and recovery logic. The evidence is your logic-analyser captures, the fault logs, the recovery state machines and a bus-load calculation showing the design margin.
What you leave with
- Working master and slave I2C firmware, including clock-stretch and stuck-bus recovery
- SPI mode, framing and DMA-transfer skills proven on a logic analyser
- CAN/CAN FD arbitration, filtering and fault-confinement fluency
- A bus-debugging routine: capture, decode by hand, fault-inject, recover
- Documented recovery state machines reusable in production firmware
How it runs
Every course follows the same model: 35% principles, 20% guided investigation, 45% engineering studio. You leave with working code, raw measurements and an evidence-based report — not a certificate of attendance. Read the methodology or see a full sample lesson.
Material is adapted to your kernel version, hardware and workload before a private delivery. For public cohorts, the environment is provided and configured.
Questions
Who is this course for?
Firmware engineers responsible for the buses an embedded product talks over — I2C and SPI on the board, CAN across the machine — who need them to work and to fail gracefully. It sits at practitioner level within the Firmware & MCU track.
What do I need to know already?
Specific prerequisites for this course: FRM-101-level bare-metal C; Basic digital electronics: you can read a timing diagram; Lab boards and logic analysers are provided. We confirm levels before the cohort starts and adapt if a group is stronger or weaker than expected.
Can this run privately for my team?
Yes. Any course runs on-site at your offices anywhere, or live online for a distributed team, with labs adapted to your hardware and codebase.
What is the difference between in-person and online?
In person is 3 full days with hardware on your desk, capped at 14. Online is 6 half-day sessions across about two weeks so you can keep working, capped at 20, with remote lab access.
Do you invoice companies?
Yes. Purchase orders are accepted and invoicing is available in USD, EUR, GBP, SAR and CAD.
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 22 Nov – 24 Nov 20263 full days | RiyadhIn person · KAFD Conference Centre | 4 of 14 | SAR 7,090until 23 Oct | ||
| 29 Nov – 1 Dec 20263 full days | Kuwait CityIn person · Al Hamra Tower | 9 of 14 | KWD 580until 30 Oct | ||
| 29 Nov – 1 Dec 20263 full days | MuscatIn person · Knowledge Oasis Muscat | 4 of 14 | OMR 730until 30 Oct | ||
| 6 Dec – 13 Dec 20266 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 10 of 20 | US$1,350until 6 Nov | ||
| 7 Dec – 9 Dec 20263 full days | OttawaIn person · Kanata North Tech Park | 9 of 14 | CAD 2,570until 7 Nov | ||
| 7 Dec – 14 Dec 20266 half-days | Europe bandLive online · 09:00–13:00 CET | 15 of 20 | US$1,350until 7 Nov | ||
| 14 Dec – 16 Dec 20263 full days | TorontoIn person · MaRS Discovery District | 4 of 14 | CAD 2,570until 14 Nov | ||
| 14 Dec – 16 Dec 20263 full days | LondonIn person · Shoreditch Works | 9 of 14 | GBP 1,480until 14 Nov | ||
| 14 Dec – 21 Dec 20266 half-days | Americas bandLive online · 13:00–17:00 ET | 4 of 20 | US$1,350until 14 Nov | ||
| 21 Dec – 23 Dec 20263 full days | BerlinIn person · Factory Görlitzer Park | 4 of 14 | EUR 1,740until 21 Nov |
Dates shown for the next few months. If nothing fits, tell us where and when — cohorts are added on demand, and private delivery can be scheduled any week.
More in Firmware & MCU
FRM-1013 days
Bare-Metal C for Microcontrollers
Writing firmware with no operating system underneath: startup, linker scripts, peripherals and interrupts.
Practitioner-taught
SAR 6,750Next 1 Nov
FRM-1103 days
RTOS Fundamentals: Zephyr & FreeRTOS
Task scheduling, synchronisation and driver models in a small real-time operating system.
Practitioner-taught
SAR 7,880Next 11 Oct
FRM-1203 days
Bootloaders & Firmware Update
Updating firmware in the field without bricking devices, including signature verification and rollback.
Practitioner-taught
SAR 7,880Next 15 Nov
FRM-2103 days
CMIS & Optical Module Firmware
Firmware for pluggable optical modules: the CMIS management interface and the state machines behind it.
Practitioner-taught
SAR 9,000Next 1 Nov