#2_Chuẩn giao tiếp UART

Chuẩn giao tiếp uart

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 trước khi thực hành trên vi điều khiển …

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.

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…).

Giao tiếp USB
Giao tiếp USB

Tìm hiểu Giao tiếp USB.

Trong các mạch PCB, chuẩn giao tiếp UART lại rất được ưa chuộng vì tính đơn giản và dễ sử dụng của nó.
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.

Phần nâng cao

Chuẩn giao tiếp UART

UART là viết tắt của Universal Asynchronous Receiver / Transmitter. 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.

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ệu
  2. RX (Receiver) – Dây nhận dữ liệu
Chuẩ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.

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ư 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:

Chuẩn giao tiếp UART
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.

Chuẩn giao tiếp UART
Khung truyền của giao tiếp UART (Click để phóng to)

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).

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.

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ẻ. Do đó qua kiểm tra sẽ biết được quá trình truyền dữ liệu có chính xác.

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.

Các bước truyền dữ liệu trong chuẩn giao tiếp UART

  • UART 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:
Chuẩn giao tiếp UART
Đư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ớ).

  • 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 Bus
Chuyể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

Ư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.

Ưu điểm

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

Nhược điểm

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

Phần tổng kết

Ta đã cùng nhau tìm hiểu cơ bản về lý thuyết của chuẩn giao tiếp UART, đây là 1 khởi đầu tốt đẹp trước khi bắt đầu thực hành. Kiến thức về giao tiếp UART được tóm tắt lại như sau:

  • Chỉ sử dụng 2 dây TX và RX
  • Giao tiếp UART có kiểu truyền dữ liệu nối tiếp (trên 1 dây TX)
  • Phương thức truyền không đồng bộ (do không cần tín hiệu đồng hồ)
  • Ngoài dữ liệu ra trong 1 lần truyền còn nhét thêm các Start bit, Stop bit, Parity bit. Các bit thêm vào này giúp cho Slave nhận biết, kiểm tra và nhận được đúng tín hiệu.

Việc tìm hiểu các chuẩn giao tiếp thường gặp khác lúc này sẽ trở nên rất dễ dàng. Bạn có thể đọc thêm các chuẩn giao tiếp khác:

Bạn có thắc mắc gì trong bài viết không?

Đánh giá và để lại bình luận bên dưới nhá.

5/5 - (3 bình chọn)

Similar Posts

One Comment

  1. Có bạn nào biết khả năng kéo cáp UART tối đa được bao xa cho mình biết với.
    Xin cảm ơ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 *