41
Serial Communication Interface (SCI) 1 Ellenor Brown Howard Liles Algan Samur

Serial Communication Interface (SCI)

Embed Size (px)

DESCRIPTION

Serial Communication Interface (SCI). Ellenor Brown Howard Liles Algan Samur. Presentation Outline. Howard Liles. Ellenor Brown. Algan Samur. Types of data transmission Parallel Serial Serial Communication Synchronous Asynchronous Baud and Bit Rates - PowerPoint PPT Presentation

Citation preview

Page 1: Serial Communication Interface (SCI)

1

Serial Communication Interface (SCI)

Ellenor BrownHoward LilesAlgan Samur

Page 2: Serial Communication Interface (SCI)

2

Presentation Outline

Types of data transmission• Parallel• Serial

Serial Communication• Synchronous• Asynchronous

Baud and Bit Rates Asynchronous Serial Transmission

• Start Bit• Data Bit• Stop Bit• Parity Bit• Noise

SCI Registers Show two examples of how data words are

transmitted

Howard Liles

Ellenor Brown

Algan Samur

Page 3: Serial Communication Interface (SCI)

3

Data Transmission

Electronic devices communicating with each other

Desktop computer

Turbine generators

Hard drive

Printer

Lights

Power supply circuit

Page 4: Serial Communication Interface (SCI)

Types of Data Transmission

4

• Serial Data TransmissionOne bit at a time

• Parallel Data TransmissionOne word (N bits) at a time

Transmitter (microprocessor)

Receiver (printer)

Word

Receiver (Monitor)

Transmitter (CPU)

= bits

Page 5: Serial Communication Interface (SCI)

5

Parallel vs. Serial

• Parallel requires more transfer lines

• Bits have to be synchronized

• Fast, but expensive

Examples:• Printer cables

• Serial requires less transfer lines

• Transfers one bit at a time

• Slow comparatively, but less expensive

Examples:

USB, Firewire, ethernet

Page 6: Serial Communication Interface (SCI)

6

Receiver

ReceiverTransmitter

Transmitter

Serial CommunicationSynchronous Serial Communication•Transmitter and Receiver have synchronized clocks•Data must be sent constantly in order for them to stay synchronized•Any data not sent on a regular clock cycle is considered noise•Transmission parameters are set up before sending data•30% faster than asynchronous transmission for large continuous blocks of data•Clock rate determines data transfer rate

Asynchronous CommunicationTransmitter and receiver do not have synchronized clocks and act independentlySimpler and less expensive than synchronous Start, Stop and Parity “caution” bits are sent with each word of data

Word

Page 7: Serial Communication Interface (SCI)

7

Comparisons

Andrew Byrley

  SYNCHRONOUS ASYNCHRONOUS

How It Works Clock Start and Stop bits

Advantages Lower overheadGreater throughputFaster

SimpleCheap hardware

Disadvantages More complex hardwareMore expensive

Large overheadSlower

Page 8: Serial Communication Interface (SCI)

8

Baud and Bit Rates

• Baud Rate (Bd) is the rate at which Symbols are transferred. A symbol is a given signaling event

‘Symbols/second’

• Number of bits per Symbol is Hardware Specific (our hardware uses 1 baud/bit)

Conversion factor: 1 bit = 1 Symbol = 1 baud

• Bit rate (bps) - the rate at which bits are transmitted or “bits/second”

Conversion Equation:Bit rate (bps) = baud rate × number of bits per baud

Symbol

Bits

ond

Symbols

ond

Bits*

secsec

Page 9: Serial Communication Interface (SCI)

9

Baud and Bit Rates Cont.’d

• Some bits are data and some are not!– Remember the start, stop, and parity bits

which are also known as “overhead bits”

• Data throughput can be determined by Characters per second (cps)Cps = actual rate of data being sent1 Standard Character = 1 Bit

• Characters per second (cps)=Bit rate*(character bits/total bits)

• *Remember CPS is not same as bytes/second. CPS does not include overhead!

