28
www.techvilla.org.in 1 TECHVILLA www.techvilla.org.in

I2C And SPI Part-23

Embed Size (px)

Citation preview

Page 1: I2C And  SPI Part-23

www.techvilla.org.in

1

TECHVILLA

www.techvilla.org.in

Page 2: I2C And  SPI Part-23

www.techvilla.org.in

IntroductionI2C and SPI

• Serial communication protocols

• Meant for short distances “inside the box”

• Low complexity

• Low cost

• Low speed ( a few Mbps at the fastest )

• To be discussed: Applications, protocols, tradeoffs, AVR support

Page 3: I2C And  SPI Part-23

www.techvilla.org.in

What is I2C?

• Shorthand for an “Inter-integrated circuit” bus• Developed by Philips Semiconductor for TV sets in the 1980’s• I2C devices include EEPROMs, thermal sensors, and real-time clocks• Used as a control interface to signal processing devices that have

separate data interfaces, e.g. RF tuners, video decoders and encoders, and audio processors.• I2C bus has three speeds:

• Slow (under 100 Kbps)• Fast (400 Kbps)• High-speed (3.4 Mbps) – I2C v.2.0

• Limited to about 10 feet for moderate speeds

Page 4: I2C And  SPI Part-23

www.techvilla.org.in

I2C Bus Configuration

• 2-wire serial bus – Serial data (SDA) and Serial clock (SCL)• Half-duplex, synchronous, multi-master bus• No chip select or arbitration logic required• Lines pulled high via resistors, pulled down via open-drain drivers

(wired-AND)

Page 5: I2C And  SPI Part-23

www.techvilla.org.in

I2C Protocol

1. Master sends start condition (S) and controls the clock signal2. Master sends a unique 7-bit slave device address3. Master sends read/write bit (R/W) – 0 - slave receive, 1 - slave transmit4. Receiver sends acknowledge bit (ACK)5. Transmitter (slave or master) transmits 1 byte of data

Page 6: I2C And  SPI Part-23

www.techvilla.org.in

I2C Protocol (cont.)

6. Receiver issues an ACK bit for the byte received7. Repeat 5 and 6 if more bytes need to be transmitted.8.a) For write transaction (master transmitting), master issues stop

condition (P) after last byte of data.8.b) For read transaction (master receiving), master does not acknowledge

final byte, just issues stop condition (P) to tell the slave the transmission is done

Page 7: I2C And  SPI Part-23

www.techvilla.org.in

I2C Signals

• Start – high-to-low transition of the SDA line while SCL line is high

• Stop – low-to-high transition of the SDA line while SCL line is high

• Ack – receiver pulls SDA low while transmitter allows it to float high

• Data – transition takes place while SCL is slow, valid while SCL is high

Page 8: I2C And  SPI Part-23

www.techvilla.org.in

I2C Features

• “Clock stretching” – when the slave (receiver) needs more time to process a bit, it can pull SCL low. The master waits until the slave has released SCL before sending the next bit.

• “General call” broadcast – addresses every device on the bus

• 10-bit extended addressing for new designs. 7-bit addresses all exhausted

Page 9: I2C And  SPI Part-23

www.techvilla.org.in

AVR Support for I2C• Atmel calls it “Two-wire Serial Interface” (or TWI)• Supported by all AVR 8-bit μC except ATTiny and AT90

ATmega323 TWI mode when TWEN in TWCR is set:• PC0=SCL, PC1=SDA• TWBR – sets bit rate• TWCR – controls start, stop, ack generation, indicates M/S, T/R• TWDR – contains byte transmitted/received• TWAR – contains slave address• TWSR – indicates status of TWI Bus (start condition transmitted, ACK received, … 26 total states)

Page 10: I2C And  SPI Part-23

www.techvilla.org.in

I2C Tradeoffs

Advantages:

• Good for communication with on-board devices that are accessed occasionally.

• Easy to link multiple devices because of addressing scheme

• Cost and complexity do not scale up with the number of devices

Disadvantages:

• The complexity of supporting software components can be higher than that of competing schemes ( for example, SPI ).

Page 11: I2C And  SPI Part-23

www.techvilla.org.in

What is SPI?

• Shorthand for “Serial Peripheral Interface”

• Defined by Motorola on the MC68HCxx line of microcontrollers

• Generally faster than I2C, capable of several Mbps

Applications:

• Like I2C, used in EEPROM, Flash, and real time clocks

• Better suited for “data streams”, i.e. ADC converters

• Full duplex capability, i.e. communication between a codec and digital signal processor

Page 12: I2C And  SPI Part-23

www.techvilla.org.in

SPI Bus Configuration

• Synchronous serial data link operating at full duplex• Master/slave relationship• 2 data signals:• MOSI – master data output, slave data input• MISO – master data input, slave data output

• 2 control signals:• SCLK – clock• /SS – slave select (no addressing)

