D. Sử dụng các thanh ghi xuất nhập đa dụng: (GPIO):
F. UART0 và UART1:
F.1Chức năng:
Thu phát 16 bit FIFOs.
Vùng thanh ghi hợp chuẩn công nghiệp 550 Nhận điểm ngắt FIFO tại 1,4,8 và 14 bytes Tích hợp sẵn bộ sinh tốc độ Baud.
F.2Diễn tả các chân chức năng:
Tên chân Hướng truyền Chức năng
RxD0 Vào Serial Input. Nhận dữ liệu nối tiếp. TxD0 Ra Serial Output. Truyền dữ liệu nối tiếp.
F.3Diễn tả các thanh ghi chức năng:
UART0 có 10 thanh ghi chức năng 8 bit.
F.3.1Thanh ghi đệm truyền thu <U0RBR - 0xE000C000>:
U0RBR là byte trên cùng của UART0 Rx FIFO, byte này chứa các kí tự truyền nhận sau cùng và có thể đọc được nhờ bus giao tiếp. Bit 0 (LSB) là bit cuối cùng của dữ
liệu nhận, nếu kí tự truyền nhận ít hơn 8 bit, các bit cao của thanh ghi này sẽ tự cập nhật giá trị ‘0’
Bit DLAB(Divisor Latch Access Bit) trong thanh ghi U0LCR phải bằng 0 để có thể truy cập U0RBR. Thanh ghi đệm của truyền thu là thanh ghi chỉ đọc.
U0RBR Chức năng Giải thích chức năng Giá trị
Reset
7:0 Thanh ghi đệm truyền thu
Thanh ghi đệm truyền thu chứa byte thu nhận sau nhất của UART0 Rx
FIFO Không biết
F.3.2Thanh ghi giữ giá trị truyền phát<U0THR - 0xE000C000>:
Thanh ghi U0THR là thanh ghi chứa byte trên cùng của UART Tx FIFO. Thanh ghi này chứa kí tự gần nhất của quá trình truyền phát FIFO, có thể ghi giá trị vào thanh ghi này thông qua giao tiếp bus. Bit LSB là bit đầu tiên sẽ được truyền phát.
Bit DLAB trong thanh ghi U0LCR phải bằng 0 để có thể truy cập U0THR. Thanh ghi đệm của truyền thu là thanh ghi chỉ được phép ghi.
U0THR Chức năng Giải thích chức năng Giá trị Reset
7:0 Thanh ghi giữ giá
trị truyền phát Ghi giá trđược xếp sau cị vào thanh ghi giùng vào FIFO. ữ giá trị truyền thu UART0 thì byte đó sẽ N/A
+Thanh ghi UART0 Divisor Latch LSB (U0DLL - 0xE000C000) truy cập được khi DLAB = 1.
+Thanh ghi UART0 Divisor Latch MSB (U0DLM - 0xE000C004) truy cập được khi DLAB = 1.
+UART0 Divisor Latch là số chia của bộ tạo tốc độ Baud và giá trị của nó được dùng để chia xung clock VPB (PCLK-Xung nhịp hoạt động của ngoại vi) thành tốc độ baud, tốc độ xung nhịp ngoại vi bằng 16x tốc độ baud mong muốn. Hai thanh ghi U0DLL và U0DLM lập thành số chia 16 bit, U0DLL chứa 8 bit thấp và U0DLM chứa 8 bit cao. Giá trị U0DLM-U0DLL = 0x0000 được xem như 0x0001 <vì giá trị chia cho 0 không tồn tại> Bit DLAB=1 để có thể truy cập UART0 Divisor Latches.
U0DLL Chức năng Giá trị Reset
7:0 Byte thấp của bộ chia sinh tốc độ baud 0x01
Bảng 21: Byte thấp bộ chia sinh tốc độ baud cho UART0 (U0DLL-0xE000C000 khi DLAB=1) U0DLM Chức năng Giá trị Reset
7:0 Byte cao của bộ chia sinh tốc độ baud 0x00
Nói một cách vắn tắt, để thiết lập tốc độ baud mới, phải cho bit DLAB=’1’,truy cập các thanh ghi U0DLM- U0DLL, khi cho DLAB=’0’, khởi tạo bộ tạo tốc độ Baud. Và lúc đó, mới có thể truy cập các giá trị từ bộ đêm thu hoặc bộ giữ phát của UART0.
F.3.3Thanh ghi cho phép ngắt truyền thông nối tiếp <U0IER - 0xE000C004>:
Thanh ghi U0IER được dùng để cho phép các ngắt của UART0(4 nguồn ngắt).
U0IER Chức năng Diễn giải các chức năng Giá trị Reset
0 Cho phép ngắt RBR