การ Interface กับ Serial Port (Part III)
Pin and Signal Functions
ตารางข้างล่างนี้แสดงถึงหน้าที่ของขาต่าง ๆ
Abbreviation
|
Full Name
|
Originator
|
Function
|
TD
|
Transmit Data
|
DTE
|
Serial data output (TXD) from DTE.
|
RD
|
Receive Data
|
DCE
|
Serial data input (RXD) to DTE.
|
CTS
|
Clear To Send
|
DCE
|
Tell DTE that DCE is ready to exchange data.
|
(D)CD
|
(Data) Carrier Detect
|
DCE
|
Carrier from remote DCE is detected.
|
DSR
|
Data Set Ready
|
DCE
|
Tell DTE that DCE is ready to establish a link.
|
DTR
|
Data Terminal Ready
|
DTE
|
Tell DCE that DTE is ready to establish a link.
|
RTS
|
Ready To Send
|
DTE
|
Tell DCE that DTE is ready to exchange data.
|
RI
|
Ring Indicator
|
DCE
|
Ringing signal from the phone line is detected.
|
หน้าที่ของ Signal ต่าง ๆ มีดังนี้
Protective ground เป็นจุดที่ต่อกับตัวเปลือกของอุปกรณ์ และไม่ต่อกับสัญญาณใด
ๆ ในระบบ เพื่อใช้ต่อลงดิน เป็นการป้องกันอันตรายจากไฟลัดวงจร และใช้เป็น Shield
ป้องกันการรบกวน
Signal ground หรือ Common return เป็นจุดสำคัญที่สุดที่ต้องมีในระบบ
RS-232 เพราะเป็นจุดอ้างอิงของทุกสัญญาณ ยกเว้น Protective ground
Transmit data เป็นสัญญาณข้อมูลที่ส่งจาก DTE ไปยัง DCE ในขณะที่ไม่ได้ส่งข้อมูลมันจะมีสถานะเป็น
Logic "1" หรือ "Mark" หรือ "Off" หรือ -5V
ถึง -15V ที่ด้านส่ง (DTE) หรือ -3V ถึง -15V ที่ด้านรับ (DCE) การส่งข้อมูลจะเกิดขึ้นได้ต้องมีสัญญาณควบคุมที่เกี่ยวข้อง
"On" ก่อนคือสัญญาณ RTS, CTS, (D)CD, DTR และ DSR
Recieve data เป็นสัญญาณข้อมูลจาก DCE มายัง DTE ในขณะที่ไม่ได้ส่งข้อมูลมันจะมีสถานะเป็น
Logic "1" หรือ "Mark" หรือ "Off" หรือ -5V
ถึง -15V ที่ด้านส่งหรือ -3V ถึง -15V ที่ด้านรับ ในขณะที่ไม่ได้ส่งข้อมูลมันจะมีสถานะเป็น
Logic "1" หรือ "Mark" หรือ "Off" หรือ -5V
ถึง -15V ที่ด้านส่ง (DCE) หรือ -3V ถึง -15V ที่ด้านรับ (DTE) กรณีที่เป็นการสื่อสารแบบ
Half-duplex สัญญาณ RD จะอยู่สถานะ "Off" ขณะที่สัญญาณ RTS อยู่ในสถานะ
"On" และสัญญาณ RD จะยังคงอยู่ในสถานะ "Off" อีกชั่วระยะหนึ่งหลังจากที่สัญญาณ
RTS เปลี่ยนจากสถานะ "On" มาเป็น "Off" แล้วเพื่อให้การรับ-ส่งข้อมูลเสร็จสมบูรณ์
Request to send เป็นสัญญาณจาก DTE ส่งไปให้ DCE เพื่อขอส่งข้อมูลไป
ปรกติจะอยู่ในสถานะ "Off" เมื่อต้องการส่งข้อมูลจะเปลี่ยนเป็นสถานะ "On"
จนกว่าการส่งเสร็จสิ้นจึงเปลี่ยนกลับมาที่สถานะ "Off" ตามเดิม ทั้งนี้ทาง
DTE ต้องได้รับสัญญาณ CTS จึงจะสามารถส่งข้อมูล TD ไปยัง DCE ได้ และสัญญาณ RTS
ที่กลับสู่สถานะ "Off" จะไม่สามารถเปลี่ยนเป็น "On" ใหม่ขณะที่สัญญาณ
CTS อยู่ในสถานะ "On" ต้องรอจนกว่าสัญญาณ CTS เปลี่ยนมาอยู่ในสถานะ "Off"
ก่อน เพื่อป้องกันการเกิด Overrun
Clear to send เป็นสัญญาณที่ DCE ส่งให้ DTE เพื่อแจ้งว่าพร้อมรับการส่งข้อมูลจาก
DTE
Data set ready เป็นสัญญาณที่ DCE ส่งให้ DTE เพื่อแจ้งว่า DCE
สามารถเชื่อมโยงไปยังปลายทางและพร้อมที่จะติดต่อแล้ว
Data Terminal ready
เป็นสัญญาณที่ DTE ส่งให้ DCE เพื่อแจ้งว่า DTE
พร้อมหรือต้องการจะติดต่อสื่อสาร ซึ่งสัญญาณ DTR นี้ต้องเกิดก่อนทาง DCE
จึงจะทำการติดต่อไปยังปลายทางและเมื่อติดต่อได้แล้วจึงส่งสัญญาณ DSR มายัง
DTE เพื่อแจ้งให้รู้ว่าพร้อมรับการสื่อสารแล้ว และถ้า DTR เปลี่ยนเป็น Off
แปลว่า DTE ไม่ต้องการติดต่อสื่อสารแล้วทาง DCE
ก็จะปิดช่องสื่อสารและเปลี่ยนสัญญาณ DSR เป็น Off ทันที คู่สัญญาณระหว่าง
RTS กับ CTS เป็นเรื่องของความพร้อมเกี่ยวกับช่องสื่อสารระหว่าง DTE กับ
DCE ส่วนคู่สัญญาณ DTR กับ DSR เป็นเรื่องของความพร้อมเกี่ยวกับตัวอุปกรณ์
DTE กับ DCE
Data carrier detect เป็นสัญญาณที่ DCE ส่งให้ DTE เพื่อแจ้งว่าได้รับสัญญาณพาหะจาก
DCE ที่อยู่อีกด้านหนึ่งของการสื่อสาร ซึ่งหมายความว่า ช่องการสื่อสารระหว่าง DCE
ทั้ง 2 ไม่ขาดตอน พร้อมที่จะทำการสื่อสารได้ ซึ่งอุปกรณ์ DTE หรือ Software ที่ควบคุมการสื่อสารมักจะตรวจสัญญาณนี้
ถ้าไม่อยู่ที่ On แสดงว่าช่องการสื่อสารขาด ก็จะไม่ทำการรับหรือส่งข้อมูล
Ring Indicator เป็นสัญญาณจาก DCE แจ้งให้ DTE รู้ว่ามีการเรียกจาก
DCE ที่อยู่อีกด้านหนึ่งของการสื่อสาร ซึ่งมักจะใช้ในระบบ Automatic answering
อุปกรณ์ DCE บางรุ่นได้รับการออกแบบมาให้สามารถตรวจสอบระบบสื่อสารได้ด้วยการสั่งจาก
DTE ให้ทำการ Loop back ทั้งจาก Local หรือ Remote ด้วยการใช้สัญญาณที่กล่าวมาทั้งหมดนี้
Null Modems
Null Modem ใช้สำหรับเชื่อมโยงระหว่าง DTE 2 ตัวเข้าด้วยกันโดยตรง ซึ่งโดยมากใช้ในการถ่ายข้อมูลระหว่าง
Computer หรือใช้ในการพัฒนาระบบ Microprocessor หรือ Microcontroller ต่าง ๆ
Figure 1. Null modem
wiring diagram.

