Giao tiếp với khối truyền/thu không đồng bộ đa năng (UART)

Một phần của tài liệu Tìm hiểu vi điều khiển họ ARM (Trang 35)

Giao tiếp UART là giao tiếp nối tiếp, có các tính năng sau:

- Cấp tín hiệu cho các đầu vào bộ điều khiển; - Điều khiển đầu ra tín hiệu;

- Thiết lập tốc độ baud;

- Truyền và nhận 16 byte FIFO; - Đưa ra các ngắt.

Pin/pad

Read data output Read data input Data direction register

36

Chức năng UART

UART trên vi điều khiển ARM hỗ trợ cả hai kiểu giao tiếp là giao tiếp song công và giao tiếp bán song công. Giao tiếp song công tức là có thể gửi và nhận dữ liệu vào cùng một thời điểm. Còn giao tiếp bán song công là chỉ có một thiết bị có thể truyền dữ liệu vào một thời điểm, với tín hiệu điều khiển hoặc mã sẽ quyết định bên nào có thể truyền dữ liệu. Giao tiếp bán song công được thực hiện khi mà cả hai chiều chia sẻ một đường dẫn hoặc nếu có hai đường nhưng cả hai thiết bị chỉ giao tiếp qua một đường ở cùng một thời điểm.

Dữ liệu truyền được ghi vào thành 16 byte FIFO (bộ đệm vào trước ra trước) và bắt đầu quá trình truyền các khung dữ liệu với các tham số được xác định trong thanh ghi điều khiển UART. Truyền sẽ kết thúc khi dữ liệu trong FIFO là trống.

Trong quá trình thu, UART bắt đầu lấy mẫu sau khi nhận một bit khởi động (đầu vào mức thấp). Khi một word (16 bit) được nhận đủ, nó sẽ được chứa trong FIFO nhận.

Có thể không dùng các chế độ FIFO. Trong trường hợp này, UART cung cấp các thanh ghi giữ một byte cho việc truyền và nhận các kênh. Một bit tràn trong UART_RSR làm một ngắt được thiết lập trong trường hợp một byte nhận trước một byte được đọc.

Có thể không sử dụng tính năng của FIFO nhưng nếu xảy ra lỗi tràn, dữ liệu dư vẫn được chứa trong FIFO và phải đọc ra để xóa FIFO.

Thiết lập tốc độ baud của UART được lập trình bởi các thanh ghi chia tốc độ bit UART_LCRM và UART_LCRL.

Các ngắt UART

37

- Bộ ngắt trạng thái: dùng để xác nhận khi có bất kỳ sự thay đổi trạng thái nào. Bộ ngắt này được xóa bằng cách ghi vào thanh ghi UART_ICR.

- Ngắt loại bỏ UART: dùng để xác nhận khi UART được loại bỏ và bit khởi động (mức thấp) được phát hiện trên đường thu. Trạng thái này sẽ được xóa nếu UART được kích hoạt hoặc đường thu ở mức cao.

- Ngắt Rx (ngắt thu dữ liệu): dùng để xác nhận khi một trong các trường hợp sau xảy ra:

 Bộ FIFO thu được kích hoạt và bộ FIFO đã chứa nửa hoặc quá nửa (8 byte hoặc nhiều hơn 8 byte).

 Bộ FIFO thu không còn trống và không có dữ liệu cho hơn chu kỳ 32 bit.

 Bộ FIFO thu bị vô hiệu và dữ liệu đã được thu.

 Ngắt Rx được xóa bằng việc đọc nội dung của FIFO.

- Ngắt Tx (ngắt truyền dữ liệu): dùng để xác nhận khi một trong các trường hợp sau xảy ra:

 Bộ FIFO truyền được kích hoạt và bộ FIFO chứa một nửa hoặc ít hơn một nửa.

 Bộ FIFO truyền bị vô hiệu hóa và vùng đệm lưu trữ là trống.

 Ngắt Tx sẽ được xóa khi chèn vào bộ FIFO hơn quá nửa hoặc ghi vào thanh ghi lưu trữ.

Dạng khung truyền

Khung truyền trong giao tiếp UART gồm bốn thành phần, như trong hình 2.12.

Start bit Data Parity Stop bits

38

- Start bit (1 bit ở mức logic 0): bắt đầu một gói tin, đồng bộ xung nhịp clock;

- Data (có thể là 5,6,7 hoặc 8 bit): dữ liệu cần truyền;

- Parity bit (1 bit: chẵn (even), lẻ (odd), mark, space): bit cho phép kiểm tra lỗi;

- Stop bit (1 hoặc 2 bit): kết thúc một gói tin. Tốc độ truyền

- Tính bằng đơn vị bit/giây: bps (bit per second) hay còn gọi là tốc độ baud.

- Là số bit truyền trong một giây.

- Tốc độ tối đa =Tần số xung nhịp clock/hằng số.

 VD: tần số thạch anh ngoài cho vi điều khiển là 18.432MHz, hằng số =16 -> tốc độ truyền là: 115.200 bps.

 Bên trong UART hỗ trợ các thanh ghi cho phép xác định các tốc độ làm việc khác, vd: 1.200, 2.400, 4.800, 9.600, 19.200, 38.400… bps, có thể thiết lập tốc độ baud bằng phần mềm.

39

CHƯƠNG 3. ĐẶC ĐIỂM CÁC DÒNG LÕI XỬ LÝ ARM

Một phần của tài liệu Tìm hiểu vi điều khiển họ ARM (Trang 35)