Embedded Hardware Interfaces
Embedded hardware interfaces are the wiring-level protocols, such as GPIO, UART, I2C, SPI, and CAN, that a microcontroller uses to talk to sensors, displays, and other chips on the same circuit board.
itComputer architecture and hardware | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Intro
Embedded Hardware Interfaces
What they are
Embedded hardware interfaces are the wired protocols a microcontroller or system-on-chip uses to talk to the other chips sitting on the same board: a temperature sensor, a display, a memory chip, a motor driver. Each interface defines the physical wiring, the electrical signaling, and the rules for exchanging bits over those wires. Six interfaces cover almost everything you'll encounter: GPIO, UART, I2C, SPI, PWM, and the analog-to-digital converter (ADC). A seventh, CAN, shows up specifically when many nodes share one bus, as in a car or an industrial machine.
These are short-distance, board-level connections, typically centimeters of trace or a short cable, not the wireless or networked links that carry data off the board entirely.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.nxp.com/docs/en/user-guide/UM10204.pdf
Supports
- SDA/SCL two-wire bus, open-drain signaling requiring pull-up resistors
- 7-bit and 10-bit device addressing
- Standard-mode (100 kbit/s), Fast-mode (400 kbit/s), Fast-mode Plus (1 Mbit/s), High-speed mode (3.4 Mbit/s), and unidirectional Ultra Fast-mode (5 Mbit/s)
- Quiz answers on pull-up purpose and speed-mode ordering
- https://docs.kernel.org/driver-api/spi.html
Supports
- SPI as a synchronous four-wire link (SCK, MOSI, MISO, chip-select) with no formal standards body
- Host/target (master/slave) roles and full-duplex operation
- Absence of device addressing; one chip-select line required per device
- CPOL/CPHA clock polarity and phase defining SPI's four clock modes
- Typical SPI use cases: sensors, memory, displays, ADC/DAC, SD/MMC cards, BIOS flash
- Typical SPI clock speed (~10 MHz) cited in the cheatsheet
- Quiz answers on SPI wiring cost and clock-mode mismatch
- https://docs.arduino.cc/learn/communication/uart/
Supports
- UART as asynchronous, point-to-point serial communication over TX/RX with no shared clock line
- Byte framing: start bit, data bits, optional parity bit, stop bit(s)
- Requirement that both ends agree on baud rate in advance
- Typical UART use cases: debugging, logging, connecting peripheral modules
- Quiz answer on why baud rate must be pre-agreed
- https://docs.kernel.org/driver-api/gpio/intro.html
Supports
- Definition of GPIO as a flexible, software-controlled digital signal
- GPIO use cases: driving indicators, reading switches, bit-banging serial protocols
- Open-drain/open-source signaling concept and its role in shared-bus protocols like I2C
- Quiz answers on GPIO's basic function and the bit-banging technique
- https://docs.kernel.org/userspace-api/gpio/chardev.html
Supports
- GPIO character device model (/dev/gpiochipN, line offsets)
- Line request/read/write operations underlying gpiodetect, gpioinfo, gpioget, gpioset
- Practice-reference GPIO command usage
- https://docs.kernel.org/i2c/dev-interface.html
Supports
- I2C userspace device file naming (/dev/i2c-N)
- i2c-tools utilities (i2cdetect, i2cget, i2cset, i2cdump) and their purposes
- I2C_SLAVE ioctl addressing (7-bit vs. 10-bit)
- Practice-reference I2C command usage
- https://docs.kernel.org/driver-api/pwm.html
Supports
- PWM defined by period and duty cycle
- Typical PWM use cases: LED dimming, fan speed control, haptic feedback
- Quiz answer on what duty cycle controls
- https://docs.espressif.com/projects/arduino-esp32/en/latest/api/adc.html
Supports
- ADC definition and purpose (converting analog voltage to digital form)
- Resolution in bits and corresponding output value ranges (e.g., 12-bit default, 0-4095)
- Attenuation settings extending measurable input voltage range
- Distinction between raw and calibrated (millivolt) readings
- Quiz answer on ADC resolution vs. measurable range
- https://docs.arduino.cc/language-reference/en/functions/analog-io/analogRead/
Supports
- analogRead() returning a value proportional to input voltage
- Classic AVR-based Arduino ADC resolution (10-bit, 0-1023 range)
- Quiz answer on ADC resolution vs. measurable range
- https://www.tekeye.uk/downloads/can2spec.pdf
Supports
- CAN differential signaling (CAN_H/CAN_L)
- Multi-master bus architecture
- Non-destructive arbitration by dominant/recessive bits, lowest identifier wins
- Standard (11-bit) vs. extended (29-bit) frame identifiers (CAN 2.0A/2.0B)
- Classic CAN maximum bit rate of 1 Mbit/s, cited in the cheatsheet
- Quiz answers on CAN arbitration and identifier priority
- https://www.raspberrypi.com/documentation/computers/raspberry-pi.html
Supports
- 40-pin GPIO header present on standard Raspberry Pi boards
- 3.3V GPIO I/O level
- I2C, SPI, and UART listed among the board's hardware communication interfaces
