UART được viết tắt từ Universal Asynchronous Receiver Transmitter là chuẩn giao tiếp nối tiếp với sự hỗ trợ của phần cứng – hardware. Phần cứng được sử dụng cho UART là một mạch tích hợp bên trong vi điều khiển của board Arduino. 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.
Đang xem: Giao tiếp uart là gì
Bạn đang xem: Giao tiếp uart là gì
UART là chuẩn giao tiếp đơn giản nhất và được sử dụng nhiều nhất trong các kỹ thuật giao tiếp nối tiếp. Ngày nay, UART được sử dụng phổ biến trong các ứng dụng như: GPS, Bluetooth, GSM, GPRS, giao tiếp không dây, RFID,…
Với những thiết bị máy tính cũ như chuột, bàn phím, và các modem khác sử dụng những connector to và rườm rà thì chắc chắn rằng, hầu hết chúng đều sử dụng chuẩn giao tiếp UART.
Thậm chí trong giao tiếp qua cổng USB thường được sử dụng trong các thiết bị máy tính hiện nay, UART vẫn là chuẩn giao tiếp chính để sử dụng trong các ứng dụng đã kể trên. Các giao tiếp này được chuyển đổi qua mạch chuyển USB-UART.
Gần như tất cả các vi điều khiển điều có hardware UART cố định trong kiến trúc của nó. Nguyên do chính cho việc tích hợp hardware UART vào trong vi điều khiển vì đây là kiểu giao tiếp nối tiếp và nó chỉ tiêu tốn 2 chân cho việc giao tiếp này.
Trước khi đi sâu hơn tìm hiểu giao tiếp UART, phương thức hoạt động và các bước để truyền nhận dữ liệu, chúng ta sẽ sơ lược một số thông tin về sự khác nhau giữa giao tiếp nối tiếp và giao tiếp song song.
KHÁC NHAU GIỮA GIAO TIẾP NỐI TIẾP VÀ GIAO TIẾP SONG SONG
Việc chuyển dữ liệu số (Digital Data) từ thiết bị này sang thiết bị khác có thể thực hiện được bằng 2 cách:
Giao tiếp song songGiao tiếp nối tiếp
Trong giao tiếp song song, tất cả các bits sẽ được truyền đi từ thiết bị truyền đến thiết bị nhận trong 1 lần (1 xung nhịp). Đây là điều khả thi vì giao tiếp song song sử dụng nhiều đường truyền – dây dẫn – giữa thiết bị truyền và thiết bị nhận.
Giao tiếp song song là chuẩn giao tiếp nhanh hơn và tốn kém hơn vì chúng cần nhiều phần cứng hơn và nhiều dây dẫn hơn. Các máy in kiểu cũ là ví dụ rõ ràng nhất về kiểu giao tiếp song song. Bạn có thể bắt gặp một số thiết bị gần gũi hơn là giao tiếp RAM, PCI,…
Với sự phát triển của nền công nghiệp bán dẫn, các IC ngày càng trở nên nhỏ hơn và nhanh hơn. Kết quả là giao tiếp song song trở thành nút thắt cổ chai trong quá trình giao tiếp giữa các thiết bị với việc sử dụng quá nhiều chân để truyền, nhận dữ liệu.
Mặc khác, giao tiếp nối tiếp chỉ truyền dữ liệu thông qua 1 dây duy nhất. Để giao tiếp 2 chiều giữa thiết bị truyền và thiết bị nhận, chúng ta cần 2 dây để có thể truyền tải dữ liệu của chúng.
Kể từ khi chuẩn giao tiếp nối tiếp cần ít mạch và ít dây hơn, chi phí sản xuất sẽ giảm xuống. Kết quả tất yếu là sử dụng giao tiếp nối tiếp trong những mạch điện phức tạp sẽ dễ dàng hơn và tiết kiệm hơn so với giao tiếp song song.
Vấn đề duy nhất còn lăng tăng ở đây là tốc độ truyền tải dữ liệu. Việc chỉ truyền tải dữ liệu qua 1 dây duy nhất thì tốc độ sẽ thấp hơn nhiều so với giao tiếp song song. Tuy nhiên ngày nay, tốc độ của những con vi điều khiển, vi xử lý đã giải quyết được giới hạn của việc truyền nhận dữ liệu này.
GIỚI THIỆU GIAO TIẾP UART
UART hay Universal Asynchronous Receiver Transmitter là giao tiếp nối tiếp được chuyển đổi từ giao tiếp song song – quá trình chuyển đổi này được thực hiện trước khi truyền ở thiết bị truyền và sau khi nhận ở thiết bị nhận dữ liệu. Nó là giao tiếp phổ biến tại vì các thông số như: tốc độ truyền, kiểu dữ liệu,… đều có thể thay đổi được.
Như đã đề cập ở phần giới thiệt, giao tiếp UART cần hardware làm cầu nối giữa vi xử lý và cổng giao tiếp nối tiếp. Hình ảnh dưới đây sẽ chỉ ra điểm đặc biệt này. Nó có thể được kết nối với USB, RS-232,…
Chữ ‘A’ trong UART là viết tắt của từ Asynchronous nghĩa là không cần tín hiệu clock để đồng bộ hoặc validate trong quá trình truyền và nhận dữ liệu (Asynchronous Serial Communication).
Điều này đối nghịch với giao tiếp song song khi mà nó luôn luôn cần tín hiệu clock nối giữa thiết bị truyền và thiết bị nhận để đồng bộ “Synchronize” dữ liệu trong quá trình truyền, nhận. Nếu không có tín hiệu này, quá trình truyền nhận dữ liệu song song sẽ bị gián đoạn.
Trong giao tiếp UART cơ bản, thiết bị truyền và thiết bị nhận giao tiếp theo cách thức như sau: Phần cứng – hardware- UART sẽ chuyển đổi dữ liệu song song nhận được từ vi xử lý, vi điều khiển và chuyển chúng thành dữ liệu nối tiếp. Dữ liệu nối tiếp này sẽ được truyền đến thiết bị nhận và tại đây, hardware UART sẽ chuyển đổi ngược lại thành dữ liệu song song để truyền về vi điều khiển, vi xử lý của thiết bị nhận.
Các chân sử dụng cho giao tiếp UART được gọi là TX ở thiết bị truyền và RX ở thiết bị nhận. Đồng thời, có các thanh ghi – shift registers – được hiểu như là một phần của UART hardware (2 loại thanh ghi được sử dụng ở đây là: Transmitter Shift Register và Receiver Shift Register).
UART HOẠT ĐỘNG NHƯ THẾ NÀO?
Trong giao tiếp UART, dữ liệu được truyền không đồng bộ, nghĩa là không cần tín hiệu clock hoặc các tín hiệu timming khác để đồng bộ, kiểm tra dữ liệu giữa thiết bị truyền và thiết bị nhận. Thay vào đó, UART sử dụng các bit đặt biệt được gọi là Start và Stop bits.
Các bits này được thêm vào đầu và cuối gói dữ liệu. Các bits được thêm vào sẽ giúp bên nhận xác định được phần nào là phần dữ liệu thực tế cần nhận.
Hình bên trên cho thấy kết nối giữa các thành phần trong giao tiếp UART. Bộ phận truyền UART sẽ nhận dữ liệu từ vi điều khiển thông qua bus điều khiển và bus dữ liệu. Với dữ liệu này, UART sẽ thêm vào Start, Parity và Stop bits theo cầu hình và convert nó thành 1 gói dữ liệu. Gói dữ liệu này sẽ được chuyển đổi từ song song sang nối tiếp được lưu dưới các thanh ghi – shift register và truyền đi từng bit một qua chân TX.
Thiết bị nhận UART sẽ nhận dữ liệu từ chân RX và xác định đâu là dữ liệu thực sau khi loại trừ start và stop bits. Parity bit được sử dụng để kiểm tra độ chính xác của dữ liệu. Phụ thuộc vào sự chia cắt của start, parity và stop bits từ gói dữ liệu, tất cả dữ liệu sẽ được chuyển từ nối tiếp sang song song và được lưu dưới các thanh ghi – shift register. Những dữ liệu song song này sẽ được truyền đến vi điều khiển thông qua data bus.
CẤU TRÚC CỦA GÓI DỮ LIỆU – DATA PACKAGE – HOẶC FRAME
Dữ liệu của giao tiếp UART được quản lý theo các khối nhỏ gọi là gói dữ liệu hay Frames. Cấu trúc của 1 gói dữ liệu UART tiêu chuẩn được mô tả theo hình dưới đây:
Trong đó
Start Bit: Start bit là bit dùng để đồng bộ dữ liệu. Đây là bit được thêm vào phía trước dữ liệu thực tế. Start bit đánh dấu nơi bắt đầu của gói dữ liệu. Thông trường, trong trạng thái idle, khi không có dữ liệu nào được truyền, mức điện áp trên đường truyền là mức CAO – HIGH (1).Khi bắt đầu truyền dữ liệu, UART truyền sẽ kéo mức điện áp trên bus từ mức CAO xuống mức THẤP (từ 1 xuống 0). UART nhận sẽ phát hiện được sự thay đổi mức điện áp này và sẽ bắt đầu đọc dữ liệu. Thông thường, Start bit chỉ có độ dài 1 bit.Stop Bit: Như cái tên của nó, Stop Bit đánh dấu việc kết thúc gói dữ liệu. Nó có độ dài 2 bit nhưng thông thường, người ta chỉ sử dụng 1 bit. Sau khi kết thúc quá trình truyền dữ liệu, mức điện áp trên bus sẽ được giữ ở mức CAO – HIGH (1).Parity Bit: Parity bit giúp cho thiết bị nhận UART xác định được gói dữ liệu nhận được có chính xác hay không. Parity là kiểu kiểm tra sai sót ở low-level bao gồm 2 biến: Even Parity và Odd Parity. Parity bit là optional và thường ít khi được sử dụng.Data Bits: Là những bits chứa dữ liệu được gửi từ thiết bị truyền sang thiết bị nhận. Độ dài của gói dữ liệu có thể từ 5 đến 9 bits (9 bits nếu như parity bit không được dùng và chỉ có 8 bits khi parity bit được dùng). Thông thường, LSB (bit có giá trị thấp nhất) là bit được truyền đầu tiên.QUY LUẬT KHI SỬ DỤNG UART
Như đã đề cập lúc đầu, giao tiếp UART không cần sử dụng tín hiệu clock để đồng bộ dữ liệu. Tuy nhiên có một số quy luật cần phải tuân thủ để tránh các lỗi trong quá trình truyền nhận dữ liệu qua UART. Các quy luật này bao gồm:
Bits đồng bộ (Start and Stop bits)Parity BitData BitsBaud Rate – Tốc độ truyền nhận
Chúng ta đã tìm hiểu các bits đồng bộ và parity bit and data bits. Tuy nhiên, có 1 yếu tố quan trọng trong quá trình truyền nhận dữ liệu UART là Baud Rate.
Baud Rate: là tốc độ dùng để truyền và nhận dữ liệu. Cả thiết bị truyền và thiết bị nhận cần giao tiếp trên cùng 1 tốc độ để quá trình truyền nhận được hoàn thành.
Xem thêm: Bệnh Ung Thư Nào Nguy Hiểm Nhất Hiện Nay, 5 Bệnh Ung Thư Nguy Hiểm Nhất Ở Nam Và Nữ
Cùng tìm hiểu 2 block data: 00101101 and 11010011 được truyền như thế nào qua UART. Các thông số bus UART là: 9600 8N1 nghĩa là tốc độ 9600 bps với 8 bits data, không có bit parity và 1 stop bit. Trong ví dụ này, chúng ta sẽ không có parity bit.
ƯU ĐIỂM CỦA UARTChỉ cần 2 dây để truyền nhận song song dữ liệuKhông cần tín hiệu clock hay bất kỳ tín hiệu đồng bộ nào khácParity bit đảm bảo dữ liệu được truyền đi chính xácNHƯỢC ĐIỂM CỦA UARTKích thước gói dữ liệu bị giới hạnTốc độ truyền chậm hơn khi so sánh với kiểu truyền dữ liệu song songThiết bị truyền và thiết bị nhận cần phải đồng nhất một số thông số với nhau