Tìm Hiểu Cơ Bản Về Giao Tiếp UART

Giao tiếp UART là một trong những giao thức truyền thông lâu đời và phổ biến nhất trong lĩnh vực điện tử nhúng. UART được sử dụng để giao tiếp giữa hai thiết bị hoặc hai module thông qua một cặp đường truyền dữ liệu và một đường nối đất chung. Vậy chuẩn giao tiếp UART hoạt động như thế nào và có những tham số kỹ thuật gì? Hãy cùng ELECFARM tìm hiểu qua bài viết dưới đây.

Giao Tiếp UART Là Gì?

UART (Universal Asynchronous Receiver/Transmitter) là một giao thức truyền thông phần cứng sử dụng phương thức truyền dữ liệu nối tiếp không đồng bộ với tốc độ có thể cấu hình. Được gọi là giao tiếp không đồng bộ vì UART không sử dụng tín hiệu Clock chung để đồng bộ dữ liệu giữa thiết bị truyền và thiết bị nhận.

Giao tiếp UART
Giao tiếp UART

UART khác với các chuẩn giao tiếp như SPI hay I2C ở chỗ đây là một giao thức truyền thông trực tiếp giữa hai thiết bị thông qua phần cứng UART tích hợp bên trong vi điều khiển hoặc vi xử lý.

Trong giao tiếp UART, dữ liệu song song từ CPU, vi điều khiển hoặc bộ nhớ sẽ được chuyển đổi thành dữ liệu nối tiếp để truyền đi. Khi đến thiết bị nhận, dữ liệu nối tiếp sẽ được chuyển đổi ngược lại thành dữ liệu song song để xử lý.

Chuẩn giao tiếp UART sử dụng hai đường tín hiệu chính:

  • TX (Transmitter): Đường truyền dữ liệu.
  • RX (Receiver): Đường nhận dữ liệu.
giao tiếp UART
Kết nối trong UART

Nguyên Lý Hoạt Động Của Giao Tiếp UART

UART nhận dữ liệu từ bus dữ liệu (Data Bus), nơi dữ liệu được cung cấp bởi các thiết bị như CPU, bộ nhớ hoặc vi điều khiển. Ban đầu, dữ liệu được truyền đến UART ở dạng song song. Sau khi tiếp nhận, UART phát sẽ chuyển đổi dữ liệu này sang dạng nối tiếp và bổ sung các bit điều khiển gồm bit Start, Parity và Stop để tạo thành một khung dữ liệu hoàn chỉnh.

Khung dữ liệu sau đó được truyền lần lượt từng bit qua chân TX. Ở phía nhận, UART sẽ đọc dữ liệu tại chân RX theo đúng tốc độ truyền đã được cấu hình. Sau khi nhận đủ dữ liệu, UART sẽ loại bỏ các bit điều khiển như Start, Parity và Stop, đồng thời chuyển đổi dữ liệu từ dạng nối tiếp trở lại dạng song song.

Cuối cùng, dữ liệu song song này được đưa lên bus dữ liệu của thiết bị nhận để tiếp tục xử lý.

giao tiếp UART
Truyền dữ liệu vào UART

Cấu Trúc Gói Dữ Liệu UART

Dữ liệu truyền qua UART được đóng gói thành các Packet.

Mỗi Packet bao gồm:

  • 1 bit Start.
  • 5 đến 9 bit dữ liệu (tùy cấu hình UART).
  • 1 bit Parity (tùy chọn).
  • 1 hoặc 2 bit Stop.
giao tiếp UART
Khung dữ liệu UART

Start Bit

Đường truyền dữ liệu thường được giữ ở mức điện áp cao khi không có dữ liệu truyền đi. Khi bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ mức cao xuống mức thấp trong một chu kỳ bit để tạo Start Bit. Khi UART nhận phát hiện sự chuyển đổi từ mức cao xuống mức thấp, nó sẽ bắt đầu đọc dữ liệu theo tốc độ truyền đã được cấu hình (Baud Rate).

giao tiếp UART
Cách truyền bit-start trong giao tiếp UART

Data Frame (Khung Dữ Liệu)