bitsTotal

bitsCharacter

ond

Bits

ond

Characters

_

_*

secsec

Page 10: Serial Communication Interface (SCI)

10

Baud and Bit Rates Example

Example 1:You have an asynchronous serial connection. Assuming 2 bits per symbol, 9600 bd line speed, 8 bit data format with no parity, 1 start bit and 1 stop bit, calculate the throughput in cps.

Bit rate (bps) = baud rate × number of bits per baud bps= 9600x2=19200

(cps)=Bit rate*(character bits/total bits)cps=19200*(8/10)= 15360

Page 11: Serial Communication Interface (SCI)

11

Presentation Outline

Types of data transmission• Parallel• Serial

Serial Communication• Synchronous• Asynchronous

Baud and Bit Rates Asynchronous Serial Transmission

• Start Bit• Data Bit• Stop Bit• Parity Bit• Noise

SCI Registers Show two examples of how data words are

transmitted

Howard Liles

Ellenor Brown

Algan Samur

Page 12: Serial Communication Interface (SCI)

12

Asynchronous Serial Communication

• Transmitter and Receiver are independent• Transmitter sends ‘Start’, ‘Parity’ and ‘Stop’ bits

with each word of data• Data received between a Stop bit and the next

Start bit is ignored

Parity Start

Transmitter Receiver

DataStop

Page 13: Serial Communication Interface (SCI)

13

Data Frame Format

• Start bit – Indicates beginning of data• Data bit – Data being transmitted• Parity bit – Integrity check• Stop bit – Indicates end of data word

• Data frame size: 10 or 11 bits

Parity Start

Transmitter Receiver

DataStop

Page 14: Serial Communication Interface (SCI)

14

Start Bit

• One bit• Indicates the beginning of word• Opposite polarity from idle bit state

– Idle state for HCS12 is 1’s– Start bit = 0

Page 15: Serial Communication Interface (SCI)

15

Data Bits

• Actual data being transmitted plus a parity bit

• Most common mode:– 8-bit transmission– Used for ASCII character transmission (7-bit

ASCII + 1-bit parity = 8-bit)• Less common mode:

– 9-bit transmission– Can be used to send a full byte of data +

parity bit• HCS12 sends least significant bit (LSB) first

Page 16: Serial Communication Interface (SCI)

16

Parity Bit

• Used to determine if an error occurred during data transmission

• Error Detection– Transmitter calculates proper parity bit– Receiver calculates parity bit based on data it received– Receiver compares its parity bit to the one it received

Evan Johnson

Page 17: Serial Communication Interface (SCI)

17

Parity Bit

• 2 types of Parity functionality• Even Parity

– Parity bit is set to 1 if there is an odd number of 1’s in data bits # of 1’s becomes even

• Odd Parity– Parity bit is set to 1 if there is an even number of

1s in data bits # of 1’s becomes odd)

• Even/Odd Parity is set by user on HCS12

Evan Johnson

Page 18: Serial Communication Interface (SCI)

18

Stop Bit

• 1 or 2 bits• Used due to asynchronous nature• Directly after the parity bit• Stop bit is the same as the polarity of the

data-line’s idle state– Idle state for HCS12 = all 1’s– Stop bits = 1

Page 19: Serial Communication Interface (SCI)

19

Asynchronous Data Transmission

• Example 1:– Hex# 4A16 is to be sent with one start bit, even parity,

8-bit data length and one stop bit– 4A16 = 0100 10102

Start Bit Data Bit 0 Data Bit 1 Data Bit 2 Data Bit 3 Data Bit 4 Data Bit 5 Data Bit 6 Data Bit 7 Parity Bit Stop Bit

0 0 1 0 1 0 0 1 0 1 1

LSB

Page 20: Serial Communication Interface (SCI)

20

Asynchronous Data Transmission

• Example 2:– Hex# B416 is to be sent with one start bit, even parity,

8-bit data length and one stop bit– B416 = 1011 01002

