การ Interface กับ Serial Port (Part III)

วันที่โพสต์: Apr 12, 2010 2:2:34 AM

การ Interface กับ Serial Port (Part III)

Pin and Signal Functions

ตารางข้างล่างนี้แสดงถึงหน้าที่ของขาต่าง ๆ

หน้าที่ของ 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