FRM-201 · Firmware & MCU

I2C, SPI & CAN Protocol Firmware

Implementing and debugging the buses embedded systems communicate over, from the firmware side.

Practitioner 3 days in person6 half-days online Max 14 in person

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

FRM-101-level bare-metal CBasic digital electronics: you can read a timing diagramLab boards and logic analysers are provided

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

  1. 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
  2. Lab: inject NACK, clock-stretch and stuck-bus faults into your I2C link and implement recovery for each
  3. Lab: drive an SPI peripheral in each mode, capture the waveforms, and diagnose a deliberately mis-configured mode/polarity combination
  4. Lab: move an SPI transfer path from polling to DMA and measure CPU load and throughput before and after
  5. 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

DatesWhereSeatsEarly birdRegular
22 Nov – 24 Nov 20263 full days RiyadhIn person · KAFD Conference Centre 4 of 14 SAR 7,090until 23 OctSAR 7,880
29 Nov – 1 Dec 20263 full days Kuwait CityIn person · Al Hamra Tower 9 of 14 KWD 580until 30 OctKWD 650
29 Nov – 1 Dec 20263 full days MuscatIn person · Knowledge Oasis Muscat 4 of 14 OMR 730until 30 OctOMR 810
6 Dec – 13 Dec 20266 half-days Gulf bandLive online · 09:00–13:00 GMT+3 10 of 20 US$1,350until 6 NovUS$1,500
7 Dec – 9 Dec 20263 full days OttawaIn person · Kanata North Tech Park 9 of 14 CAD 2,570until 7 NovCAD 2,860
7 Dec – 14 Dec 20266 half-days Europe bandLive online · 09:00–13:00 CET 15 of 20 US$1,350until 7 NovUS$1,500
14 Dec – 16 Dec 20263 full days TorontoIn person · MaRS Discovery District 4 of 14 CAD 2,570until 14 NovCAD 2,860
14 Dec – 16 Dec 20263 full days LondonIn person · Shoreditch Works 9 of 14 GBP 1,480until 14 NovGBP 1,640
14 Dec – 21 Dec 20266 half-days Americas bandLive online · 13:00–17:00 ET 4 of 20 US$1,350until 14 NovUS$1,500
21 Dec – 23 Dec 20263 full days BerlinIn person · Factory Görlitzer Park 4 of 14 EUR 1,740until 21 NovEUR 1,930

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