Giao tiếp UART là gì? Cách hoạt động, ưu và nhược điểm
Trước kia, các thiết bị máy in, modern WiFi khi kết nối với máy tính đều cần các dây cáp và đầu nối khổng lồ. Lúc đó, chúng đang dùng giao tiếp UART để làm việc với máy tính. Mặc dù sự xuất hiện của USB đã thay thế dần cho các cổng kết nối cũ, nhưng UART không vì thế mà bị mất đi. Hiện nay, giao thức kết nối UART vẫn được sử dụng rất nhiều trong các dự án điện tử, cho phép bạn kết nối với nhiều module khác nhau như GPS, Bluetooth, đầu đọc thẻ từ RFID với các mạch lập trình như Arduino, Raspberry Pi hoặc nhiều vi điều khiển khác nhau.
Vậy, UART là gì? Chúng có cách hoạt động như thế nào và có ưu nhược điểm gì? Cùng tìm hiểu qua bài viết bên dưới nhé!
UART là gì?
UART (Universal Asynchronous Receiver/Transmitter) không phải là giao thức để giao tiếp như SPI hay I2C, mà nó là mạch vật lý trong các vi điều khiển. Cổng này sử dụng 2 dây để truyền dữ liệu qua lại trực tiếp giữa thiết bị máy phát và máy thu, cho phép truyền tải dữ liệu ở cả 2 hướng. Cả 2 đầu đều được kết nối với mặt đất.
Kết nối UART chuyển dữ liệu song song từ các vi điều khiển như CPU thành dữ liệu nối tiếp để truyền đến các thiết bị nhận, sau đó lại chuyển dữ liệu nối tiếp thành song song và gửi lại thiết bị CPU. Hình dưới minh họa cách truyền dữ liệu này, chỉ với 2 dây duy nhất. Với mỗi dây thì luồng dữ liệu đều truyền từ chân Tx đến Rx:
UART truyền dữ liệu không đồng bộ, điều này có nghĩa là chúng sẽ không có các tín hiệu đồng hồ như các giao thức khác. Thay vào đó, UART sẽ gửi các bit bắt đầu (start bits) và bit kết thúc (stop bits)vào tập tin được gửi đi. Điều này giúp cho các thiết bị đang giao tiếp UART biết được khi nào nên đọc các bit.
Khi phát hiện bit bắt đầu, các thiết bị sẽ đọc các bit ở tần số cụ thể (tốc độ truyền – baud rate). Đây là công cụ giúp đo được tốc độ truyền tải dữ liệu, với đơn vị là bit / giây. Cả 2 thiết bị khi giao tiếp UART với nhau thì phải ở cùng 1 tốc độ truyền.
Cả 2 thiết bị khi giao tiếp UART cũng đều phải được cấu hình để có thể truyền và nhận cùng một gói dữ liệu như nhau. Dưới đây là một số thông số kỹ thuật để bạn hiểu rõ hơn về UART là gì:
Số dây sử dụng | 2 |
Tốc độ tối đa | Có thể truyền dữ liệu ở bất kỳ tốc độ nào, tối đa là 112500. Tốc độ thường dùng là 9600. |
Đồng bộ hay không đồng bộ? | Không đồng bộ |
Serial hay Parallel? | Serial |
Số lượng thiết bị Master tối đa | 1 |
Số lượng thiết bị Slaves tối đa | 1 |
Cách hoạt động của giao tiếp UART
UART sẽ truyền và nhận dữ liệu thông qua các data bus, cụ thể:
- Data bus có vai trò gửi dữ liệu đến UART bởi một thiết bị khác như CPU, vi điều khiển hoặc bộ nhớ (lúc này, dữ liệu ở dạng song song)
- Sau khi UART nhận dữ liệu song song từ Data bus, chúng sẽ thêm các bit bắt đầu, bit chẵn lẻ và bit kết thúc để tạo thành một gói dữ liệu hoàn chỉnh
- Gói dữ liệu được xuất ra thành dữ liệu nối tiếp từng bit một tại chân Tx như hình dưới
- UART nhận sẽ đọc các gói thông tin lần lượt từng bit một tại chân Rx của nó
- Sau khi đọc xong, UART nhận sẽ chuyển dữ liệu lại thành song song và xóa các bit bắt đầu, bit chẳn lẽ, bit kết thúc
- UART nhận gửi trả gói dữ liệu song song đến data bus ở đầu nhận
Cách hoạt động trên được tóm tắt như hình sau:
Khi truyền dữ liệu trong UART, dữ liệu được đóng gói thành các gói khác nhau. Trong đó, mỗi gói sẽ gồm 1 bit bắt đầu, khoảng 5 đến 9 bit dữ liệu tùy thuộc vào từng UART, các bit chẵn lẻ và 2 bit kết thúc như hình:
Các bước truyền dữ liệu trong UART
Dưới đây, chúng ta cùng tìm hiểu về các bước truyền dữ liệu nhé:
1. Thiết bị UART truyền sẽ nhận dữ liệu song song từ data bus:
2. Thiết bị UART truyền sẽ thêm các bit bắt đầu, bit chẵn lẻ và bit dừng vào trong khung dữ liệu như hình:
3. Toàn bộ các gói dữ liệu này được gửi nối tiếp từ UART truyền đến UART nhận. Thiết bị UART nhận sẽ đọc gói dữ liệu với tốc độ baud rate đã được chúng ta cấu hình trước đó:
4. Thiết bị UART nhận sẽ xóa các bit bắt đầu, bit chẵn lẻ và bit kết thúc ra khỏi gói dữ liệu:
5. Thiết bị UART nhận sẽ chuyển đổi dữ liệu nối tiếp thành dữ liệu song song và gửi nó sang data bus ở đầu nhận như hình:
Ưu và nhược điểm của giao tiếp UART
Không có giao thức truyền thông nào là tốt nhất, chỉ có giao thức phù hợp với dự án của bạn hay không. Dưới đây mình sẽ nêu ra một số ưu và nhược điểm của giao tiếp UART để bạn đưa ra quyết định phù hợp hơn cho dự án nhé:
Ưu điểm
- Chỉ dùng 2 dây để truyền dữ liệu
- Không cần đến các tín hiệu đồng hồ
- Có sử dụng các bit chẵn lẻ để hỗ trợ phát hiện lỗi
- Có thể thay đổi cấu trúc dữ liệu, miễn sao cả 2 thiết bị trong giao tiếp UART đều được cấu hình phù hợp
- Đây là giao thức có khá nhiều tài liệu hướng dẫn và được sử dụng phổ biến trong các dự án điện tử
Nhược điểm
- Bị giới hạn về kích thước, tối đa chỉ có 9 bit nên khá nhỏ
- Không hỗ trợ kết nối nhiều thiết bị Slaves hay Master, mà chỉ hỗ trợ mô hình kết nối 1 – 1
- Chênh lệch tốc độ baud rate giữa Master và Slave phải giống nhau, nếu chênh lệch thì không được quá 10%
Lời kết
Bài viết trên đây đã giới thiệu chi tiết đến bạn đọc các khái niệm giao tiếp UART là gì, các ưu nhược điểm cũng như cách hoạt động của nó, để bạn có thể ứng dụng chúng phù hợp hơn cho các dự án điện tử của mình.
Nếu có bất kỳ thắc mắc nào, đừng quên liên hệ IoTZone để được hỗ trợ nhé!