Start Bit Data Bit 0 Data Bit 1 Data Bit 2 Data Bit 3 Data Bit 4 Data Bit 5 Data Bit 6 Data Bit 7 Parity Bit Stop Bit

0 0 0 1 0 1 1 0 1 0 1

Page 21: Serial Communication Interface (SCI)

21

Asynchronous Data Transmission

• Example 3:– Hex# B416 is to be sent with one start bit, odd parity, 8-

bit data length and one stop bit– B416 = 1011 01002

Start Bit Data Bit 0 Data Bit 1 Data Bit 2 Data Bit 3 Data Bit 4 Data Bit 5 Data Bit 6 Data Bit 7 Parity Bit Stop Bit

0 0 0 1 0 1 1 0 1 1 1

Page 22: Serial Communication Interface (SCI)

22

Error sources

• Frame shift– Detected when a logic 0 is accepted as the stop

bit

• Overrun– Software fails to read the SCI data register

before the shift register receives the next frame

• Noise– SCI detects noise on the receiver input

Page 23: Serial Communication Interface (SCI)

23

Framing Error

• Occurs when stop bit is not where receiver expects it to be

• Detected when a logic 0 is accepted as the stop bit

• Ex:“4” bit is skipped and

stop bit is one bit before it should be

1 2 3 4 5 6 7

Page 24: Serial Communication Interface (SCI)

24

Overrun

• Software fails to read the SCI data register before it receives the next frame

• Data in the shift register is lost

• Data already in the SCI data registers is not affected

RECEIVER

REGISTER

SOFTWARE

TRANSMITTER

Page 25: Serial Communication Interface (SCI)

25

Noise Detection

• SCI detects noise on the receiver input

Page 26: Serial Communication Interface (SCI)

26

Presentation Outline

Types of data transmission• Parallel• Serial

Serial Communication• Synchronous• Asynchronous

Baud and Bit Rates Asynchronous Serial Transmission

• Start Bit• Data Bit• Stop Bit• Parity Bit• Noise

SCI Registers Coding example

Howard Liles

Ellenor Brown

Algan Samur

Page 27: Serial Communication Interface (SCI)

27

SCI Baud Rate Registers SCIBDH & SCHBDL - $00C8-$00C9

• 13-Bits register determines SCI Baud rate• Baud rate generator is disabled until TE or RE bit is set

for the first time after reset.• Baud rate generator is turned off when this register

contains $0000• Note: Writing to SCIBDH has no effect w/out writing to

SCIBDL

Page 28: Serial Communication Interface (SCI)

28

Implementation Specific Features (S12SCIV2)

13-bit baud rate selection 8- or 9-bit data format Separately enabled transmitter and receiver Programmable transmitter output parity Interrupt driven operation with 8 flags 8 registers used to control SCI ($00C8-$00CF) Uses Port S pins 0 & 1 for RXD and TXD

respectively

Page 29: Serial Communication Interface (SCI)

29

SCI Control Register 1SCICR1 - $00CA

• M (data format mode) - 0: 8 data bits, - 1: 9 data bits.- Both use 1 start bit and 1 stop bit

• PE (parity enable) – 0: Off, 1: On• PT (parity type) – 0: Even, 1: Odd

Page 30: Serial Communication Interface (SCI)

30

SCI Control Register 2SCICR2 - $00CB

• TIE (transmit interrupt enable) – 0: disables interrupts for transmit data register empty, 1: enables

• TCIE (transmit complete interrupt enable) – 0: disables interrupts for transmit complete, 1: enables

• RIE (receiver interrupt enable) – 0: disables interrupts for receiver full and overrun , 1: enables

• ILIE (idle line interrupt enable) – 0: disables interrupts for idle line, 1: enables

• TE (transmit enable) – 0: disable transmitter, 1: enable• RE (receiver enable) – 0: disable receiver, 1: enable

Page 31: Serial Communication Interface (SCI)

31

SCI Status Register 1SCISR1 - $00CC

