Điều khiển thu phát dữ liệu qua cổng Com: Máy tính và ngoại vi muốn liên kết được với nhau cần phải được kết nối với nhau theo một chuẩn nhất định.. Việc truyền dữ liệu qua cổng RS-232C
Trang 1Chương II GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÝ
A. Điều khiển thu phát dữ liệu qua cổng Com:
Máy tính và ngoại vi muốn liên kết được với nhau cần phải được kết nối với nhau theo một chuẩn nhất định Có nhiều kiểu kết nối ngoại vi với máy tính, trong đó các cách thường dùng là gắn vào slot trên Mainboard, qua cổng máy in và thông qua cổng nối tiếp( cổng Com) Mỗi kiểu đều có nhiều ưu và khuyết điểm khác nhau, tùy theo yêu cầu mà ta có thể chọn những phương cách khác nhau
Cổng nối tiếp được sử dụng cho việc truyền tín hiệu theo dạng nối tiếp Cổng nối tiếp truyền mức logic 1 ở tầm điện áp từ –3V đến –25V và mức logic 0 là từ +3V đến +25V Trong khi đó, với cổng song song, mức logic 0 là 0V logic 1 là +5V Vì vậy cổng nối tiếp có thể có mức chênh lệch điện áp tối đa là 50V so với 5V của cổng song song và do đó vấn đề điện áp rơi trên đường dây ở đường truyền nối tiếp không nghiêm trọng hơn so với đường truyền song song Do đó truyền tín hiệu theo kiểu nối tiếp không bị ảnh hưởng nhiễu nhiều như kiểu cổng song song
Giao tiếp nối tiếp chỉ sử dụng 3 đường dây cho TXD, RXD và GND và do đó yêu cầu cho thiết bị giao tiếp với nó có ít chân hơn so với 19 hay 25 dây trong việc giao tiếp song song và yêu cầu ít nhất là 9 chân cho giao tiếp nối tiếp,điều này làm phức tạp thêm công nghệ chế tạo và giá thành sản xuất đối với các thiết bị giao tiếp song song
I Giới thiệu cổng nối tiếp RS-232C:
Cổng giao RS-232C là giao diện phổ biến rộng rãi nhất Giống như cổng máy
in, cổng nối tiếp RS-232C được sử dụng mức cách thuận tiện cho mục đích đo lường và điều khiển
Việc truyền dữ liệu qua cổng RS-232C được tiến hành theo cách nối tiếp, nghĩa là các bit dữ liệu được gởi đi nối tiếp nhau trên cùng mức đường truyền dẫn Cổng nối tiếp RS-232C không phải là một hệ thống bus, nó cho phép dễ dàng tạo ra liên kết dưới hình thức điểm-điểm giữa hai máy tính cần trao đổi thông tin với nhau Một
thành viên thứ 3 không thể tham gia vào cuộc trao đổi này
Mức logic 0 sẽ nằm giữa +3V-> +25v
Mức logic 1 từ -3V -> -25V
Khoảng từ –3V -> +3V là trạng thái mặc định
Điện áp hở mạch phải nhỏ hơn 25V
Dòng ngắn mạch không vượt quá 500mA
Trang 2Có hai loại Jack cắm nối tiếp RS-232C là loại 9 chân và 25 chân Chúng khác với cổng máy in ở chỗ cổng máy in là loại ổ cắm còn đây là Jack nhiều chân Các Jack cắm RS-232C có tổng cộng 8 đường dẫn chưa kể đường nối đất Việc truyền dữ liệu xảy ra ở trên hai đường dây TXD và RXD Máy tính nhận dữ liệu từ các thiết bị khác thông qua đường TXD và nó dùng đường RXD để truyền dữ liệu đến các thiết
bị kia
TD Transmit data Đường truyền dữ liệu
RD Receive Data Đường nhân dữ liệu
CTS Clear To Send Báo modem đã sẵn sàng cho việc trao đổi dữ
liệu DCD Data Carrier
detect
DCD sẽ tích cực khi modem nhận được dữ liệu
DSR Data Set Ready Báo cho UART là modem đã sẵn sàng cho
việc thiết lập đường truyền
Ready
Báo cho modem biết là UART đã sẵn sàng cho việc kết nối
Send Thông báo cho modem biết là UART đã sẵn sàng cho việc truyền nhận dữ liệu
RI Ring Indicator Lên mức tích cực khi modem nhận được tín
hiệu
Bảng chức năng các chân trong RS-232C
Trang 3Name Address IRQ Name Address IRQ
Bảng địa chỉ các cổng.
Việc truyền dữ liệu giữa máy tính và ngoại vi được điều khiển bởi các bộ điều khiển thu phát đồng bộ hay bất đồng bộ
II Chip thu phát bất đồng bộ-Vi mạch UART (Universal Asynchronous Receiver) 8250A/16450:
1 Tổng quan:
Vi mạch 8250A của Intel là một UART được dùng rất rộng rãi.UART 8250A có các chức năng sau:
_ Biến đổi dữ liệu song song từ CPU thành dạng nối tiếp để truyền đi đồng thời thu dòng dữ liệu nối tiếp, đổi chúng thành dữ liệu dạng song song và gởi chúng đến CPU
_ Thêm các bit start, stop và parity vào từng kí tự trước khi phát đi và tách các bit này ra khỏi kí tự nhận được
_ Bảo đảm các bit dữ liệu được truyền đi với tốc độ được lập trình trước, kiểm tra để phát hiện lỗi
_ Set tín hiệu bắt tay phần cứng và cho biết trạng thái của tín hiệu
2 Các thanh ghi UART:
_ Thanh ghi điều khiển đường truyền (Line Control Register – LCR): Dùng đặt các thông số truyền
_ Thanh ghi điều khiển Modem(Modem Control Register- MCR): Điều khiển tín hiệu bắt tay từ UART
_ Thanh ghi cho phép ngắt( Interrput Enable Register-IER): Thanh ghi này cho phép/cấm các nguyên nhân gây ngắt khác nhau tương ứng với các bit trong thanh ghi Các bit của thanh ghi này ở mức 1 là cho phép, mức 0 là cấm ngắt
_ Thanh ghi trạng thái( Status Register –SR):Thông báo cho CPU biết trạng thái hoạt động của UART:
_ Thanh ghi trạng thái đường truyền (Line Status Register-LSR): Chứa thông tin về truy xuất dữ liệu
_ Thanh ghi trạng thái modem( Modem Status Register-MSR): Chứa thông tin liên quan về trạng thái của những đường truyền bắt tay
_ Thanh ghi định danh ngắt( Interrupt Identification Register-IIR): Thanh ghi nhận dạng nguồn ngắt là một thanh ghi chỉ đọc ( read only) Trạng thái các bit
Trang 4trong thanh ghi này sẽ thay đổi khi có sự thay đổi trạng thái của các thanh ghi khác trong UART CPU sẽ đọc bit IR0 để xem có yêu cầu ngắt hay không và kiểm tra nguồn ngắt từ các bit IR1-IR0
Các vi mạch UARTS:
• 8250: Là vi mạch UART đầu tiên 8250A là phiên bản cải tiến hơn của 8250 với tốc độ được cải tiến nhiều
• 8250A: Tốc độ nhanh hơn so với 8250, có cùng chức năng như 16450
• 16450: Cải tiến của 8250, hoạt động tốt ở tốc độ 38.4bps, hiện này vẫn còn được sử dụng rộng rãi
• 16550: Là thế hệ đầu tiên của họ UART có buffer Có hai loại buffer Tuy nhiên 16550 không được sử dụng nhiều và bị thay thế bởi 16550A
• 16550A: Là vi mạch UART thông dụng nhất sử dụng cho mục đích giao tiếp với tốc độ cao như 14.4k và 28.8k modem
• 16650/16750: Thuộc UART thế hệ mới chứa 32/64 byte FIFO, hỗ trợ Power management
III Truyền nhận dữ liệu qua cổng nối tiếp:
Việc truyền nhận dữ liệu qua cổng nối tiếp được thực hiện bởi UART Nguyên tắc chip UART hoạt động cho việc truyền và nhận một kí tự như sau:
a Để truyền một kí tự, đầu tiên kí tự đó sẽ được đưa vào thanh ghi đợi truyền ( Transmit Holding Register), sau đó được đưa vào thanh ghi dịch của bộ phát ( Transmit Shift Register) Sau khi kí tự trước đã được truyền xong, từng bit của kí tự được truyền sẽ được dịch vào kênh dữ liệu
b Khi nhận một kí tự, đầu tiên các bit của nó lần lượt được nạp vào thanh ghi dữ liệu của bộ thu( Receive Shift Register ), sau đó chúng được đưa vào thanh ghi dữ liệu của bộ thu ( Receive Data Register ) sau khi đã loại bỏ các bit start, stop và parity
Thu phát dữ liệu :
Có hai phương pháp để thu phát dữ liệu qua UART Phương pháp thứ nhất là phương pháp hỏi vòng để chờ dữ liệu được phát xong hoặc nhận xong Phương pháp thứ hai là phương pháp tạo ra một trình điều khiển ngắt Phương pháp hỏi vòng chậm hơn nhiều so với phương pháp kia Tốc độ cao nhất có thể đạt của phương pháp hỏi vòng là 34.8Kbps trong khi phương pháp tạo ngắt có thể đạt được tốc độ 115,2Kbps Ơû đây ta chọn phương pháp hỏi vòng để điều khiển việc thu phát dữ liệu
Để phát một kí tự:
Trang 5Với phương pháp hỏi vòng UART, khi gởi một kí tự ta phải kiểm tra xem thanh ghi đợi truyền có rỗng không bằng cách xem bit 6 của LCR có bằng 1 hay không
Để thu một kí tự: để biết khi nào kí tự thu vào hay chưa ta kiểm tra bit 0 của
thanh ghi LCR Nếu nó bằng 1 thì đã có 1 kí tự được nhận vào