Khái niệm cổng truyền thông RS232 ( hay RS-232), chuẩn truyền thông RS232, cổng nối tiếp RS232, thiết bị chuyển đổi tín hiệu từ rs232 sang......rất phổ biến. Vậy, RS232 nó là cái gì? Hôm nay, BKAII sẽ giới thiệu tới các bạn khái niệm cơ bản về các vấn đề liên quan tới việc giao tiếp thiết bị qua cổng RS232.
Chuẩn truyền thông RS-232 được phát triển bởi the Electronic Industry Association and the Telecommunications Industry Association (EIA/TIA), là chuẩn truyền thông phổ biến nhất, thường được gọi tắt là RS-232 thay vì EIA/TIA-232-E. Chuẩn này chỉ đề cập đến việc truyền dữ liệu nối tiếp giữa một host (DTE-Data Terminal Equipment) và một ngoại vi (DCE-Data Circuit-Terminating Equipment).
Phiên bản đầu tiên của RS-232 được định nghĩa vào năm 1962, do đó các mức logic được định nghĩa khác với logic TTL. Ở ngõ ra của một mạch lái, mức cao (tương ứng với logic 0) là một điện áp từ +5 đến +15 V, còn mức thấp (tương ứng với logic 1) là một điện áp từ -5 đến -15 V. Tại ngõ vào của một bộ thu, mức cao được định nghĩa là từ +3 đến +15 V (gọi là space), và mức thấp được định nghĩa là từ -3 đến -15 V (gọi là mark).
Để giảm nguy cơ bị nhiễu giữa các tín hiệu kế cận, tốc độ thay đổi (slew rate) được giới hạn tối đa là 30 V/μs, và tốc độ cũng được giới hạn tối đa là 20 kbps (kilobit per second) (giới hạn này hiện đã được nâng lên nhiều lần).
Trở kháng nhìn bởi mạch lái được định nghĩa là từ 3 đến 7 kΩ. Tải dung tối đa của đường truyền cũng được giới hạn là 2500 pF, và như vậy tùy thuộc vào loại cáp mà chiều dài tối đa có thể được xác định từ điện dung trên đơn vị chiều dài của cáp.
Các tín hiệu RS-232 được định nghĩa tại DTE, theo bảng sau (chỉ nói đến các tín hiệu của đầu nối 9 chân)
Chân số | Chức năng | Chiều thông tin |
1 | Data Carrier Detect (DCD) | Từ DCE |
2 | Receive Data Line (RD) | Từ DCE |
3 | Transmit Data Line (TD) | Đến DCE |
4 | Data Terminal Ready (DTR) | Đến DCE |
5 | Ground | |
6 | Data Set Ready (DSR) | Từ DCE |
7 | Request To Send (RTS) | Đến DCE |
8 | Clear To Send (CTS) | Từ DCE |
9 | Ring Indicate (RI) | Từ DCE |
Các hệ thống logic hiện nay chủ yếu sử dụng các chuẩn logic TTL hay CMOS, do đó khi cần giao tiếp bằng chuẩn RS-232 sẽ phải dùng các mạch lái và thu (RS-232 driver và receiver, hay RS-232 transceiver) để chuyển đổi giữa TTL/CMOS và RS-232 vật lý. Các bộ transceiver hiện nay thường có sẵn các bơm điện tích (charge pump) để tạo ra các mức áp RS-232 vật lý (phổ biến là +12 V và -12 V) từ một điện áp nguồn đơn cực giá trị nhỏ (5 V hay 3.3 V).
Vì chuẩn RS-232 chỉ dành cho giao tiếp giữa DTE và DCE, do đó khi hai máy tính (là các DTE) cần giao tiếp với nhau thông qua chuẩn RS-232 thì cần phải có các DCE (chẳng hạn như modem) làm trung gian. Các DCE này là các ngoại vi nên có thể giao tiếp trực tiếp với nhau thông qua một chuẩn nào đó.
Hình 1 minh họa định dạng của một ký tự (character) được truyền theo chuẩn RS-232. Ở trạng thái nghỉ, các đường dữ liệu RS-232 ở trạng thái mark. Một ký tự luôn bắt đầu bằng một start bit (là một space), sau đó các bit được truyền theo thứ tự bit từ thấp đến cao (bit thấp nhất được truyền trước tiên), tiếp đến là một parity bit (nếu có), và cuối cùng là một hay nhiều stop bit (là một mark). Phổ biến nhất là định dạng 8N1, nghĩa là 8 bit dữ liệu, không có parity, và 1 stop bit.
Việc đọc một bit được truyền đến thường được thực hiện tại giữa bit, do đó các bộ thu và phát thường sử dụng xung clock bằng 16 lần tốc độ baud (số bit truyền được trong mỗi giây trên một đường tín hiệu). Bộ thu sẽ dò start bit, và sẽ đọc bit đầu tiên sau 24 chu kỳ xung clock khi đã phát hiện được start bit, các bit sau đó sẽ được đọc sau mỗi 16 chu kỳ xung clock.
Như có thể thấy, việc đồng bộ xung clock giữa phía thu và phía phát được thực hiện ở mỗi start bit cho mỗi ký tự được truyền. Do đó, trong trường hợp xấu nhất là truyền 12 bit (1 start bit, 8 bit dữ liệu, 1 parity bit, và 2 stop bit), chúng ta có thể chấp nhận việc lệch giá trị xung clock giữa phía thu và phía phát tối đa là khoảng 3% (tại bit cuối cùng sẽ bị lệch 11x3 = 33%). Do đó, chúng ta không nhất thiết phải sử dụng các bộ dao động thật chính xác để tạo xung clock cho các bộ thu phát RS-232. Hay nói cách khác, chúng ta không cần độ sai lệch xung clock là 0% đối với giao tiếp RS-232.
Đa số các DTE và các DCE đều có các bộ truyền nhận bất đồng bộ đa dụng (UART-Universal Asynchronous Receiver/Transmitter) ở dạng module phần cứng, do đó chúng ta thường không cần quan tâm đến các thao tác cấp thấp trong việc sử dụng giao tiếp RS-232. Tuy nhiên, nếu phần cứng của thiết bị không hỗ trợ giao tiếp RS-232, chúng ta có thể sử dụng một UART ngoài hay sử dụng phần mềm để giả lập một UART (kỹ thuật này thường được gọi là bit-banging).