0
0
Embedded Cprogramming~20 mins

I2C vs SPI decision matrix in Embedded C - Practice Questions

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
I2C vs SPI Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
1:30remaining
I2C vs SPI: Which bus speed is faster?
Consider the following code snippets initializing I2C and SPI buses with typical speeds. What is the output when comparing their speeds?
Embedded C
#include <stdio.h>

int main() {
    int i2c_speed = 400000; // 400 kHz
    int spi_speed = 10000000; // 10 MHz

    if (spi_speed > i2c_speed) {
        printf("SPI is faster\n");
    } else {
        printf("I2C is faster\n");
    }
    return 0;
}
ASPI is faster
BI2C is faster
CBoth have the same speed
DCompilation error
Attempts:
2 left
💡 Hint
Compare the numeric values of spi_speed and i2c_speed.
🧠 Conceptual
intermediate
1:00remaining
I2C vs SPI: Number of wires used
Which option correctly states the number of wires used by I2C and SPI respectively?
AI2C uses 3 wires; SPI uses 3 wires
BI2C uses 2 wires; SPI uses 4 or more wires
CI2C uses 4 wires; SPI uses 2 wires
DI2C uses 1 wire; SPI uses 2 wires
Attempts:
2 left
💡 Hint
Recall that I2C uses SDA and SCL lines.
Predict Output
advanced
2:00remaining
SPI data transfer behavior
What is the output of this SPI data transfer simulation code?
Embedded C
#include <stdio.h>

int main() {
    unsigned char master_tx = 0xA5; // Master sends 0xA5
    unsigned char slave_tx = 0x3C;  // Slave sends 0x3C
    unsigned char master_rx = slave_tx; // Master receives slave data
    unsigned char slave_rx = master_tx; // Slave receives master data

    printf("Master received: 0x%X\n", master_rx);
    printf("Slave received: 0x%X\n", slave_rx);
    return 0;
}
A
Master received: 0xA5
Slave received: 0x3C
BCompilation error
C
Master received: 0x00
Slave received: 0x00
D
Master received: 0x3C
Slave received: 0xA5
Attempts:
2 left
💡 Hint
SPI is full-duplex: master and slave exchange data simultaneously.
🧠 Conceptual
advanced
1:30remaining
I2C addressing modes
Which statement correctly describes I2C addressing modes?
AI2C supports 7-bit and 10-bit addressing modes
BI2C supports only 8-bit addressing mode
CI2C supports 4-bit and 8-bit addressing modes
DI2C supports only 16-bit addressing mode
Attempts:
2 left
💡 Hint
Think about how many bits are used to identify devices on the bus.
🚀 Application
expert
3:00remaining
Choosing between I2C and SPI for a sensor array
You have a sensor array with 8 identical sensors that need to send data to a microcontroller. The sensors require moderate speed and minimal wiring complexity. Which bus would be the best choice and why?
ASPI, because it supports longer cable lengths and fewer devices
BSPI, because it uses fewer wires and supports multiple devices without addressing
CI2C, because it uses only two wires and supports multiple devices with unique addresses
DI2C, because it requires a separate chip select line for each device
Attempts:
2 left
💡 Hint
Consider wiring complexity and device addressing for multiple sensors.