Page 13: I2C And  SPI Part-23

www.techvilla.org.in

SPI vs. I2C

• For point-to-point, SPI is simple and efficient• Less overhead than I2C due to lack of addressing, plus SPI is full duplex.

• For multiple slaves, each slave needs separate slave select signal• More effort and more hardware than I2C

Page 14: I2C And  SPI Part-23

www.techvilla.org.in

SPI Protocol

• 2 Parameters, Clock Polarity (CPOL) and Clock Phase (CPHA), determine the active edge of the clock

• Master and slave must agree on parameter pair values in order to communicate

CPOL CPHA Active edge

0 0 Rising

0 1 Falling

1 0 Falling

1 1 Rising

Page 15: I2C And  SPI Part-23

www.techvilla.org.in

SPI Protocol (cont.)

• Hardware realization is usually done with a simple shift register

• SPI interface defines only the communication lines and the clock edge

• There is no specified flow control! No acknowledgement mechanism to confirm receipt of data

Page 16: I2C And  SPI Part-23

www.techvilla.org.in

AVR Support for SPI

• Supported by all AVR 8-bit μC except ATTiny and some AT90s

ATmega323 - SPI mode when SPE bit in SPCR is set:

• PB6=MISO, PB5=MOSI, PB7=SCK, PB4=/SS

• SPCR – sets bit rate, CPOL, CPHA, M/S

• SPDR – used for data transfer to and from SPI shift register

• For multiple slaves, must employ “bit-banging”. Use software to control serial communication at general-purpose I/O pins.

Page 17: I2C And  SPI Part-23

www.techvilla.org.in

Avr spi communication

Page 18: I2C And  SPI Part-23

www.techvilla.org.in

Spi pin names

PIN DIRECTION MASTER SPI DIRECTION SLAVE SPI•MOSI -- USER DEFINED INPUT•MISO -- INPUT USER DEFINED• SCK -- USER DEFINED INPUT • SS -- USER DEFINED INPUT

Page 19: I2C And  SPI Part-23

www.techvilla.org.in

SPI REGISTERS

• SPCR - SPI CONTROL REGISTER • SPSR - SPI STATUS REGISTER• SPDR - SPI DATA REGISTER

Page 20: I2C And  SPI Part-23

www.techvilla.org.in

I2C in avr

• I2C bus consists of two lines called Serial Data Line (SDA) and Serial Clock Line (SCL).• Communication is relatively fast and short distance mainly used to

communicate between sensors, RTC, EEPROM, LCD.• I2C protocol allows up to 128 devices connected to those two lines

where each of them has unique address. • Communication between devices is master and slave based.• Master generates clock signal, initiates and terminates data transfer.

Page 21: I2C And  SPI Part-23

www.techvilla.org.in

Page 22: I2C And  SPI Part-23

www.techvilla.org.in

• I2C devices use open drain (open collector) pins. • In order to operate correctly SDA and SCL lines require pull up

resistors.• Typically 4.7kΩ resistors are used.• Each communication is initiated by START signal and finished by STOP. • These are always generated by master. • START and STOP signals are generated by pulling SDA line low while

SCL line is high.

Page 23: I2C And  SPI Part-23

www.techvilla.org.in

• Bus is considered to be busy between START and STOP signals.• So if there are more than one master each of them has to wait until

bus is freed by current master with STOP signal.I2C packet consists of:-• START signal;• Address packet – seven address bits lead by data direction bit (read or

write) + acknowledge bit;• Data packet – eight data bits + acknowledge bit;• STOP signal.

Page 24: I2C And  SPI Part-23

www.techvilla.org.in

• Acknowledge bit is a ninth bit of every byte sent. • Receiver always has to confirm successful receive with ACK by pulling

SDA low . • In case receiver cannot accept data it will leave SDA high (NACK) so

master could stop transmitting and do other scenario if needed.

Page 25: I2C And  SPI Part-23

www.techvilla.org.in

I2C modes

1. Master Transmitter – initiates transfer sends data to slave device;2. Master Receiver – initiates transfer reads data from slave device;3. Slave Transmitter – waits for master request and then sends data;4. Slave Receiver – waits for master transmission and accepts data.

Page 26: I2C And  SPI Part-23

www.techvilla.org.in

Avr i2c registers

• All registers are named as TWI.• TWBR (bit rate register )--It is used to scale down CPU frequency in to

SCL.• TWSR(status register):-senses I2C bus status with TWS[7:3] bits• Bits TWPS1 and TWPS2 used to prescale SCL frequency with values 1,

4, 16 and 64.

Page 27: I2C And  SPI Part-23

www.techvilla.org.in

I2C REGISTERS

• TWDR is data register which is used to hold next byte to transmit or received byte.• TWAR and TWARM register are used when AVR works as I2C slave.

Page 28: I2C And  SPI Part-23

www.techvilla.org.in