• Read only register• Can be used to provide input to the microcontroller for

generation of SCI interrupts• TDRE (transmit data register empty) – 0: No byte

transferred,1: byte successfully transferred to transmit shift register

• TC (transmit complete flag) – 0: transmission in progress, 1: no transmission in progress

• RDRF (receive data register full) – 0: no data in data register, 1: data in data register

• IDLE (idle flag) – 0: receiver input is active, 1: receiver input has become idle

Page 32: Serial Communication Interface (SCI)

• OR (overrun) – 0: no overrun, 1: overrun (overrun happens when new data is received before old data is read)

• NF (noise flag) – 0: disable, 1: enable• FE (framing error flag) – 0: disable, 1: enable• PF (parity error) – 0: No parity error, 1: parity

error

SCI Status Register 1SCISR1 - $00CC

32

Page 33: Serial Communication Interface (SCI)

33

SCI Status Register 2SCISR2 - $00CD

• BK13 (break transmit character length) – 0: 10 or 11 bit, 1: 13 or 14 bit

• TXDIR (transmitter pin direction) – 0: TXD pin used as input, 1: TXD pin used as output. (used only in single wire mode)

• RAF (receiver active flag) – 0: no reception in progress, 1: reception in progress

Page 34: Serial Communication Interface (SCI)

34

SCI Data RegistersSCIDRH &SCIDRL - $00CE - $00CF

• SCIRDL contains incoming bytes of data from serial port

• R8 – bit 8 of received 9-bit data• T8 – bit 8 of transmitted 9-bit data

Page 35: Serial Communication Interface (SCI)

35

SCI is easy

SCI module makes it easy to send/receive data SCI module encodes data into standard NRZ

format! Hardest part is setting up baud rate Can use either polling or interrupt based logic

to drive SCI SCIDRH/SCIDRL are like two registers in one.

• Read this register to receive data• Write to this register to send data

Page 36: Serial Communication Interface (SCI)

Example

• First, calculate baud rate. Assume 8MHz bus and desired baud rate is 9600

• SCI module runs at bus speed• Desired value for SCIBR is 52• You will have some error margin

– Exact solution is 52.0833– Actual baud rate is 9615.3 (0.160% error)

0]:SCIBR[1216

clockmoduleSCIratebaudSCI

36

Page 37: Serial Communication Interface (SCI)

Example

Write SCIBR ($0034) to SCIBDH/SCIBDLFor 8-bit, no parity, no interrupts,

default values will workSimply enable transmit and receive in

SCICR2Read from SCIDRL to receive 8-bit data Write data to SCIDRL to send 8-bit data

37

Page 38: Serial Communication Interface (SCI)

38

Code Example

Page 39: Serial Communication Interface (SCI)

39

Code Example

Page 40: Serial Communication Interface (SCI)

40

#include <hidef.h> /* common defines and macros */#include <mc9s12c32.h> /* derivative information */#pragma LINK_INFO DERIVATIVE "mc9s12c32"

void SCI_init(void){ int BR = 0x0034; SCIBDH = BR>>8; //stores high Byte SCIBDL = BR; //stores low Byte SCICR2 = 0x0C; //sets TE and RE to 1}

char SCI_getByte(void){ while (!(SCISR1_RDRF)) ;//waits FOREVER until receive register is full return SCIDRL;}

void SCI_sendByte(char data){ while (!(SCISR1_TDRE)) ;//waits FOREVER until transmit register is empty SCIDRL = data; //return void;}

void main(void) { //variable declarations must go at beginning

/* put your own code here */ EnableInterrupts;

//required code as per instructions MISC = 0x03; PEAR = 0x0C;

MODE = 0xE2; //Call function to setup SCI SCI_init(); //Main loop while(1) { char data = SCI_getByte();

SCI_sendByte(data); } /* loop forever */ /* please make sure that you never leave this function */}

Page 41: Serial Communication Interface (SCI)

41

Thank You!

Any Questions?