CHƯƠNG 3 GHÉP NỐI QUA CỔNG NỐI TIẾP
3.3.1. Bộ truyền nhận không đồng bộ vạn năng 8250
UART 8250 (Universal Asynchronous Receiver/Transmitter) đảm nhiệm các chức năng chính:
- Chuyển đổi tín hiệu song song từ CPU thành tín hiệu nối tiếp để truyền ra khỏi
máy tính và chuyển đổi tín hiệu nối tiếp từ ngoại vi thành song song để chuyển
tới CPU.
- Bổ sung các bit: Start, chẵn/lẻ và Stop vào mỗi ký tự để hình thành khung
truyền, đồng thời tách các bit đó ra từ khung truyền nhận được.
- Duy trì trạng thái các bit riêng biệt được phát ra với tốc độ truyền dữ liệu thích
hợp, tính tốn các bit chẵn/lẻ trên từng ký tự nhận và truyền đồng thời thông báo cho các hệ thống biết bất kỳ sai sót đã được phát hiện.
- Thiết lập các tín hiệu bắt tay phần cứng thích hợp và thơng báo trạng thái của
các mạch đó.
UART 8250 là chip cơ bản, hiện nay các chip thông dụng là UART 16450, 16550A, 16750... Cấu trúc và chức năng của chúng dựa trên nền tảng của 8250
Lập trình cho 8250 được thực hiện bằng cách đọc và viết các thanh ghi của nó. Các thanh ghi đó là:
55
Base Address Mode Name +0 (DLAB=0) Write Transmitter Holding Buffer THR
+0 (DLAB=0) Read Receiver Buffer RBR +0 (DLAB=1) Rd/Wr Divisor Latch Low Byte DLL +1 (DLAB=0) Rd/Wr Interrupt Enable Register IER +1 (DLAB=1) Rd/Wr Divisor Latch High Byte DLM +2 Read Interrupt Idendification Register IIR
+2 Write FIFO Control Register FCR
+3 Rd/Wr Line Control Register LCR
+4 Rd/Wr Modem Control Register MCR
+5 Read Line Status Register LSR
+6 Read Modem Status Register MSR
+7 Rd/Wr Scratch Register SCR
PC có 4 cổng nối tiếp là COM1 - COM4 được phân biệt qua các vị trí địa chỉ
trong vùng vào/ ra của PC và các số ngắt tương ứng. Địa chỉ đầu tiên của UART (của thanh ghi đệm truyền / nhận) gọi là địa chỉ cơ sở.
Thông thường địa chỉ cơ sở và IRQ được quy định nhờ các cầu nối (jumper) trên card vào/ra hoặc trên bản mạch chính.
Name Port address IRQ COM 1 3F8h IRQ4
COM 2 2F8h IRQ3 COM 3 3E8h IRQ4 COM 4 2E8h IRQ3
Ta thấy COM 1, 3 và COM 2, 4 đều dùng chung một kênh ngắt, do vậy ở cùng 1 thời điểm chỉ có thể sử dụng 1 phần mềm cho ngắt của 1 trong 2 cổng và chỉ có thể sử
dụng nhiều hơn 2 cổng nối tiếp khi trong chương trình khơng sử dụngngắt
10 thanh ghi trong UART 8250 chia ra làm 3 loại:
Thanh ghi điều khiển (Control Register): dùng để nhận và thực hiện các lệnh
từ CPU.
Thanh ghi trạng thái (Status Register): dùng để thông báo cho CPU biết về
trạng thái của UART hay UART đang làm gì?
Thanh ghi đệm (Buffer Register): dùng để giữ ký tự trong lúc truyền hoặc xử
56