Nắm rõ lý thuyết về chuẩn giao tiếp UART sẽ giúp chúng ta hiểu rõ bản chất và thuận lợi cho thực hiện các dự án sau này…

Chúng ta sẽ cùng tìm hiểu phần lý thuyết dài lê thê trước khi vào phần thực hành trên vi điều khiển và FPGA…

A PHẦN CƠ BẢN

Với thế hệ 9x, lúc máy tính mới ra đời, bạn có để ý máy in, chuột, bàn phím được kết nối với máy tính bằng những đầu nối khổng lồ không? Những đầu nối đấy dùng chuẩn giao tiếp UART mà chúng ta sắp tìm hiểu dưới đây.

Bạn đang xem: Khái niệm cơ bản về truyền thông uart, sơ đồ khối, ứng dụng

*
Cáp nối RS232

Chuẩn giao tiếp UART là 1 trong những chuẩn giao tiếp thường gặp của vi điều khiển. Nó không được phổ biến bằng giao tiếp USB (được dùng ở các cáp nối của điện thoại hiện nay như Type C, Micro…). Tuy nhiên ở trong các mạch PCB, nó lại rất được ưa chuộng vì tính đơn giản và dễ sử dụng của nó.

*
Chuẩn giao tiếp USB

Về cơ bản, trong giao tiếp UART, có 2 dây kết nối là RX và TX tương ứng với chức năng nhận dữ liệu và truyền dữ liệu, vì chỉ có 1 dây nên dữ liệu sẽ lần lượt truyền từng bit, từng bit 1, nên nó có kiểu truyền dữ liệu nối tiếp.

Cách truyền dữ liệu nó có thể hiểu đơn giản như sau: từ 1 khung dữ liệu cần truyền, ta sẽ đưa thêm vào đầu và cuối của khung này bit bắt đầu, bit chẵn lẻ (để kiểm tra xem dữ liệu có gửi đủ không), bit kết thúc. Khi đó 1 khung truyền sẽ được hình thành và đưa lên đường dây TX và bắt đầu quá trình truyền nối tiếp.

B PHẦN NÂNG CAO

1 Chuẩn giao tiếp UART1.1 Chuẩn giao tiếp UART là gì

UART là viết tắt của Universal Asynchronous Receiver / Transmitter. Đây là chuẩn giao tiếp nối tiếp với sự hỗ trợ của phần cứng (hardware). UART hoàn toàn khác biệt với chuẩn giao tiếp SPI hoặc I2C, những chuẩn này chỉ đơn tuần là giao tiếp phần mềm. Mục đích chính của UART là truyền và nhận dữ liệu nối tiếp.

Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau. UART truyền chuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU ​​thành dạng nối tiếp. Sau đó truyền nó nối tiếp đến UART nhận, rồi chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận. Chỉ cần hai dây để truyền dữ liệu giữa hai UART. Dữ liệu truyền từ chân Tx của UART truyền (Transmiter) đến chân Rx của UART nhận (Receiver):

Chuẩn giao tiếp UART sử dụng 2 dây để truyền và nhận dữ liệu giữa các thiết bị:

1. TX (Transmiter) - Dây truyền dữ liệu2. RX (Receiver) - Dây nhận dữ liệuChuẩn giao tiếp UART
Số dây sử dụng2
Tốc độTừ 9600 bps -> 115200 bps
Phương thức truyền dữ liệuKhông đồng bộ
Kiểu truyền dữ liệuNối tiếp
Số lượng Master (thiết bị chủ)1
Số lượng Slave (thiết bị tớ)1
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. Nghĩa là khi thiết lập ở vi điều khiển, các cấu hình tốc độ baud phải giống nhau.

2 Cách truyền dữ liệu của chuẩn giao tiếp UART

Để tiện cho việc phân tích ta gọi UART1 là bên truyền dữ liệu và UART2 là bên nhận dữ liệu.

Các UART sẽ truyền và nhận dữ liệu từ một bus dữ liệu (Data Bus). Bus dữ liệu được sử dụng để gửi dữ liệu đến UART bởi một thiết bị khác như CPU, bộ nhớ hoặc vi điều khiển. Dữ liệu được chuyển từ bus dữ liệu đến UART 1 ở dạng song song. Sau khi UART1 nhận dữ liệu song song từ bus dữ liệu, nó sẽ thêm một bit Start, một bit Parity (bit chẵn lẻ) và một bit Stop, tạo ra gói dữ liệu. Tiếp theo, gói dữ liệu được xuất ra nối tiếp từng bit tại chân Tx. UART 2 đọc gói dữ liệu từng bit tại chân Rx của nó. Sau đó UART 2 chuyển đổi dữ liệu trở lại dạng song song và loại bỏ bit Start, bit Parity bit Stop. Cuối cùng, UART2 chuyển gói dữ liệu song song với bus dữ liệu ở đầu nhận:

Cách truyền dữ liệu của giao tiếp UART

