Serial Communications Introduction to UART and USART Intel 8250 and 8251
Outline Concept of serial communications Synchronous, Asynchronous RS-232 standard Hand shaking UART and USART chips 8250 and 8251 chips
What is Serial Communication
Serial Communication Types In Terms of Data on a Line Asynchronous Synchronous In Terms of Number of Senders Simplex Half duplex Full duplex
Transfer Types
Asynchronous Data Framing Sending Character ‘A’ = 0x41 on the Line Idle (high): Mark Low: Space Overhead? (parity, start, stop)
Vocabulary DTE DCE Data Transfer Rate data terminal equipment e.g. computer, terminal DCE data communication equipment connects DTE to communication lines e.g. modem Data Transfer Rate Baud Rate Baud (Symbol representing n bits) BPS Bit per second
RS-232 Standard EIA 232 = ITU-T V.24/V.28 Specifies the interface between DTE and DCE: V.28 : mechanical and electrical characteristics V.24 : functional and procedural characteristics Even used in applications where there is no DCE e.g. connecting computer to printer, magnetic card reader, robot, … etc. Introduced in 1962 but is still widely used Stand for Recommended Standard
DTE Connections
Mechanical Characteristics 25-pin connector 9-pin connector is more commonly found in IBM-PC but it covers signals for asynchronous serial communication only Use male connector on DTE and female connector on DCE Note: all signal names are viewed from DTE
25-Pin RS232 Connector
9-Pin RS232 Connector
Electrical Characteristics Single-ended one wire per signal, voltage levels are with respect to system common (i.e. signal ground) Mark: –3V to –15V represent Logic 1, Idle State (OFF) Space: +3 to +15V represent Logic 0, Active State (ON) Usually swing between –12V to +12V Recommended maximum cable length is 15m, at 20kbps
TTL to RS-232 Line drivers and line receivers
RS-232 Frame Format Example A 111101000001111 … Start bit ASCII Parity Stop bit 111101000001111 A Idle
RS232 Logic Waveform
Function of Signals TD: transmitted data RD: received data DSR: data set ready indicate whether DCE is powered on DTR: data terminal ready indicate whether DTR is powered on turning off DTR causes modem to hang up the line RI: ring indicator ON when modem detects phone call
Function of Signals DCD: data carrier detect RTS: request to send ON when two modems have negotiated successfully and the carrier signal is established on the phone line RTS: request to send ON when DTE wants to send data Used to turn on and off modem’s carrier signal in multi-point (i.e. multi-drop) lines Normally constantly ON in point-to-point lines CTS: clear to send ON when DCE is ready to receive data SG: signal ground
Flow Control Means to ask the transmitter to stop/resume sending in data Required when: DTE to DCE speed > DCE to DCE speed (e.g. terminal speed = 115.2kbps and line speed = 33.6kbps, in order to benefit from modem’s data compression protocol) without flow control, the buffer within modem will overflow – sooner or later the receiving end takes time to process the data and thus cannot be always ready to receive
Hardware Flow Control RTS/CTS the transmitting end activates RTS to inform the receiving end that it has data to send if the receiving end is ready to receive, it activates CTS normally used between computer and modem computer is always ready to receive data but modem is not, because terminal speed > link speed
Software Flow Control Xon/Xoff when the buffer within the receiving end is nearly full, Xoff is sent to the transmitting end to ask it to stop when data have been processed by the receiving end and the buffer has space again, Xon is sent to the transmitting end to notify it to resume advantage: only three wires are required (TD, RD and GND) disadvantage: confusion arises when the transmitted data (e.g. a graphics file) contains a byte equal to 13H (Xoff)
Are you ready to receive? RS-232 (con) Communication between two nodes Software Handshaking Hardware Handshaking data transmission Are you ready to receive? Software flow control uses special characters to control the flow of data when a device wishes to halt the flow it sends the XOFF character, when flow can resume it sends the XON character. The XOFF character is called DC3 or Device Code 3. It is decimal 19 or control S. The XON character is called DC1 or Device Code 1. It is decimal 17 or control Q. XOn / XOff is a software flow control mechanism. It can only be used in character oriented data transmissions (not binary transfer) as it relies on the use of a pre-determined XOn character and a pre-determined XOff character. The basic idea is simple, when the receiver buffer fills to the point it cannot receive anymore data it issues an XOff (Transmit Off) to the transmitter. When the transmitter sees the XOff character is stops transmitting. It will only resume once it sees a corresponding XOn. The disadvantage of such a system is that should an issued character become damaged in transit no action will be taken by the transmitter. RTS RTS CTS CTS No x-off receiver receiver transmitter transmitter x-on CTS CTS Yes TD RD data transmission Send character
Null Modem Cables Used to directly connect two DTEs together Many possibilities – depending on whether and how the two DTEs handshake (i.e. doing flow control)
Null Modem Cables Examples
Other Standards
UART in PC 115200*16=1843200
8250/16450/16550 UART
Registers Transmitter holding register Receiver buffer register Interrupt enable register
Registers Interrupt identification register
Line Control
Modem Registers Modem Control Register Modem Status Register
Line Status
Divisor Register
Example Program the divisor Latch for 300 baud. Assume Xin=1.8432MHz The Base Address: 0x3F8
Example 2 Program the divisor Latch for 2400 baud. Assume Xin=1.8432MHz The Base Address: 0x3F8
Example 3 Program 8250 for 2400 baud, 8 data bit, even parity and 1 stop bit. Assume Xin=1.8432MHz The Base Address: 0x3F8 MOV AL,80H ; Accessing DLAB MOV DX,3FBH ;Line Control Register Address OUT DX,AL MOV AX,48 ;baud=2400 115200:48=2400 MOV DX,3F8H ;Low byte of Divisor MOV AL,AH INC DX MOV AL,00011011 ; DLAB,Break,Even,1 stop, 8 data MOV DX,3FBH ;LCR
Synchronous Protocols BCC block check character STX start of text Control field contains info like the sequence of data
CRC In SDLC: G(X) = x**16 + x**12 + x**5 + 1
8251 Block Diagram
8251 Registers
Mode Register
Mode Instruction (Asynchronous)
Mode Instruction (Synchronous)
Command Register
Status Register
8251 Timing
8251 USART Interface A7 A6 A5 A4 A3 A2 A1 IO/M D[7:0] RD WR A0 C/D CLK TxC RxC TxD RxD 8251 RS232
Programming 8251 8251 mode register 7 6 5 4 3 2 1 Mode register Mode register Number of Stop bits 00: invalid 01: 1 bit 10: 1.5 bits 11: 2 bits Parity 0: odd 1: even Parity enable 0: disable 1: enable Character length 00: 5 bits 01: 6 bits 10: 7 bits 11: 8 bits Baud Rate 00: Syn. Mode 01: x1 clock 10: x16 clock 11: x64 clock
Programming 8251 8251 command register TxE: transmit enable EH IR RTS ER SBRK RxE DTR TxE command register TxE: transmit enable DTR: data terminal ready RxE: receiver enable SBPRK: send break character ER: error reset RTS: request to send IR: internal reset EH: enter hunt mode
Programming 8251 8251 status register TxRDY: transmit ready DSR SYNDET FE OE PE TxEMPTY RxRDY TxRDY status register TxRDY: transmit ready RxRDY: receiver ready TxEMPTY: transmitter empty PE: parity error OE: overrun error FE: framing error SYNDET: sync. character detected DSR: data set ready
Simple Serial I/O Procedures Read start Check RxRDY Is it logic 1? Read data register* end Yes No * This clears RxRDY Write Check TxRDY Write data register* * This clears TxRDY