Nội dung bài viết
UART hiện là một trong những giao thức giao tiếp giữa thiết bị với thiết bị được sử dụng nhiều nhất trong các ứng dụng điện tử. Vậy khái niệm UART là gì? Nguyên lý hoạt động của UART và ứng dụng thực tế của nó là gì? Hãy cùng Trường Chu Văn An tìm hiểu trong bài viết dưới đây.
UART là gì?
UART (Bộ thu-phát không đồng bộ phổ quát) là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp không đồng bộ ở tốc độ có thể định cấu hình. Không đồng bộ có nghĩa là không có tín hiệu đồng hồ để đồng bộ hóa đầu ra của các bit từ UART truyền sang việc lấy mẫu bit của UART nhận. Thay vào đó, UART truyền các bit bắt đầu và dừng bổ sung cho gói dữ liệu đang được truyền. Các bit này xác định điểm bắt đầu và kết thúc của gói dữ liệu để UART biết khi nào bắt đầu đọc các bit.
Bản chất không đồng bộ này là nền tảng cho tính linh hoạt của UART, vì các thiết bị có tốc độ xung nhịp khác nhau vẫn có thể giao tiếp hiệu quả.

Nói một cách đơn giản, trong giao tiếp UART, 2 UART giao tiếp trực tiếp với nhau. UART truyền chuyển đổi dữ liệu song song từ thiết bị điều khiển như CPU sang dạng nối tiếp, truyền nối tiếp sang UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại dữ liệu song song cho thiết bị nhận.
Hai đường mà mỗi thiết bị UART sử dụng để truyền dữ liệu là:
- Máy phát (Tx)
- Bộ thu (Rx)

Dữ liệu được truyền và nhận qua các dòng này dưới dạng khung dữ liệu có cấu trúc tiêu chuẩn, với 1 bit bắt đầu, 1 số bit dữ liệu, 1 bit kiểm tra chẵn lẻ và 1 hoặc nhiều bit dừng. Tốc độ baud của UART được đặt ở số tiêu chuẩn, ví dụ 9600, 38400, 19200, 57600 bps và các số khác (được biểu thị bằng bps – bit trên giây). Tốc độ truyền giữa các UART truyền và nhận chỉ có thể thay đổi khoảng 10% trước khi thời gian bit quá xa và cả hai UART cũng phải được cấu hình để truyền và nhận cùng một cấu trúc gói dữ liệu.
Giao tiếp UART được sử dụng rộng rãi trong các ứng dụng giao tiếp với các module như: Wifi, Bluetooth, Xbee, module đọc thẻ RFID với Raspberry Pi, Arduino hoặc các bộ vi điều khiển khác. Đây cũng là chuẩn truyền thông thông dụng và phổ biến trong công nghiệp.
Nguyên lý hoạt động của UART
UART truyền dữ liệu nhận được từ bus dữ liệu (Data Bus) được gửi từ một thiết bị khác như CPU, bộ nhớ hoặc vi điều khiển. Dữ liệu này được truyền song song nên sau khi truyền tới UART truyền và nhận dữ liệu, UART sẽ thêm một bit start, một bit parity và một bit stop, tạo thành một gói dữ liệu. Tiếp theo, gói dữ liệu được xuất ra từng bit một ở chân Tx. UART nhận và đọc các gói dữ liệu từng bit một ở chân Rx. Sau đó, UART nhận sẽ chuyển đổi dữ liệu trở lại dạng song song và loại bỏ bit bắt đầu, bit chẵn lẻ và bit dừng. Cuối cùng, UART nhận sẽ chuyển gói dữ liệu song song với bus dữ liệu ở đầu nhận.
Giao thức truyền dữ liệu nối tiếp UART được triển khai ở một trong ba chế độ sau:
- Song công hoàn toàn: Giao tiếp đồng thời đến và đi từ mỗi chủ và phụ.
- Bán song công: Dữ liệu đi theo một hướng tại một thời điểm.
- Simplex: Chỉ giao tiếp một chiều.
Dữ liệu được truyền qua UART được tổ chức thành các gói. Mỗi gói chứa 1 bit bắt đầu, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), bit chẵn lẻ tùy chọn và 1 hoặc 2 bit dừng.

Bit bắt đầu

Đường dữ liệu trong giao diện UART thường được giữ ở điện áp cao khi không truyền dữ liệu. Để bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ cao xuống thấp trong một chu kỳ xung nhịp. Khi UART nhận phát hiện sự chuyển đổi điện áp cao xuống thấp, nó sẽ bắt đầu đọc các bit trong khung dữ liệu ở tần số tốc độ truyền.
Khung dữ liệu

Khung dữ liệu chứa dữ liệu thực tế đang được truyền đi, có thể dài từ 5 bit đến 8 bit nếu sử dụng các bit chẵn lẻ. Nếu bit Parity không được sử dụng, khung dữ liệu có thể dài 9 bit. Trong hầu hết các trường hợp, dữ liệu được gửi trước tiên với bit LSB (bit ít quan trọng nhất).
Bit chẵn lẻ

