Serial
Communications
Steve Gunn
Hardware Communication
Sending data over a communication channel or bus
Serial One bit is sent at a time
Parallel Multiple (n) bits are sent as a whole
Synchronous (with clock) and Asynchronous (without)
Historically serial only used for long distances.
Parallel potentially n times faster.
Parallel has no need for SerDes (Serialiser/De-serialiser).
Serial now prevalent at shorter distances. Why?
2
Parallel Disadvantages
Pin Count
Integrated circuits cost increases with pin count.
Interconnect Density
Cable/board cost increases with conductor count.
Clock Skew (Timing Skew)
Signals take time to move down wires. Arrival times may be
different.
Crosstalk
Signals may interact due to undesired capacitive or
inductive coupling
3
Serpentine Routing
Examples of Serial Communication
Morse Code
Ethernet
RS-232 (UART)
JTAG
I2C
PCI Express (c.f. PCI)
SPI
FireWire
USB
Thunderbolt
SATA (c.f. PATA)
MIDI
5
Resources Used
AVR Datasheet
Il Matto Quick Reference
Section 17: SPI
Communication
Section 18: U(S)ART
Section 20: TWI (I2C)
AVR Libc
#include <avr/io.h>
#include <util/setbaud.h>
#include <util/twi.h>
6
SPI
I2C (TWI)
UART
32 I/O pins
Grouped as 4 ports
Each pin has a special
function
Or can be used as GPIO
Sec. 13 of AVR Datasheet
UART
Universal Asynchronous Receiver/Transmitter
UART Overview
End to end communication between two devices.
Speeds up to ~2M baud1 possible
High speeds need accurate timing and good signal integrity.
Two wires (TX and RX) for sending and receiving.
Additional line (CLK) for USART
Effectively RS-232 with logic voltage levels
Communication modes: Simplex, Duplex, Half-duplex
1. The baud rate is defined to be the transfer rate in bit per second (bps)
UART connection
Asynchronous
Device A
Device B
TX
RX
RX
TX
Synchronous
Device A
Device B
TX
RX
RX
TX
CLK
CLK
10
UART Frame
11
UART
12
UART Baud rate
13
UART Baud rate configuration
14
AVR UART Communication
Other baud rates are possible (common ones listed).
#define BAUD must precede #include <setbaud.h>
15
AVR C Example from Lab X2
16
AVR C Example from Lab X2 (2)
17
Devices that talk UART
C232HM
XBee wireless
RS232 serial port (level shifter required)
18
SPI
Serial Peripheral Interface (Bus)
SPI Overview
End to end communication between two devices.
Multiple devices allowed on the bus.
One device operates as the Master.
Speeds up to 100MHz possible
High speeds need good signal integrity.
Four wires (SCLK, MOSI, MISO, /SS) sending and receiving.
Communication mode: Duplex
20
SPI connection
MOSI Master Out, Slave In
MISO Master In, Slave Out
/SS
Slave Select (Active Low)
SCLK Serial Clock (Output from Master)
21
SPI 8-bit transfer
Different bit lengths possible. Hardware dependent.
AVR has internal 8-bit shift register
22
Clock Phase and Polarity
Mode
CPOL
CPHA
23
Slave Select
In general if only a single slave device is used, you may
connect the /SS pin on the slave to ground.
However, this will fail with some devices:
some devices use the falling edge (highlow transition)
of the chip select to initiate an action.
e.g. some ADCs, which starts conversion on highlow
transition.
There are two possible ways to attach multiple slave devices
to the bus: Individual selects, Daisy chained.
24
Multiple SPI devices on the bus
Individual Selects
Daisy Chained
Normal configuration.
Not supported by all devices
25
AVR SPI Communication
Other pins can be used as CS lines for connecting multiple
devices to the bus.
26
Devices that talk SPI
Generally, used for sensors and lower speed memories:
SD cards (slower than 4-bit transfer mode)
ADC/DAC
Digital Potentiometer
Accelerometers
Gyros
Magnetometers
EEPROM
...
27
2
IC
Inter-Integrated Circuit (Bus)
I2C Overview
End to end communication between two devices.
Multiple devices allowed on the bus (limited by the address
space and by the bus capacitance)
Distances limited to a few metres.
Multiple devices can operate as the Master.
Typical speed: 100kHz or 400kHz (up to 5MHz possible)
Two wires (SCL, SDA) for communication.
Communication mode: Simplex
29
I2C connection
128
Unique addresses
SCL Clock Line (Open Drain)
SDA Data Line (Open drain)
30
I2C Operation
Four potential modes of operation for a given bus device:
master transmit master node sending to a slave
master receive master node receiving from a slave
slave transmit slave node is sending to the master
slave receive slave node is receiving from the master
Most devices only use a single role and its two modes
31
I2C Operation: Master to Slave R/W
Master is initially in master transmit mode:
send a start bit,
send the 7-bit slave address it wishes to talk to,
send a direction bit (write(0), read(1))
wait for/send an acknowledge bit
send/receive data byte (8 bits)
wait for/send an acknowledge bit
send the stop bit
32
Transmission of one data byte
Source: http://www.best-microcontroller-projects.com/i2c-tutorial.html
33
Transmission of multiple data bytes
Data Transfer from master to slave
Data Transfer from slave to master
Source: http://www.best-microcontroller-projects.com/i2c-tutorial.html
34
AVR I2C Communication
35
Devices that talk I2C
Generally, used for sensors and lower speed memories:
ADC/DAC
Digital Potentiometer
Accelerometers
Gyros
Magnetometer
EEPROM
...
36
JTAG
Joint Test Action Group
JTAG Overview
Similar to SPI with an additional mode pin (TMS)
Multiple devices allowed by daisy chaining.
Speeds up to 100MHz possible
Four wires (TCK, TDI, TDO, TMS)
Communication mode: Duplex
Use #1: device programming of firmware
Use #2: boundary scan
Use #3: hardware debugging (breakpoints and single step)
38
JTAG Chain
39
JTAG Boundary Scan
Source: http://www.jtag.com
40
Devices that talk JTAG
Generally, more complex ICs with larger pin counts and
internal processing.
Microcontrollers
CPLDs
FPGAs
Microprocessors
Not usually found on simpler devices such as sensors.
41