Trong bài viết này, chúng ta sẽ xem xét thiết bị UART phổ biến. Đây không phải là một giao thức truyền thông mà là mạch vật lý được sử dụng trong vi điều khiển hoặc IC độc lập để truyền và nhận dữ liệu nối tiếp. Nó hỗ trợ chuỗi bài viết mà chúng tôi đã sản xuất để xem xét một số loại Giao thức Truyền thông Nối tiếp khác nhau có sẵn.
Truyền thông nối tiếp là cơ chế hoàn hảo để truyền thông tin giữa các thiết bị như vi điều khiển, các thiết bị phụ trợ sản xuất dữ liệu, và các thiết bị thông minh khác. Chúng tôi hy vọng bạn sẽ thấy nguồn tài nguyên này vô giá lần sau khi thiết kế của bạn cần tích hợp bus truyền thông nối tiếp. UART thường cũng được gọi là Cổng Nối tiếp trên một thiết bị. Tuy nhiên, điều này thường bị nhầm lẫn với một loại cổng nối tiếp khác, sử dụng kết nối kiểu DB9 và sử dụng RS-232 làm giao thức phần cứng. Không phải là hiếm khi có một UART được kết nối với một bộ chuyển đổi RS-232 cho một phụ kiện UART trên vi điều khiển và một thiết bị dựa trên RS-232 để giao tiếp với nhau.
UART là viết tắt của Universal Asynchronous Receiver Transmitter (Bộ thu phát không đồng bộ tổng hợp). Hệ thống truyền thông này yêu cầu hai chân, ngoại trừ chân nối đất. Một được ghi nhãn là TX, bộ phát, và cái kia được ghi nhãn là RX, bộ thu. Sự xuất hiện của từ "asynchronous" (không đồng bộ) trong tên nghĩa là nó không yêu cầu tín hiệu đồng hồ. Do không có đồng hồ, các thiết bị truyền và nhận phải sử dụng cùng một tốc độ baud.
Tốc độ baud (Bd) là đơn vị đo tốc độ truyền. Tham số này xác định tốc độ giao tiếp qua kênh dữ liệu của bộ phát và bộ thu. Tốc độ baud có thể được biểu diễn như bit mỗi giây để làm cho nó đơn giản hơn. Vì vậy, một tốc độ của 1000 Bd có nghĩa là tốc độ giao tiếp là 1000 bit mỗi giây, hoặc thời gian của một bit là 1/1000 giây hoặc 1 mili giây. Tốc độ baud có các tiền tố tiêu chuẩn như kBd (kilobaud), MBd (megabaud), hoặc GBd (Gigabaud). Tốc độ baud bao gồm các phần không phải dữ liệu của một thông điệp như bit bắt đầu và bit dừng, điều này có nghĩa là tốc độ truyền thông tin hữu ích từ bộ phát đến bộ thu sẽ ít hơn một chút.
Một số tốc độ baud UART được định nghĩa trước phổ biến bao gồm:
Đôi khi, tốc độ baud của cả hai thiết bị giao tiếp có thể được điều chỉnh, trong khi đôi khi, một trong các thiết bị sẽ có tốc độ baud cố định yêu cầu thiết bị kia phải thay đổi để phù hợp.
Vì vậy, để kết nối hai thiết bị sử dụng UARTs, chân truyền dữ liệu TX nên được kết nối với chân nhận dữ liệu RX:
Kết nối UART cơ bản với TX, RX và dây tiếp đất
Bạn sẽ có chân RX và TX trên cả hai thiết bị trong một số cấu hình, cho phép bạn gửi lệnh từ vi điều khiển đến một IC chuyên dụng và nhận lệnh hoặc thông tin trở lại theo hướng ngược lại. Điều này được gọi là kết nối duplex. Cũng có các ứng dụng khi phản hồi từ thiết bị thứ hai không được yêu cầu. Do đó, giao tiếp chỉ cần thiết cho một hướng; vì vậy, chỉ cần một đường truyền từ TX đến RX. Điều này được gọi là kết nối simplex.
Thiết bị truyền dữ liệu sẽ cần gửi một bit bắt đầu để khởi đầu giao tiếp từ thiết bị đó đến thiết bị nhận. Bit này thông báo cho thiết bị nhận rằng giao tiếp đã bắt đầu.
Thiết bị UART gửi một bit bắt đầu (bắt đầu giao tiếp)
Các bit dữ liệu sau đó được gửi dưới dạng một dòng tám bit, đại diện cho dữ liệu thực, nơi bit quan trọng nhất (MSB) được gán nhãn là D7, và bit ít quan trọng nhất (LSB) được gán nhãn là D0.
Thiết bị đầu tiên trong giao tiếp UART gửi các bit dữ liệu sau bit bắt đầu đầu tiên.
Và ở cuối những bit dữ liệu này, bộ phát sau đó gửi một bit dừng, chỉ ra rằng đây là kết thúc của thông điệp, và đặt bus UART vào chế độ nhàn rỗi của nó.
Thiết bị đầu tiên trong giao tiếp UART gửi một bit dừng sau các bit dữ liệu.
Chúng ta có thể thấy trong trường hợp này; thông điệp UART hoàn chỉnh sẽ bao gồm 10 bit. Trong chế độ nhàn rỗi, bus UART được kéo cao, nó gửi một bit bắt đầu thấp, và sau đó là 8 bit dữ liệu, tiếp theo là bit dừng. Bit dừng không giới hạn chỉ là một bit; nó có thể xuất hiện trong các cấu hình khác nhau, tùy thuộc vào tốc độ giao tiếp nhanh như thế nào. Cấu hình này có nghĩa là toàn bộ tập bit thông điệp liên tục thay đổi mức điện áp tín hiệu bus từ thấp lên cao ít nhất một lần:
Ví dụ về gói giao tiếp nối tiếp UART
Bit quan trọng nhất D7 cũng có thể được sử dụng như một bit Parity. Bit này cung cấp một cơ chế kiểm tra lỗi sơ bộ xuất hiện trong các khối nhỏ nhất của giao tiếp. Bit parity có thể được sử dụng để đảm bảo tổng số bit cao hoặc số một là lẻ hoặc chẵn, tùy thuộc vào mã hóa. Đối với kiểm tra parity chẵn, nếu các bit dữ liệu D0 đến D6 được thiết lập, chúng bao gồm một số lượng chẵn các bit cao, thì bit parity được thiết lập thành 0 (thấp). Ngược lại, nếu bộ bit này có một số lượng bit cao không đều, thì bit parity được thiết lập thành 1 (cao). Điều này đảm bảo tổng số bit cao trong thông điệp sẽ là chẵn. Trong trường hợp kiểm tra parity lẻ, nếu các bit dữ liệu D0 đến D6 được thiết lập sao cho chúng bao gồm một số lượng chẵn các bit cao, bit parity được thiết lập thành 1 (cao). Ngược lại, nếu bộ bit này có một số lượng bit cao không đều, thì bit parity được thiết lập thành 0 (thấp). Điều này đảm bảo tổng số bit cao trong thông điệp sẽ là lẻ.
Vì vậy, bằng cách sử dụng bit chẵn lẻ, lỗi có thể được phát hiện bằng cách kiểm tra các bit được thiết lập. Giả sử tổng số bit, bao gồm cả bit chẵn lẻ, được thiết lập cao là không chính xác. Trong trường hợp đó, bit chẵn lẻ đã cho phép bên nhận phát hiện lỗi trong quá trình truyền. Tuy nhiên, loại bảo vệ lỗi này không thể sửa chữa lỗi, chỉ có thể phát hiện ra rằng một lỗi đã xảy ra vì không có cách nào để xác định bit nào trong tổng số bit là không chính xác. Nó chỉ có thể phát hiện nếu một bit ở trạng thái sai; bất kỳ lỗi nào ảnh hưởng đến nhiều bit có thể không được phát hiện nếu tổng chẵn lẻ cuối cùng là chính xác.
Nếu lỗi chẵn lẻ được phát hiện, thì toàn bộ thông điệp phải bị loại bỏ và được truyền lại từ đầu. Trong trường hợp có sự can thiệp hoặc mức độ nhiễu cao, việc đạt được một lần truyền thành công có thể mất một thời gian đáng kể; tuy nhiên, nó giúp ngăn chặn lỗi thông điệp.
Ngoài ra, bên nhận và bên truyền của giao tiếp UART phải sử dụng chính xác cùng một tốc độ baud, độ dài ký tự, cơ chế chẵn lẻ, và cấu hình bit dừng để giao tiếp thành công.
Cũng có một biến thể của UART, được gọi là USART. Đây là một Bộ Thu Phát Đồng Bộ Không Đồng Bộ Toàn Cầu. Nó có thể hoạt động như một kênh không đồng bộ (giống như UART) và một kênh đồng bộ khi dữ liệu được đồng hồ hóa. Đồng hồ có thể được khôi phục từ chính dữ liệu hoặc được gửi như một tín hiệu ngoại vi riêng biệt.
Khi sử dụng USART ở chế độ đồng bộ, không cần các bit bắt đầu và dừng. Điều này cho phép truyền thông sử dụng tốc độ dữ liệu cao hơn khi hoạt động đồng bộ vì thời gian bit có tham chiếu đồng hồ. Do đó, nhiều bit hơn có thể được sử dụng cho dữ liệu thay vì được sử dụng cho các bit bắt đầu/dừng.
Ví dụ về giao tiếp USART
UART |
USART |
UART chỉ yêu cầu một tín hiệu dữ liệu |
Chế độ đồng bộ USART yêu cầu cả dữ liệu và đồng hồ. |
Trong UART, dữ liệu không cần phải được truyền đi với tốc độ cố định. |
Trong chế độ đồng bộ USART, dữ liệu được truyền đi với tốc độ cố định. |
Trong UART, dữ liệu thường được truyền đi từng byte một. |
Trong USART, dữ liệu đồng bộ thường được truyền đi dưới dạng các khối dữ liệu. |
Trong UART, tốc độ truyền dữ liệu được thiết lập xung quanh các giá trị cụ thể như 4800, 9600, 38400 bps, v.v. |
Trong USART, chế độ đồng bộ cho phép tốc độ truyền dữ liệu (DTR) cao hơn so với chế độ không đồng bộ nếu tất cả các yếu tố khác được giữ nguyên. |
Tốc độ UART bị giới hạn ở khoảng 115200 bps. |
USART có thể đạt được tốc độ nhanh hơn 115 kbps. |
Giao tiếp đầy đủ hai chiều: dữ liệu có thể được gửi cả hai hướng đồng thời. |
Giao tiếp một nửa hai chiều: dữ liệu chỉ có thể được gửi theo một hướng tại một thời điểm. |
Mục đích chính của UART và USART là chuyển đổi dữ liệu song song trên các đường bus PC thành dữ liệu nối tiếp có thể được truyền đi sử dụng các trình điều khiển dòng qua một bus tuân theo một tiêu chuẩn giao thức truyền thông nối tiếp như RS-232 hoặc RS-485. Một bộ chuyển đổi sẽ được yêu cầu để kết nối giữa UART/USART và bus bên ngoài. Điều này sau đó cho phép dữ liệu được đọc bởi một thiết bị tương tự mà không cần hai thiết bị phải sử dụng chính xác cùng một định dạng dữ liệu nối tiếp. Miễn là truyền thông giữa hai thiết bị tuân theo một tiêu chuẩn giao thức hỗ trợ chung, việc thực hiện giao tiếp nối tiếp trong mỗi thiết bị có thể cụ thể cho thiết bị đó.
Trong khi UART đã phần lớn bị USB thay thế trong thị trường máy tính, chúng vẫn được sử dụng rộng rãi cho các giao tiếp nối tiếp trong các thiết bị giá rẻ.
Bài viết này đã xem xét một số tính năng phổ biến của thiết bị UART và thảo luận về một số ưu điểm cũng như chi tiết triển khai của nó. Trong bài viết tiếp theo, Giao thức Giao tiếp Nối tiếp - Phần Ba: RS-232, chúng ta sẽ xem xét một số giao thức giao tiếp nối tiếp có sẵn. Bạn có bỏ lỡ điều gì không? Hãy xem lại phần giới thiệu về Giao thức Giao tiếp Nối tiếp.
Công cụ thiết kế trong Altium Designer® bao gồm mọi thứ bạn cần để theo kịp với công nghệ mới. Hãy nói chuyện với chúng tôi hôm nay để tìm hiểu làm thế nào chúng tôi có thể nâng cao thiết kế PCB tiếp theo của bạn.