Dữ liệu được truyền trong giao tiếp UART được tổ chức thành các gói (Packets) . Mỗi Packets chứa 1 bit Start, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), 1 bit Parity và 1 hoặc 2 bit Stop.

Khung truyền của giao tiếp UART2.1 Start bit (bit khởi đầu) 
*
Start bit

Đường truyền dữ liệu trong giao tiếp UART thường được giữ ở mức điện áp cao khi nó 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ừ mức cao xuống mức thấp trong một chu kỳ đồng hồ. Khi UART 2 phát hiện sự chuyển đổi điện áp cao xuống thấp, nó bắt đầu đọc các bit trong khung dữ liệu ở tần số của tốc độ truyền (Baud rate).

2.2 Data Frame (khung dữ liệu) 

Khung dữ liệu chứa dữ liệu thực tế đang được truyền. Nó có thể dài từ 5 bit đến 8 bit nếu sử dụng bit Parity (bit chẵn lẻ). Nếu không sử dụng bit Parity, 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 với bit LSB (bit có trọng số thấp nhất) trước tiên.

2.3 Parity bit (bit chẵn lẻ) 

Trong giao tiếp UART, Bit Parity mô tả tính chẵn hoặc lẻ của một số. bit Parity là một cách để UART 2 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. Bit có thể bị thay đổi bởi tốc độ truyền không khớp hoặc truyền dữ liệu khoảng cách xa,… Sau khi UART 2 đọc khung dữ liệu, nó sẽ đếm số bit có giá trị là 1 và kiểm tra xem tổng số là số chẵn hay lẻ. Nếu bit Parity là 0 (chẵn), thì tổng các bit 1 trong khung dữ liệu phải là một số chẵn. Nếu bit Parity là 1 (lẻ), thì tổng các bit 1 trong khung dữ liệu sẽ là một số lẻ. Khi bit Parity 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 Parity là 0 và tổng là số lẻ; hoặc bit Parity là 1 và tổng số là chẵn, UART biết rằng các bit trong khung dữ liệu đã thay đổi.

2.4 Stop bit (bit kết thúc)
*
Stop bit

Để 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.

2.5 Các bước truyền dữ liệu trong chuẩn giao tiếp UARTUART truyền nhận dữ liệu song song từ bus dữ liệu: Dữ liệu sẽ là song song ở đầu vào. Sau đó sẽ được chuyển thành nối tiếp để truyền trên dây TX. Tốc độ baud thiết lập từ trước ở phần cấu hình.Đầu vào của UART (truyền song song)UART truyền thêm bit bắt đầu, bit chẵn lẻ và (các) bit dừng vào khung dữ liệu:Đưa thêm các bit điều kiện vào khung truyền

Trong quá trình này sẽ thực hiện việc đưa thêm các thành phần Start bit, Parity bit và Stop bit vào khung truyền để chuẩn bị cho việc truyền dữ liệu.

Toàn bộ gói tin được gửi nối tiếp từ UART truyền đến UART nhận. UART nhận lấy mẫu đường dữ liệu ở tốc độ truyền được định cấu hình trước:Quá trình truyền dữ liệu trong giao tiếp UART

Trong quá trình này các bit trong khung truyền lần lượt được đẩy lên đường dây TX của UART1 (truyền) và đưa tới dây RX của UART2 (nhận).

UART nhận loại bỏ bit bắt đầu, bit chẵn lẻ và bit dừng khỏi khung dữ liệu:Loại bỏ các bit điều kiện trong khung truyền

Quá trình này sẽ bỏ các bit điều kiện đi, sau đó chỉ còn Data Frame (khung dữ liệu). Cuối cùng dữ liệu cần truyền sẽ tiếp tục được xử lý trong Slave (thiết bị tớ).

Xem thêm: Công Thức Máy Biến Áp 3 Pha, Công Thức Tính Công Suất Máy Biến Áp 3 Pha

UART nhận chuyển đổi dữ liệu nối tiếp trở lại thành song song và chuyển nó đến data BusChuyển dữ liệu nối tiếp trở lại song song

Lúc này việc truyền dữ liệu qua giao tiếp UART đã hoàn thành

3 Ưu, nhược điểm của chuẩn giao tiếp UART

Không có giao thức truyền thông nào là hoàn hảo, nhưng UART thực hiện khá tốt công việc của chúng. Dưới đây là một số ưu và nhược điểm của chuẩn giao tiếp UART. Mong rằng chúng có thể hỗ trợ cho dự án của bạn.

3.1 Ưu điểm

Chỉ sử dụng hai dâyKhông cần tín hiệu đồng hồCó một bit chẵn lẻ để cho phép kiểm tra lỗiCấu trúc của gói dữ liệu có thể được thay đổiPhương pháp được ghi chép rõ ràng và được sử dụng rộng rãi

3.2 Nhược điểm

Kích thước của khung dữ liệu được giới hạn tối đa là 9 bitKhông hỗ trợ nhiều hệ thống phụ hoặc nhiều hệ thống chínhTốc độ truyền của mỗi UART phải nằm trong khoảng 10% của nhau