Thứ Năm, 1 tháng 3, 2012

[Lập trình ARM-LPC2378] Truyền Thông Nối Tiếp Không Đồng Bộ- UART



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
Cổng COM



 


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










(Nguồn: ĐHKHTN TP.HCM)

0 nhận xét:

Đăng nhận xét