1 / 28

Asynchronous Serial I/O

Asynchronous Serial I/O. Unite 10 - Part 2. SCI Registers – Channel 0. SCI0BDH – SCI Baud Rate Register High Byte SCI0BDL – SCI Baud Rate Register Low Byte SCI0CR1 – SCI Control Register 1 SCI0CR2 – SCI Control Register 2 SCI0SR1 – SCI Status Register 1 SCI0SR2 – SCI Status Register 2

jabari
Download Presentation

Asynchronous Serial I/O

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Asynchronous Serial I/O Unite 10 - Part 2

  2. SCI Registers – Channel 0 • SCI0BDH – SCI Baud Rate Register High Byte • SCI0BDL – SCI Baud Rate Register Low Byte • SCI0CR1 – SCI Control Register 1 • SCI0CR2 – SCI Control Register 2 • SCI0SR1 – SCI Status Register 1 • SCI0SR2 – SCI Status Register 2 • SCI0DRH – SCI Data Register High Byte • SCI0DRL – SCI Data Register Low Byte

  3. SCI Register DefinitionsChannel 0 #define SCI0BDH _P(0xC8) #define SCI0BDL _P(0xC9 #define SCI0CR1 _P(0xCA) #define SCI0CR2 _P(0xCB) #define SCI0SR1 _P(0xCC) #define SCI0SR2 _P(0xCD) #define SCI0DRH _P(0xCE) #define SCI0DRL _P(0xCF)

  4. Baud Rate Generation BAUD RATE = 2 MHZ 16 * (BAUD RATE DIVISOR) THEREFORE, SET BAUD RATE DIVISOR = 2MHZ 16 * (DESIRED BAUD RATE)

  5. Example – Baud Rate Initialization Let Desired Baud = 9600 Using formula: Baud Rate Divisor = 2000000 16*9600 = 13.0208 (Use integer value of 13) Register Initialization: SCIOBDH= 0 SCIOBDL=13 (Max value of Baud Rate Divisor = 213 - 1 = 8192

  6. Wake-up Condition Selection Parity Type 1: Odd 0: Even Select Loop-Back Mode 0: 9 data bits 1: 8 data bits Parity Enable

  7. Interrupt Enables Transmitter and Receiver Enables Enter Sleep Mode Send Break Character

  8. Break Character • Start Bit = “0” • All Data Bits = “0” • Parity Bits if present = “0” • Stop Bit = “0” • 68HC12 keeps line in “0” for additional bit times

  9. Example: Initialize SCI Channel 0 /* Baud = 9600 */ int divisor = 125000/9600; // divisor = 13 SCI0BDH = divisor>>8; // SCIOBDH= 0 SCI0BDL = divisor; // SCIOBDL=13 /* Standard Operation M=0 – 8 data bits PE =0 – No Parity PT =0 – Parity type*/ SCI0CR1 = 0x00; /* TE = 1 – Enable Transmitter RE = 1 – Enable Receiver */ SCI0CR2 = 0x0C;

  10. (repeated slide) Wake-up Condition Selection Parity Type 1: Odd 0: Even Select Loop-Back Mode 0: 9 data bits 1: 8 data bits Parity Enable

  11. (repeat slide) Interrupt Enables Transmitter and Receiver Enables Enter Sleep Mode Send Break Character

  12. Serial I/O Procedures /* Receive a Character */ unsigned char ci(void) {while((SCI0SR1&0x20)==0); return SCI0DRL; } Checking RDEF flag

  13. (repeated slide)

  14. Serial I/O Procedure /* Transmit a Character */ void co(unsigned char c) {while((SCI0SR1&80)==0); SCI0DRL=c; } Checking TDRE flag

More Related