0% found this document useful (0 votes)
9 views

IOT lecture7-serial-spi-and-i2c

The document discusses SPI and I2C communication protocols used in wireless embedded systems. It outlines the advantages and disadvantages of each protocol, detailing how SPI allows fast point-to-point connections while I2C enables multiple devices to connect with only two wires. Key concepts such as clock modes, data transfer, and master-slave relationships are explained for both protocols.

Uploaded by

Ramdas Hansda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

IOT lecture7-serial-spi-and-i2c

The document discusses SPI and I2C communication protocols used in wireless embedded systems. It outlines the advantages and disadvantages of each protocol, detailing how SPI allows fast point-to-point connections while I2C enables multiple devices to connect with only two wires. Key concepts such as clock modes, data transfer, and master-slave relationships are explained for both protocols.

Uploaded by

Ramdas Hansda
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

CSE190 Winter 2020

SPI and I2C

Wireless Embedded Systems


SPI
Communication

2
Four clocking “modes”
•Two phases
•Two polarities

SPI Master and selected slave must


be in the same mode

clocking:
there is no During transfers with slaves A
and B, Master must

“standard •Configure clock to Slave A’s clock mode


•Select Slave A
•Do transfer
•Deselect Slave A Master reconfigures clock mode
•Configure clock to Slave B’s clock mode on-the-fly!

way” •Select Slave B


•Do transfer
•Deselect Slave B

7
SPI timing
diagram

5
SPI Pros and Cons
• Pros:
– Fast and easy
• Fast for point-to-point connections
• Easily allows streaming/Constant data inflow
• No addressing/Simple to implement
– Everyone supports it

• Cons:
– SS makes multiple slaves very complicated
– No acknowledgement ability
– No inherent arbitration
– No flow control
5
Communication with the
accelerometer
• Read acceleration values and configure
interrupts
I2C bus (in
Pros
our
• Two wires bus that can connect multiple
projects) peripherals with the MCU

Cons

• Overhead is significantly higher, and bus


is slower
I2C Details

• Two lines
– Serial data line (SDA)
– Serial clock line (SCL)

• Only two wires for connecting


multiple devices
Each I2C device recognized by a
unique address

Each I2C device can be either a


transmitter or receiver
I2C I2C devices can be masters or
Details slaves for a data transfer
• Master (usually a microcontroller):
Initiates a data transfer on the bus,
generates the clock signals to permit
that transfer, and terminates the
transfer
• Slave: Any device addressed by the
master at that time
How can any device
transfer or receive on the same two wires?

• Pull ups and high-impedance


mode pins
– Wires default to being “on”,
any device can
make a wire go “off”.
– This is super clever. SPI and
UART can’t do this, why?
Bit Transfer on the I2C Bus
• In normal data transfer, the data line only changes state
when the clock is low

SDA

SCL
Data line stable; Change
Data valid of data
allowed

10 of 40
Start and Stop Conditions
• A transition of the data line while
the clock line is high is defined as
either a start or a stop condition.
• Both start and stop conditions are
generated by the bus master
• The bus is considered busy after a SD SD
start condition, until a stop A A

condition occurs SCL SCL

Start Stop
Conditio Condition
n

11 of 40
2
IC Addressing

• Each node has a unique 7 (or 10) bit address

• Peripherals often have fixed and programmable address


portions

• Addresses starting with 0000 or 1111 have special functions:-


– 0000000 Is a General Call Address
– 0000001 Is a Null (CBUS) Address
– 1111XXX Address Extension
– 1111111 Address Extension – Next Bytes are the Actual
Address

12 of 40
I2C-Connected
System
• Example I2C-connected
system with two
microcontrollers
• (Source: I2C
Specification, Philips)
Who is the master?

• master-transmitters
• master-receivers

Suppose microcontroller A wants to send


information to microcontroller B
• A (master) addresses B (slave)
Master-Slave • A (master-transmitter), sends data to B (slave-receiver)
• A terminates the transfer.
Relationships If microcontroller A wants to receive information
from microcontroller B
• A (master) addresses microcontroller B (slave)
• A (master-receiver) receives data from B (slave-
transmitter)
• A terminates the transfer

In both cases, the master (microcontroller A)


generates the timing and terminates the transfer
Exercise: How fast can I2C run?
• How fast can you run it?
• Assumptions
– 0’s are driven
– 1’s are “pulled up”
• Some working figures
– Rp = 10 kΩ
– Ccap = 100 pF
– VDD = 5 V
– Vin_high = 3.5 V
• Recall for RC circuit
– Vcap(t) = VDD(1-e-t/τ)
– Where τ = RC

15
An I2C “transactions” involves the following bits

<S><A6:A0><R/W><A><D7:D0><A><F>

Exercise: Bus
bit rate vs Which of these actually carries useful data?

Useful data <S><A6:A0><R/W><A><D7:D0><A><F>

rate

So, if a bus runs at 400 kHz


What is the data
What is the clock What is the bus
throughput (i.e.
period? “efficiency”?
data-bits/second)?

16
How to operate the accelerometer?

Accel
I2C register 1
MCU I2C register 2
….

Springs

https://www.youtube.com/watch?v=eqZgxR6eRjo

You might also like