Bit chẵn lẻ là cách để UART nhận cho biết liệu có bất kỳ dữ liệu nào đã thay đổi trong quá trình truyền hay không. Các bit có thể bị thay đổi bởi bức xạ điện từ, tốc độ truyền không khớp hoặc truyền dữ liệu đường dài.
Sau khi UART nhận và đọc khung dữ liệu, nó sẽ đếm số bit có giá trị 1 và kiểm tra xem tổng số đó là chẵn hay lẻ. Nếu bit chẵn lẻ là 0 (chẵn) thì tổng 1 bit trong khung dữ liệu phải là số chẵn. Nếu bit chẵn lẻ là 1 (lẻ), thì các bit 1 trong khung dữ liệu sẽ tổng thành số lẻ.
Khi bit chẵn lẻ khớp với dữ liệu, UART biết rằng quá trình truyền không có lỗi. Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ; hoặc bit chẵn lẻ là 1 và tổng là số chẵn thì UART sẽ biết các bit trong khung dữ liệu đã thay đổi.
Dừng chút

Để báo hiệu sự kết thúc của gói dữ liệu, UART gửi sẽ điều khiển đường truyền dữ liệu từ điện áp thấp đến điện áp cao trong ít nhất hai khoảng thời gian bit.
Các bước truyền UART
Bước 1: UART truyền dữ liệu song song với bus dữ liệu.

Bước 2: UART truyền dữ liệu thêm bit bắt đầu, bit chẵn lẻ và bit dừng vào khung dữ liệu.

Bước 3: Toàn bộ gói được gửi tuần tự bắt đầu từ bit bắt đầu đến bit dừng từ UART truyền đến UART nhận. UART nhận lấy mẫu dòng dữ liệu ở tốc độ truyền được cấu hình sẵn.

Bước 4: UART nhận sẽ loại bỏ bit bắt đầu, bit chẵn lẻ và bit dừng khỏi khung dữ liệu.

Bước 5: UART nhận sẽ chuyển đổi dữ liệu nối tiếp trở lại song song và truyền nó đến bus dữ liệu ở đầu nhận.

Ưu điểm và nhược điểm của giao tiếp UART
| Lợi thế | Nhược điểm |
| Chỉ cần sử dụng 2 đường truyền dữ liệu | Kích thước của khung dữ liệu bị giới hạn tối đa là 9 bit, khá nhỏ so với nhu cầu sử dụng |
| Không cần tín hiệu đồng hồ | Nhiều hệ thống chủ và phụ không được hỗ trợ |
| Có 2 bit chẵn lẻ nên có thể dễ dàng kiểm tra lỗi | Tốc độ truyền của mỗi giao diện UART chỉ được chênh lệch khoảng 10%. |
| Cấu trúc gói dữ liệu có thể được thay đổi miễn là cả hai UART được thiết lập để liên lạc với nhau. |
Ứng dụng của UART
UART được sử dụng rộng rãi trong các ứng dụng điện tử để truyền dữ liệu giữa các thiết bị như máy tính, bộ vi điều khiển, cảm biến,…
Giao tiếp giữa bộ vi xử lý và các thiết bị ngoại vi
UART được sử dụng để giao tiếp giữa bộ vi xử lý và các thiết bị ngoại vi như màn hình LCD, cảm biến, máy in, máy quét mã vạch, v.v., giúp bộ vi xử lý truy cập và điều khiển các chức năng của các thiết bị ngoại vi.
Kết nối máy tính với thiết bị ngoại vi
Trong một số trường hợp, UART còn được dùng để kết nối máy tính với các thiết bị ngoại vi thông qua cổng nối tiếp trên máy tính hoặc qua bộ chuyển đổi USB sang UART, cho phép máy tính giao tiếp với các thiết bị ngoại vi như: mạch Arduino, mạch phát triển, mạch Raspberry Pi,…
Truyền dữ liệu không dây
UART ngày nay được sử dụng rộng rãi trong các mô-đun Bluetooth & Wifi để truyền dữ liệu không dây giữa các thiết bị. Trong trường hợp này, dữ liệu được truyền qua sóng vô tuyến hoặc sóng vô tuyến.
Hệ thống đo lường
UART dùng để kết nối thiết bị đo với các thiết bị khác nhằm gửi dữ liệu về các thông số đo được qua UART và thiết bị nhận có thể hiển thị hoặc xử lý thêm dữ liệu này.
Robot điều khiển
Các thiết bị như bộ điều khiển và mô-đun điều khiển robot có thể sử dụng giao thức UART để gửi và nhận dữ liệu với nhau.
Mặc dù hiện nay đã xuất hiện nhiều phương thức truyền thông mới, hiện đại hơn, nhanh hơn nhưng không thể phủ nhận tính đơn giản, linh hoạt và hiệu quả của giao tiếp UART. Đây là lý do chính khiến UART trở thành lựa chọn hàng đầu cho nhiều ứng dụng điện tử.
Hy vọng những kiến thức chúng tôi tổng hợp về UART đã giúp các bạn có cái nhìn tổng quan về phương thức giao tiếp này. Các kiến thức khác liên quan đến ngành điện các bạn có thể tìm hiểu tại: https://etinco.vn/tin-tuc/kien-thuc/


Nội dung được phát triển bởi đội ngũ truongchuvananhue.edu.vn với mục đích chia sẻ và tăng trải nghiệm khách hàng. Mọi ý kiến đóng góp xin vui lòng liên hệ tổng đài chăm sóc: 1900 0000 hoặc email: hotro@truongchuvananhue.edu.vn