จะเห็นว่าใช้สายเพียง 3 เส้นคือ TD, RD และ SG และมีการต่อ Jump ที่หัวต่อแต่ละข้างอีกเล็กน้อยเท่านั้น
เพื่อหลอกให้ Computer คิดว่ามันกำลังคุยกับ DCE อยู่
หมายเหตุ TD ของ Computer เครื่องหนึ่งจะต้องต่อกับ RD ของ Computer อีกเครื่องหนึ่ง
แต่ถ้าเป็นการต่อระหว่าง DTE กับ DCE จริง ๆ จะต่อขาสัญญาณตรงกันโดยไม่ต้องสลับสายเช่นขา
2 ของ DTE จะต่อกับขา 2 ของ DCE และขา 3 ของ DTE จะต่อกับขา 3 ของ DCE เป็นต้น
Loopback Plugs
สำหรับ Plug ตัวนี้มีวัตถุประสงค์เพื่อช่วยในการเขียน Program ที่ติดต่อกับ Serial
Port แต่อาจจะไม่สามารถใช้กับ Program ที่ใช้วิเคราะห์หาจุดเสีย (Diagnostic program)
เพราะแต่ละ Program อาจจะออกแบบการเชื่อมต่อที่แตกต่างกันไป
Figure 2. Loopback plug wiring
diagram.
DTE/DCE Speeds
ความเร็วของการติดต่อระหว่าง DTE กับ DCE หรือระหว่าง Computer กับ Modem ซึ่งมักจะเรียกว่า
Terminal speed และความเร็วระหว่าง DCE กับ DCE หรือระหว่าง Modem กับ Modem ซึ่งมักจะเรียกว่า
Line speed ปรกติ Terminal speed มักจะเร็วกว่า Line speed เช่น Modem มี speed
56K baud ขณะที่ติดต่อกับ Computer ด้วย speed 115.2Kbps เป็นต้น ซึ่ง COM Port
ของ Computer ต้อง set ให้เป็น 115.2Kbps ด้วย ปัจจุบัน UART เบอร์ 16550A จะรองรับ
speed ได้ 115.2Kbps และเบอร์ 16C650 จะรองรับ speed ได้ 230.4Kbps
Flow Control
การติดต่อระหว่าง DTE และ DCE จะมีการควบคุมการไหลของข้อมูล เพื่อไม่ให้เกิดการ
Overflow ขึ้นได้ ซึ่งมีอยู่ 2 แบบคือ Hardware flow control และ Software flow
control
สำหรับ Software flow control มักจะเรียกว่า Xon/Xoff flow control ซึ่งใช้รหัส
ASCII 17 เป็นสัญญาณ Xon และใช้รหัส ASCII 19 เป็นสัญญาณ Xoff หลักการทำงานก็ง่าย
ๆ คือ Modem จะมี Buffer อยู่ เมื่อ Modem รับข้อมูลจาก Computer จน Buffer ใกล้จะเต็ม
มันก็จะส่งสัญญาณ Xoff ไปให้ Computer เพื่อให้ Computer หยุดส่งข้อมูลให้มันชั่วคราว
และเมื่อ Buffer มีที่ว่างถึงระดับหนึ่ง Modem ก็จะส่งสัญญาณ Xon ไปให้ Computer
เพื่อให้ Computer ส่งข้อมูลให้มันต่อ การควบคุมโดยวิธีนี้ประหยัดสายสัญญาณ เพราะรับ-ส่งผ่าน
TD และ RD แต่อาจทำให้การสื่อสารช้าลงอย่างเห็นได้ชัดในกรณีที่ใช้กับการสื่อสารที่มี
speed ต่ำ เพราะแต่ละตัวอักษร ASCII ที่รับ-ส่งจะมีขนาด 10 Bit
ส่วน Hardware flow control มักจะเรียกว่า RTS/CTS flow control จะใช้สายสัญญาณของ
Serial Port ในการควบคุม ทำให้ไม่บั่นทอนความเร็วของข้อมูล หลักการทำงานคือ เมื่อ
Modem มีที่ว่างเพื่อรับข้อมูล มันก็จะส่งสัญญาณ CTS ไปให้ Computer และเมื่อมันใกล้จะเต็ม
มันก็จะหยุดส่งสัญญาณ CTS ไปให้ Computer
The UART (8250’s and Compatibles)
เครื่อง PC ส่วนใหญ่จะใช้ UART ในกลุ่ม 8250 ซึ่งรวมทั้ง 16450, 16550, 16650
และ 16750
Figure 3. Pin diagram for
16450, 16550 & 8250 UART
UART เบอร์ 16550 มีลักษณะเหมือนกับเบอร์ 16450 และ 8250 ยกเว้นขา 24 และขา 29
โดยเบอร์ 8250/16450 ขา 24 จะเป็น Chip Select Out เป็นสัญญาณบอกว่า Chip ตัวนี้ได้ถูกเลือกใช้งานอยู่
และขา 29 ไม่ได้ใช้งาน ส่วนเบอร์ 16550 จะใช้ขา 24 เป็นสัญญาณ Transmit Ready และขา
29 เป็นสัญญาณ Receive Ready ซึ่งสามารถใช้กับ Direct Memory Access (DMA) โดยสามารถกำหนด
Mode การทำงานได้ 2 Mode คือ Mode 0 หรือ 16450 Mode เป็น Single transfer DMA
และ Mode 1 เป็น Multi-transfer DMA
Mode 0 ใน Mode นี้ RXRDY จะเป็น Active low เมื่อมีข้อมูลอย่างน้อย 1
Byte อยู่ใน Buffer ของภาครับ และจะเป็น Inactive high เมื่อไม่มีข้อมูลใน Buffer
ของภาครับ ส่วน TXRDY จะเป็น Active low เมื่อไม่มี ข้อมูลใน Buffer ของภาคส่ง
และจะเป็น Inactive high หลังจากที่มีข้อมูล Byte แรกเข้าสู่ Buffer ของภาคส่ง
การเข้าสู่ Mode 0 จะเกิดขึ้นได้จาก 2 กรณีคือ เมื่อ FIFO Buffer ถูก Disable โดย
Bit 0 ของ FIFO Control Register (FCR) หรือเมื่อ FIFO Buffer ได้ถูก Enable ไว้แต่เลือก
DMA Mode 0 ไว้โดย Bit 3 ของ FCR
Mode 1 ใน Mode นี้ RXRDY จะเป็น Active low เมื่อข้อมูลใน Buffer ถึงระดับที่กำหนดหรือเมื่อ
16550 เกิด Time out และจะกลับสู่สภาพ Inactive เมื่อไม่มีข้อมูลใน Buffer ของภาครับ
ส่วน TXRDY จะเป็น Active low เมื่อไม่มีข้อมูลใน Buffer ของภาคส่ง และจะเป็น Inactive
เมื่อมีข้อมูลอยู่เต็มใน Buffer ของภาคส่ง การเข้าสู่ Mode 1 จะเกิดขึ้นเมื่อ FIFO
Buffer ได้ถูก Enable และกำหนด DMA ให้ทำงานใน Mode 1 เท่านั้น
ปรกติ UART ทุกตัวจะมีระดับสัญญาณตามมาตรฐาน TTL คือ 0Volt และ +5Volt ดังนั้นจึงต้องมีวงจรที่ทำหน้าที่เป็น
RS-232 Converter เพื่อแปลงสัญญาณระหว่าง TTL และ RS-232 อีกทีหนึ่ง เช่น IC เบอร์
DS-1488 และ DS-1489 ที่ใช้ในเครื่อง PC ทั่วไป และใช้ไฟ +12Volt กับ –12Volt ที่มีอยู่ในเครื่อง
PC เป็นระดับสัญญาณด้าน RS-232
Table 2. Pin assignments for
16550A UART
Pin No.
|
Name
|
Note
|
1 : 8
|
D0 : D7
|
Data Bus
|
9
|
RCLK
|
Receiver Clock Input. The frequency of this input should equal the
receiver's baud rate x 16
|
10
|
RD
|
Receive Data
|
11
|
TD
|
Transmit Data
|
12
|
CS0
|
Chip Select 0 : Active High
|
13
|
CS1
|
Chip Select 1 : Active High
|
14
|
nCS2
|
Chip Select 2 : Active Low
|
15
|
nBAUDOUT
|
Baud Output : Output from programmable baud rate generator. Frequency
= Baud rate x 16
|
16
|
XIN
|
External crystal input. Used for baud rate generator oscillator.
|
17
|
XOUT
|
External crystal output.
|
18
|
nWR
|
Write line (inverted).
|
19
|
WR
|
Write line (not inverted).
|
20
|
VSS
|
Connected to common ground.
|
21
|
RD
|
Read line (inverted).
|
22
|
nRD
|
Read line (not inverted).
|
23
|
DDIS
|
Driver disable. This pin goes low when CPU is reading from UART. Can
be connected to bus transceiver in case of high capacity data bus.
|
24
|
nTXRDY
|
Transmit ready.
|
25
|
nADS
|
Address strobe. Used if signals are not stable during read or write
cycle.
|
26
|
A2
|
Adderss bit 2
|
27
|
A1
|
Address bit 1
|
28
|
A0
|
Address bit 0
|
29
|
nRXRDY
|
Receive ready.
|
30
|
INTR
|
Interrupt output.
|
31
|
nOUT2
|
User output 2
|
32
|
nRTS
|
Request to send.
|
33
|
nDTR
|
Data terminal ready.
|
34
|
nOUT1
|
User output 1
|
35
|
MR
|
Master reset.
|
36
|
nCTS
|
Clear to send.
|
37
|
nDSR
|
Data set ready.
|
38
|
nDCD
|
Data carrier detect.
|
39
|
nRI
|
Ring indicator.
|
40
|
VDD
|
Connected to +5Volt power supply.
|