giao tiep rs232
I, Giới thiệu chuẩn RS-232
* RS-232 là tên gọi một tập hợp các tiêu chuẩn giao tiếp nối tiếp giữa thiết bị đầu cuối (DTE) và thiết bi trung gian (DCE).
* Đây là chuẩn giao tiếp khá cũ và được chỉnh sửa nhiều lần trong quá trình phát triển để phù hợp các thiết bị truyền thông.
Có 2 loại thiết bị giao tiếp nối tiếp:
q DTE (data terminal equipment)
q DCE (data circuit-terminating equipment)
***Mô hình giao tiếp:
*** Lịch sử phát triển
* Năm 1962, tổ chức tiêu chuẩn quốc tế lần đầu tiên giới thiệu chuẩn giao tiếp RS-232.
RS-232 ban đầu được xây dựng phục vụ cho việc truyền thông giữa máy điện báo và modem.
Năm 1969, phiên bản RS-232-C thay đổi một số đặc tính điện để phù hợp với thiết bị đầu cuối thông minh
* Từ đó, cùng sự phát triển có thiết bị đầu cuối, RS-232 được sử dụng rộng rãi cho tới tận những năm 90.
Ngày nay, RS-232 không còn sử dụng rộng rãi do sự phát triển các chuẩn giao tiếp mới như USB...
* Trong quá trình phát triển, RS-232 được đổi tên nhiều lần: EIA RS-232, EIA-232, TIA-232. Phiên bản mới nhất của chuẩn này là TIA-232-F.
*** Chi tiết
* Trong RS-232, dữ liệu sẽ được gửi tuần tự từng bit một đến nơi nhận. RS-232 hỗ trợ truyền đồng bộ với bất đồng bộ và có thể hoạt động ở chế độ full duplex.
RS-232 hỗ trợ nhiều tín hiệu
nhưng quan trọng nhất là
tín hiệu Rx,Tx,Ground
*Mức điện áp:
Transmitter Receiver
Logical 0 +5 V to +15 V
Logical 1: +3--+25
Undefine -3 to +3
* Đầu nối:
q DB-9
q DB-25
** Các chân RS232:
+ chân 1 : Data Carrier Detect (DCD) : Phát tín hiệu mang dữ liệu
+ chân 2: Receive Data (RxD) : Nhận dữ liệu
+ chân 3 : Transmit Data (TxD) : Truyền dữ liệu
+ chân 4 : Data Termial Ready (DTR) : Đầu cuối dữ liệu sẵn sàng được kích hoạt bởi bộ phận khi muốn truyền dữ liệu
+ chân 5 : Singal Ground ( SG) : Mass của tín hiệu
+ chân 6 : Data Set Ready (DSR) : Dữ liệu sẵn sàng, được kích hoạt bởi bộ truyền khi nó sẵn sàng nhận dữ liệu
+ chân 7 : Request to Send : yêu cầu gửi,bô truyền đặt đường này lên mức hoạt động khi sẵn sàng truyền dữ liệu
+ chân 8 : Clear To Send (CTS) : Xóa để gửi ,bô nhận đặt đường này lên mức kích hoạt động để thông báo cho bộ truyền là nó sẵn sàng nhận tín hiệu
+ chân 9 : Ring Indicate (RI) : Báo chuông cho biết là bộ nhận đang
DB-9 male:
+Cổng DB-9 đực thường nằm ở thiết bị đầu cuối (DTE)
+Trong môi trường MS-DOS, người ta thường gọi là cổng COM (cổng giao tiếp).
DB-25 male:
Nằm trên thiết bị đầu cuối DTE
** Đặc tính điện:
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
* Chiều dài cable cực đại15m
* Tốc độ dữ liệu cực đại 20 Kbps
* Điện áp ngõ ra cực đại ± 25V
* Điện áp ngõ ra có tải ± 5V đến ± 15V
* Trở kháng tải3K đến 7K
* Điện áp ngõ vào ± 15V
* Độ nhạy ngõ vào ± 3V
* Trở kháng ngõ vào 3K đến 7K
* Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1,200 bps, 4,800bps,9,600 bps và 19,200 bps.
****Các địa chỉ vung nhớ của ngõ COM
* Ngõ COM1 có địa chỉ: 40h:0 gồm 2 bytes; 3f8h
* Ngõ COM2 có địa chỉ: 40h:02 gồm 2 bytes ; 2f8h
* Ngõ COM3 có địa chỉ: 40h:04 gồm 2 bytes; 3e8h
* Ngõ COM4 có địa chỉ: 40h:0 6gồm 2 bytes; 2e8h
* Địa chỉ lệch:
00h: thanh ghi đệm nhận /phát
01h: TG cho phép ngắt
02h: TG loại ngắt
03h: TG khuôn dữ liệu
00h: DLAB=1 trong ghi khuon dl, tg chia số thấp
01h: chia số cao
* Dlab: bit cho phép TG chia(Dlab=1)
* BRK: cho phép nghỉ(BRK=1)
* PAR2—PAR0: Kiểm tra:000:không kiểm tra; 001: lẻ; 011: chẵn
* STOP: số bit:1 :2 bit;0:1 bit
* DAB1—DAB0: số bit dữ liệu(00:5 bit; 01:6 bit;10:7 bit; 11: 8bit)
* Mov dx,3fbh; nạp thanh ghi khuon
* In al,dx; doc nội dung
* Or al,80h;dưa Dlab=1
* Out dx,al
* Mov dx,3f8h
* Mov al,80h; nập byte thấp
* Out dx,al
* Inc dx
* Mov al,01
* Out dx,al; nạp byte cao
* Mov dx,3fbh
* In al,dx
* And al,7fh; dưa Dlab=0
Out dx,al
** Tốc độ truyền và các số chia:
* Tốc độ(baud) số chia gia tri cao(h) gia tri thấp(h)
* 50 2304 09 00
* 300 384 01 80
* 9600 12 00 0c
* 19200 6 00 06
* 38400 3 00 03
* 57600 2 00 02
* 115200 1 00 01
** Sơ đồ kết nối dùng cổng nối tiếp:
* Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau.
* DTE - DCE: Straight Cable
* DTE - DTE: Null-Modem Cable
DCE - DCE: Tail Circuit Cable
* Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác nhau nên phải thực hiện điều khiển lưu lượng. Quá trinh điều khiển này có thể thực hiện bằng phần mềm hay phần cứng. Quá trình điều khiển bằng phần mềm thực hiện bằng hai ký tự Xon và Xoff. Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ liệu). Nếu DCE bận thì sẽ gởi ký tự Xoff. Quá trình điều khiển bằng phần cứng dùng hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS.
* Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực tác động lên DSR của DTE2 cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo). Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1 có thể nhận dữ liệu.
Các phương thức nối giữa DTE và DCE:
* - Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.
* - Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm
chỉ được truyền theo 1 hướng.
* - Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.
* Định dạng khung truyền dữ liệu theo chuẩn
RS-232:
* Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do vậy nên tại 1 thời điểm chỉ có 1 bit được truyền(1 kí tự)
* Bộ truyền gửi 1 bit bắt đầu(bit start) để thông báo cho bộ nhận biết kí tự sẽ kí tự sẽ được gửi đến trong lần truyền bit tiếp theo.Bit này luôn là mức 0
* Tiếp theo các bits data sẽ được gửi đến(tối đa là 8bits dữ liệu) dưới dạng mà ASCII
* Sau đó là Parity bit(bit kiểm tra chẵn lẻ) và cuối cùng là bit dừng-bit stop có thể là 1, 1,5 hay 2 bit
***Các thông số quan trọng trong chuẩn RS232:
* Tốc độ Baud:
-Một trong các tham số chính đặc trưng cho quá trình truyền dữ liệu qua cổng nối tiếp RS-232 là tốc độ truyền nhận dữ liệu, còn gọi là tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được trong 1 giây. Cả bộ truyền và bộ nhận đều phải thiết lập để hoạt động với cùng một tốc độ bit này.
-Ngoài tốc độ bit còn có một thuật ngữ khác được sử dụng để mô tả tốc độ truyền là tốc độ Baud. Tốc độ bit phản ánh tốc độ thực tế mà các bit được truyền. Còn tốc độ Baud liên quan đến tốc độ mà các phần tử mã hóa dữ liệu được sử dụng để diễn tả các bit được truyền. Bởi vì một phần tử báo hiệu sự mã hóa một bit, nên khi đó hai tốc độ là đồng nhất. Chỉ trong các modem, do có thêm quá trình biến đổi nên tốc độ bit mới khác tốc độ Baud.
-Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200 …
-Một trong những yêu cầu quan trọng khi sử dụng chuẩn truyền thông nối tiếp RS-232 là thời gian chuyển mức logic không được vượt quá 4% thời gian truyền 1 bit. Vì thế, nếu tốc độ bit càng cao, thời gian truyền 1 bit càng nhỏ, thì thời gian chuyển mức logic phải càng nhỏ. Vấn đề này làm giới hạn tốc độ Baud và khoảng cách truyền. Ví dụ, với tốc độ Baud là 19200, ta có thể truyền xa nhất là 50 feet (khoảng 15,24 m).
* Parity bit(bit chẵn lẻ)
Thực chất của quá trình kiểm tra lỗi khi truyền dữ liệu là bổ sung thêm dữ liệu vào dòng dữ liệu được truyền để tìm ra hoặc sửa chữa một lỗi trong quá trình truyền. Chuẩn RS-232 sử dụng một kỹ thuật đơn giản được gọi là kiểm tra chẵn lẻ (parity checking).
Một bit chẵn lẻ (parity bit) được bổ sung vào dữ liệu được truyền để cho thấy số lượng các bit “1” được gửi trong một khung truyền là chẵn (parity chẵn) hoặc lẻ (parity lẻ). Đây là một phương pháp đơn giản để mã hóa lỗi và chỉ cần một cổng XOR để tạo ra parity bit. Parity bit được bổ sung vào dữ liệu được truyền bằng cách chèn nó vào một vị trí chính xác của bit trong thanh ghi dịch.sau khi đã đếm xem có bao nhiêu bit “1” được gửi.
Một parity bit chỉ có thể tìm ra một số lẻ các lỗi, chẳng hạn như 1, 3, 5, 7, … Nếu như có một số chẵn các bit mắc lỗi thì parity bit sẽ trùng giá trị với trường hợp không mắc lỗi. và không thể phát hiện ra lỗi. Vì thế, kỹ thuật mã hóa lỗi này thường không được sử dụng trong trường hợp có khả năng một vài bit bị mắc lỗi.
* Start bit: là bit đầu tiên được truyền trong 1 frame truyền,bit này có chức năng báo cho bộ nhận biết rằng có 1 gói dữ liệu sắp được truyền tới.Do đường truyền luôn ở trạng thái cao khi nghỉ(Idle). Bên gửi nếu muốn thực hiện việc truyền dữ liệu nó sẽ gửi 1 bit start để kéo đường truyền xuống xuống mức “0”.Với chuẩn RS-232,bit start mang giá trị “0” tương ứng với mức điện áp trong khoảng +5 -> +15V. Start bit là bit bắt buộc phải có trong khung truyền
* Stop bits: là một hoặc nhiều bit báo cho thiết bị nhận rằng 1 gói dữ liệu đã được gửi xong. Sau khi nhận stop bits,thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu.Stop bits là bit bắt buộc phải có trong khung truyền. Trong RS-232 stop bits có thể là 1, 1.5 hay 2 bits và giá trị của stop bits (ngược với start bit) luôn là giá trị nghỉ (Idle) mang giá trị 1 tương ứng với mức đện áp -5 -> -15V
* Bắt tay (Hand-shaking):
Việc truyền dữ liệu có thể tiến hành theo 3 cách:
-Không có bắt tay
-Bắt tay bằng phần cứng
-Bắt tay bằng phần mềm
Truyền dữ liệu không bắt tay:
Trong cách truyền dữ liệu này, người ta giả thiết rằng bộ nhận (receiver) có thể đọc dữ liệu từ bộ đệm nhận (receive buffer) trước khi ký tự khác được nhận về. Dữ liệu được gửi từ vị trí kết nối với chân TxD của bộ truyền (transmitter) và được nhận ở vị trí nối với chân RxD của bộ nhận. Khi DTE (chẳng hạn như một máy tính) nối với DTE khác thì TxD của thiết bị này sẽ nối với với RxD của thiết bị kia và ngược lại. Đồng thời các chân DTR và DSR được nối nhau, RTS và CTS được nối nhau trên cùng một thiết bị
-Bắt tay bằng phần cứng:Phương pháp này sử dụng các đường phần cứng thực. Bắt tay phần cứng làm dừng các ký tự trong bộ đệm nhận để khỏi bị ghi đè lên
Khi bộ truyền muốn truyền dữ liệu, nó cho đường dẫn RTS ở trạng thái hoạt động, rồi giám sát đường dẫn CTS cho tới khi đường dẫn này chuyển sang trạng thái hoạt động. Nếu CTS vẫn còn đang ở trạng thái chưa hoạt động nghĩa là bộ nhận đang bận, không thể nhận dữ liệu. Khi bộ nhận đọc từ bộ đệm nhận xong, đường dẫn RTS sẽ tự động chuyển sang trạng thái kích hoạt động để báo cho bộ truyền là nó đã sẵn sàng nhận dữ liệu.
Việc nhận dữ liệu cũng diễn ra tương tự với việc truyền dữ liệu, khi đó các đường dẫn DSR và DTR được sử dụng
* Bắt tay bằng phần mềm:
Phương pháp này sử dụng các byte dữ liệu như ký tự điều khiển
XON \ XOFF Handshaking là một giao thức phần mềm thường được sử dụng để kiểm soát lưu lượng dữ liệu. Giả sử rằngmáy tính đang gửi dữ liệu đến một thiết bị mà nó không thể chấp nhận nhiều dữ liệu hơn được nữa trong lần truyền đó,thiết bị sẽ gửi ký tự XOFF duy nhất đến máy tính để dừng việc gửi dữ liệu lại cho đến khi nó nhận được một ký tự Xon để khởi động lại quá trình truyền.
Xon là ký tự ASCII 17 và XOFF là ký tự ASCII 19.
***Giao tiếp vi điều khiển:
* Vì tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích với điện áp TTL nên để giao tiếp Vi điều khiển với máy tính qua cổng COM ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ta chọn vi mạch MAX232 để thực hiện việc tương thích điện áp. Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong giao diện nối tiếp với máy tính. Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc –10V ở phía truyền và các mức +3…+15V hoặc -3…-15V thành mức TTL ở phía nhận.
* Khi dữ liệu từ máy tính được gởi đến KIT Vi điều khiển qua cổng COM thì dữ liệu này sẽ được đưa vào từng bit (nối tiếp) vào thanh ghi SBUF (thanh ghi đệm), đến khi thanh ghi đệm đầy thì cờ RI trong thanh ghi điều khiển sẽ tự động Set lên 1 và lúc này CPU sẽ gọi chương trình con phục vụ ngắt và dữ liệu sẽ được đưa vào để xử lý.
* Vi mạch này nhận mức RS232 đã được gởi tới từ máy tính và biến đổi tín hiệu náy thành tín hiệu TTL để cho tương thích VĐK và nó cũng thực hiện ngược lại là biến đổi tín hiệu TTL từ Vi điều khiển thành mức +12V, -12V để cho phù hợp hoạt động của máy tính. Giao tiếp theo cách này, khoảng cách từ máy tính đến thiết bị ngoại vi có thể đạt tới trên 20 mét.
* Khi dữ liệu từ máy tính được gởi đến Vi điều khiển qua cổng COM thì dữ liệu này sẽ được đưa vào từng bit (nối tiếp) vào thanh ghi SBUF (thanh ghi đệm), đến khi thanh ghi đệm đầy thì cờ RI trong thanh ghi điều khiển sẽ tự động Set lên 1 và lúc này CPU sẽ gọi chương trình con phục vụ ngắt và dữ liệu sẽ được đưa vào để xử lý.
** Programming 8251:
q 8251 command register:
TxE: transmit enable
DTR: data terminal ready, DTR pin will be low
RxE: receiver enable
SBPRK: send break character, TxD pin will be low
ER: error reset
RTS: request to send, CTS pin will be low
IR: internal reset
EH: enter hunt mode
q 8251 status register:
q TxRDY: transmit ready
q RxRDY: receiver ready
q TxEMPTY: transmitter empty
q PE: parity error
q OE: overrun error
q FE: framing error
q SYNDET: sync. character detected
q DSR: data set ready
Bạn đang đọc truyện trên: TruyenTop.Vip