serial communication interface sci n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Serial Communication Interface (SCI) PowerPoint Presentation
Download Presentation
Serial Communication Interface (SCI)

Loading in 2 Seconds...

play fullscreen
1 / 39
kadeem-weaver

Serial Communication Interface (SCI) - PowerPoint PPT Presentation

66 Views
Download Presentation
Serial Communication Interface (SCI)
An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Serial Communication Interface(SCI) Presented by: LakmalKaviratna Thomas Herrmann NicolaasOstendorf 13 November 2012

  2. LakmalKaviratna Data Transmission Types Transmitting Data b1b2b3b4b5b6b7b8 -- Bit i i Transmitting Data b1b2b3b4b5b6b7b8 1 2 3 4 Serial 1 2 5 3 4 6 7 8 5 Parallel 6 7 Received Data b1b2b3b4b5b6b7b8 8 Received Data b1b2b3b4b5b6b7b8

  3. LakmalKaviratna Parallel vs Serial Data Transmission

  4. LakmalKaviratna Types of Serial Communication • Synchronous 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 -- Bit of Data Receiver Transmitter Δt

  5. LakmalKaviratna Types of Serial Communication • Asynchronous Communication • Transmitter and receiver do not have synchronized clocks and act independently • Simpler and less expensive than synchronous • Start, Stop and Parity “caution” bits are sent with each word of data -- Start Bit -- Parity Bit -- Stop Bit -- Bit of Data Transmitter Transmitter

  6. LakmalKaviratna Synchronous vs Asynchronous Serial Communication

  7. LakmalKaviratna Baud and Bit Rates • Symbol – a pulse representing an integer number of bits • Baud (Bd) – Rate which Symbols are transferred. (Symbols/second) • The number of bits per Symbol is Hardware Specific • Bit rate (bps) – Rate which bits are transmitted. (bits/second) • Data Throughput (dtp) – Rate which bits of DATA are transmitted. (Characters/second) • Remember: in asynchronous transfer, not all bits are data (start/stop/parity bits are also present)

  8. LakmalKaviratna Example Baud and Bit Rates • Example: 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.

  9. Thomas Herrmann Asynchronous Serial Communication • Transmitter and Receiver operate independently of each other • Transmitter must send a Start, Parity, and Stop bit with each package or ‘word’ of Data • Any signal after a Stop bit and before a Start bit is ignored

  10. Thomas Herrmann Data Signal Format • Idle State – signal between data • Start Bit – signifies start of data transmission • Data Packet – data being transmitted • Parity Bit – fidelity check of data for receiver • Stop Bit – signifies end of data transmission • Data – 10-11 bits

  11. Thomas Herrmann Idle State • Idle signal is a uniform stream of bits at the idle polarity state • For the HCS12, the idle state is 1

  12. Thomas Herrmann Start Bit • A single bit is used to indicate the start of the transmission of a single word or packet • The polarity of the start bit is opposite the polarity of the idle bits • For the HCS12, the start bit is 0

  13. Thomas Herrmann Data Bits • Actual data that is being transmitted • 8-bit mode transmission, typical • 7 bits of data and 1 parity bit (Used for ASCII) • 9-bit mode transmission, less common • 8 bits of data and 1 parity bit (Full byte transmission) • The HCS12 requires the least significant bit first

  14. Thomas Herrmann Parity Bit • Last bit in data packet used to determine the fidelity of the received signal and check for errors in a transmission • Transmitter calculates parity bit based on data sent • Receiver estimated parity bit with the data received • Receiver compares received parity and estimate parity

  15. Thomas Herrmann Parity Bit • Two types of parity functionality • Even Parity • The parity bit is set to 1 if the total number of 1s in the data bits is odd, total number of 1s becomes even • Odd Parity • The parity bit is set to 1 if the total number of 1s in the data bits is even, total number of 1s becomes odd • Even/Odd Parity for the HCS12 set by User

  16. Thomas Herrmann Stop Bit • Signifies end of packet – necessary for asynchronous transmission • Can be 1-2 bits • Stop bit polarity is the same as the idle state polarity • For the HCS12, stop bit is 1

  17. Thomas Herrmann Example 1 Construct the asynchronous signal for the transmission of 7516 for the HCS12 with8-bit mode, even parity, and one stop bit 7516 = 0111 01012 10

  18. Thomas Herrmann Example 2 Construct the asynchronous signal for the transmission of 5A16 for the HCS12 with8-bit mode, even parity, and one stop bit 5A16 = 0101 10102 10

  19. Thomas Herrmann Example 3 Construct the asynchronous signal for the transmission of B916 for the HCS12 with 9-bit mode, odd parity, and one stop bit B916 = 1011 10012 10

  20. Thomas Herrmann Types of Error • Receiver Overrun • Noise Error • Frame Error • Parity Error

  21. Thomas Herrmann Receiver Overrun • Software fails to process 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

  22. Thomas Herrmann Noise Error • Signal noise can cause the receiver to incorrectly read a start bit or false data • This can be compensated by sampling at a higher frequency that the incoming signal • Multiple reading can be taken of each transmitted bit • These readings are averaged to determine the intended transmission

  23. Thomas Herrmann Frame 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: The fourth bit is skipped and stop bit is one bit before it should be 1 2 3 4 5 6 7

  24. Parity Error • The transmitter determines and send the correct parity bit • The receiver determines what the parity bit should be based on the signal received • If the transmitter and receiver parity bits do not match, then there is a known error • This does not account for an even number of errors in the data bits

  25. NicolaasOstendorf SCI Distinctive Features (S12SCIV2) • Full duplex operation • 13-bit baud rate selection • Programmable 8-bit or 9-bit data format • Separately enabled transmitter and receiver • Programmable transmitter output parity • Two receiver wake up methods • 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 • SCI is summarized on pages 383-393 in MC9S12C Family Reference Manual

  26. NicolaasOstendorf SCI Baud Rate Registers:SCIBDH & SCHBDL - $00C8-$00C9 • 13-bit register determines SCI baud rate • Baud rate generator is disabled until TE or RE bit is set for the first time after reset • Writing to SCIBDH has no effect without writing to SCIBDL

  27. NicolaasOstendorf SCI Control Register 1:SCICR1 - $00CA • Data Format Bit (M) – 0: 8-bit, 1: 9-bit • Both 8-bit and 9-bit data formats have 1 start bit and 1 stop bit • Parity Enable Bit (PE) – 0: Disabled, 1: Enabled • Parity Type Bit (PT) – 0: Even, 1: Odd

  28. NicolaasOstendorf SCI Control Register 2:SCICR2 - $00CB • Transmit Interrupt Enable (TIE) – 0: Disables interrupts for transmit data register empty flag, 1: Enables • Transmit Complete Interrupt Enable (TCIE) – 0: Disables interrupts for transmit complete flag, 1: Enables • Receiver Interrupt Enable (RIE) – 0: Disables interrupts for receiver full or overrun flags, 1: Enables • Idle Line Interrupt Enable (ILIE) – 0: Disables interrupts for idle line flag, 1: Enables • Transmit Enable (TE) – 0: Disables transmitter, 1: Enables • Receiver Enable (RE) – 0: Disables receiver, 1: Enables

  29. NicolaasOstendorf SCI Status Register 1:SCISR1 - $00CC • Read only register • Transmit Data Register Empty (TDRE) – 0: No byte transferred to transmit shift register, 1: Byte successfully transferred • Transmit Complete (TC) – 0: Transmission in progress, 1: No transmission in progress • Receive Data Register Full (RDRF) – 0: No data in SCI data register, 1: Data in SCI data register

  30. NicolaasOstendorf SCI Status Register 1:SCISR1 - $00CC • Overrun (OR) – 0: No overrun, 1: Overrun • Noise Flag (NF) – 0: No noise, 1: Noise • Framing Error (FE) – 0: No framing error, 1: Framing Error • Parity Error (PE) – 0: No parity error, 1: Parity error

  31. NicolaasOstendorf SCI Status Register 2:SCISR2 - $00CD • Break Transmit Character Length (BK13) – 0: 10 or 11 bits long, 1: 13 or 14 bits long • Transmitter Pin Direction (TXDIR) – 0: TXD pin used as input, 1: TXD used as output (used only in single wire mode) • Receiver Active Flag (RAF) – 0: No reception in progress, 1: Reception in progress

  32. NicolaasOstendorf SCI Data Registers:SCIRDH & SCIRDL - $00CE-$00CF • SCIRDL contains incoming bytes of data from serial port • R8 – Bit 8 of received data in 9-bit format • T8 – Bit 8 of transmitted data in 9-bit format

  33. NicolaasOstendorf Example • First calculate baud rate: • Assume 8MHz bus and desired baud rate is 9600 • Desired value for SCIBR is 52 • You will have some error margin • Exact solution: 52.0833 • Actual baud rate: 9615.3 (0.160% error)

  34. NicolaasOstendorf Example • Write SCIBR ($34) to SCI Baud Rate Registers (SCIBDH/SCIBDL) • Default values work for 8-bit, no parity, and no interrupts • Enable transmit and receive in SCICR2 • Read from SCIDRL to receive 8-bit data • Write data to SCIDRL to send 8-bit data

  35. NicolaasOstendorf Code Example: Help set up SCI in CodeWarrior #include <hidef.h> /* common defines and macros */ #include <mc9s12c32.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12c32" void SCI_init(void){ int BR = 0x34; SCIBDH = (unsigned char)(BR>>8); //stores high Byte SCIBDL = (unsigned char)(BR); //stores low Byte SCICR2 = 0x0C; //sets TE and RE to 1 } unsigned char SCI_getByte(void){ while (!(SCISR1_RDRF)) ;//waits until receive register is full return SCIDRL; } void SCI_sendByte(unsigned char data){ while (!(SCISR1_TDRE)) ;//waits until transmit register is empty SCIDRL = data; //return void; } void main(void) { //variable declarations must go at beginning EnableInterrupts; MISC = 0x03; PEAR = 0x0C; MODE = 0xE2; //Call function to setup SCI SCI_init(); //Main loop for(;;) { SCI_sendByte(SCI_getByte()); } /* wait */ /* please make sure that you never leave this function */ }

  36. NicolaasOstendorf Code Example #include <hidef.h> /* common defines and macros */ #include <mc9s12c32.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12c32" void SCI_init(void){ int BR = 0x34; SCIBDH = (unsigned char)(BR>>8); //stores high Byte SCIBDL = (unsigned char)(BR); //stores low Byte SCICR2 = 0x0C; //sets TE and RE to 1 } unsigned char SCI_getByte(void){ while (!(SCISR1_RDRF)) ;//waits until receive register is full return SCIDRL; } void SCI_sendByte(unsigned char data){ while (!(SCISR1_TDRE)) ;//waits until transmit register is empty SCIDRL = data; //return void; }

  37. NicolaasOstendorf Code Example void main(void) { //variable declarations must go at beginning EnableInterrupts; MISC = 0x03; PEAR = 0x0C; MODE = 0xE2; //Call function to setup SCI SCI_init(); //Main loop for(;;) { SCI_sendByte(SCI_getByte()); } /* wait */ /* please make sure that you never leave this function */ }

  38. Questions?

  39. References • MC9S12C Family Reference Manual • Past Student Lectures • http://en.wikipedia.org/wiki/Symbol_rate • http://en.wikipedia.org/wiki/Baud