Khung dữ liệu chứa dữ liệu thực tế cần truyền. Khung dữ liệu có thể dài từ 5 đến 8 bit khi sử dụng Parity Bit. Nếu không sử dụng bit Parity (bit chẵn lẻ), khung dữ liệu có thể lên đến 9 bit. Thông thường, dữ liệu được truyền theo thứ tự bit có trọng số thấp nhất (LSB – Least Significant Bit) trước.

Parity Bit (Bit Chẵn Lẻ)

Bit chẵn lẻ (Parity Bit) được sử dụng để kiểm tra lỗi trong quá trình truyền dữ liệu. Cơ chế này giúp UART nhận phát hiện xem dữ liệu có bị thay đổi trong quá trình truyền hay không. Các lỗi có thể xuất hiện do nhiễu điện từ, sai lệch tốc độ truyền giữa hai thiết bị hoặc khoảng cách truyền quá dài.

Sau khi nhận được khung dữ liệu, UART sẽ đếm số lượng bit có giá trị bằng 1 và kiểm tra tổng số bit này là chẵn hay lẻ. Nếu sử dụng parity chẵn (Even Parity), tổng số bit 1 trong khung dữ liệu phải là số chẵn. Ngược lại, nếu sử dụng parity lẻ (Odd Parity), tổng số bit 1 phải là số lẻ.

Nếu kết quả kiểm tra phù hợp với giá trị của Parity Bit, UART sẽ xem dữ liệu được truyền thành công. Ngược lại, nếu kết quả không khớp, UART sẽ xác định rằng đã xảy ra lỗi trong quá trình truyền dữ liệu.

Stop Bit (Bit Kết Thúc)

Sau khi truyền xong dữ liệu, UART phát Stop Bit bằng cách đưa đường truyền trở lại mức điện áp cao trong ít nhất một khoảng thời gian bit. Stop Bit báo hiệu cho thiết bị nhận biết rằng gói dữ liệu đã kết thúc.

Các Bước Truyền Dữ Liệu UART

Bước 1: UART truyền nhận dữ liệu song song từ bus dữ liệu và chuyển đổi sang dạng nối tiếp để truyền qua chân TX.

giao tiếp UART
Truyền dữ liệu vào UART

Bước 2: UART bổ sung Start Bit, Parity Bit (nếu có) và Stop Bit vào khung dữ liệu.

giao tiếp UART

Bước 3: Toàn bộ gói dữ liệu được truyền nối tiếp từ UART phát đến UART nhận. UART nhận lấy mẫu dữ liệu dựa trên Baud Rate đã được cấu hình trước.

giao tiếp UART

Bước 4: UART nhận loại bỏ Start Bit, Parity Bit và Stop Bit khỏi khung dữ liệu.

giao tiếp UART

Bước 5: UART chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song và gửi đến bus dữ liệu của thiết bị nhận.

giao tiếp UART

Khi hoàn tất bước này, quá trình truyền dữ liệu qua giao tiếp UART kết thúc.

Các Tham Số Kỹ Thuật Của Giao Tiếp UART

Các tham số kỹ thuật cơ bản của giao tiếp UART bao gồm:

  • Kích thước khung dữ liệu phụ thuộc vào từng bộ UART và thường hỗ trợ tối đa 9 bit dữ liệu.
  • UART là chuẩn giao tiếp điểm do đó một UART truyền chỉ giao tiếp với một UART nhận.
  • Baud Rate (tốc độ baud) là tốc độ truyền dữ liệu của UART, thể hiện khoảng thời gian cần thiết để truyền một bit dữ liệu. Giá trị Baud Rate phải được cấu hình giống nhau ở cả thiết bị gửi và thiết bị nhận. Các tốc độ phổ biến thường nằm trong khoảng từ 9.600 bps đến 115.200 bps và được tạo ra bởi bộ tạo tốc độ baud.

Lời Kết

Giao tiếp UART là một trong những chuẩn truyền thông nối tiếp đơn giản và phổ biến nhất trong các hệ thống điện tử nhúng. Nhờ cấu trúc đơn giản, dễ triển khai và không yêu cầu tín hiệu Clock đồng bộ, UART được ứng dụng rộng rãi trong giao tiếp giữa vi điều khiển, module truyền thông và các thiết bị ngoại vi. Việc hiểu rõ nguyên lý hoạt động và các tham số kỹ thuật của UART sẽ giúp quá trình thiết kế và phát triển hệ thống điện tử hiệu quả hơn.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *