Bài trước: [Lập trình ARM-LPC2378] Tổ Chức Bộ Nhớ, Thiết Lập Pin, GPIO, Debug
Bài sau: [Lập trình ARM-LPC2378] Ngắt Trong LPC23xx
Bài 3: Truyền Thông Nối Tiếp Không Đồng Bộ- UART
Nội dung
- - Giới thiệu về UART
- Các thanh ghi liên quan tới UART
- Cấu hình PINSEL
- Sử dụng Hyper Terminal
Giới thiệu về UART
UART
+ + Viết tắt của: Universal Asynchronous Receiver/ Transmitter - Bộ thu/ phát không đồng bộ đa năng, là một loại thu/ phát không đồng bộ dùng để thực hiện việc chuyển đổi dữ liệu song song thành dữ liệu nối tiếp và truyền nhận nối tiếp giữa các bên phát và thu.
- + LPC2378 hỗ trợ 4 UARTs: UART 0, UART 1, UART 2, UART 3
- + UART 0/2/3: TXD, RXD
- + UART 1: TXD, RXD, CTS, RTS, DTR, DSR, RI…
-
Các thanh ghi liên quan tới UART
Các thanh ghi
- + UnRBR ( Receive Buffer Register, 1 byte) : thanh ghi chứa byte dữ liệu nhận.
- + UnTHR ( Transmit Holding Register, 1 byte): Thanh ghi chứa byte dữ liệu sẽ được gửi.
- + UnLCD (Line Control Register, 1 byte): Thanh ghi điều khiển, quyết định định dạng dữ liệu được truyền nhận (DataLength, Stop bit, Parity…)
- + UnIER (Interrupt Identification Register, 4 bytes ): thanh ghi để active 3 ngắt sử dụng cho UART
- + UnllR ( Interrupt Identification Register, 4 bytes) : thanh ghi cho biết có ngắt đang xảy ra hay không, nếu có thì là ngắt nào
- + UnDLL ( Divisor Latch LSB Register, 1 byte): quyết định baudrate của UART
- + UnDLM (Divisor Latch MSB Register, 1 byte)
Thanh ghi UnLSR
- + Nhận dữ liệu:
- Ta xét trạng thái ở bit 0
0: Thanh ghi UnRBR rỗng
1: Thanh ghi UnRBR có chứa dữ liệu
Int getkey (void)
{
While (!(UxLSR & 0x01));
Return (UxRBR);
}
- + Truyền dữ liệu:
+ Ta xét trạng thái ở bit 5
0: Thanh ghi UnTHR có chứa dữ liệu
1: Thanh ghi UnTHR rỗng
Int sendchar (int ch)
{
While (!(UxLSR & 0x20));
Return (UxTHR = ch);
}
Cấu hình PINSEL
Cấu hình PINSEL – UARTO
Cấu hình PINSEL – UART1
Sử dụng Hyper Terminal
Hyper Terminal
Các bạn Download phần mềm Hyper Terminal hercules 3.2.4 Tại Đây!
Các thông tin truyền nhận qua cổng COM
+ Baudrate: 9600 bps ( bits per second )
+ Data length: 8 bits
+ Parity: None
+ Stop bit: 1
+ Flow control: None
Thiết lập các thông số cho UART
+ Khi sử dụng thanh ghi UxDLL và UxDLM thì bit DLAB trong thanh ghi UxLCR phải là 1.
UxLCR = 0x83; // 8 bits, no Parity, 1 Stop bit
UxDLL = 78; // 9600 Baud Rate @ 12.0 MHZ PCLK
UxDLM = 0; // High divisor latch = 0
UxLCR = 0x03; // DLAB = 0
+ Sau khi thiết lập xong cho bit DLAB = 0 để sử dụng thanh ghi UnRBR, UnTHR
Phạm Văn Ngọc Anh- 01644326695
(Nguồn: ĐHKHTN TP.HCM)
Đăng nhận xét