Lập Trình Pic: Giao Tiếp UART với Máy Tính

Chào các bạn!

Hôm nay mình sẽ giới thiệu với các bạn về cách lập trình giao tiếp UART giữa PIC 16F877A và máy tính.

I. Sơ Đồ Nguyên Lý Kết Nối UART ở Kit Pic Starter

II. Sơ Lược về UART

1. Giao Tiếp UART là gì?

  • UART là viết tắt của Universal Asynchronous Receiver – Transmitter, thường là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi. Rất nhiều vi điều khiển hiện nay đã được tích hợp UART vì vấn đề tốc độ và độ điện dụng của UART không thể so sánh với các giao tiếp mới hiện nay. Vì vậy, các dòng PC & Laptop đời mới không còn tích hợp cổng UART. Giao tiếp SPI và I2C sử dụng 1 dây truyền dữ liệu và 1 dây SCL để đồng bộ trong giao tiếp. Tuy nhiên, với UART thì không có dây SCL, vấn đề này được giải quyết khi việc truyền UART được dùng giữa 2 vi xử lý với nhau. Điều này có nghĩa là mỗi vi xử lý có thể tự tạo ra xung clock cho chính nó sử dụng.

Để bắt đầu truyền dữ liệu bằng UART, một START bit được gửi đi, sau đó là các bit dữ liệu và kết thúc quá trình truyền là STOP bit.

Như hình các bạn có thể thấy. Khi ở trạng thái chờ mức điện thế ở mức 1 (high). Khi bắt đầu truyền START bit, nó sẽ chuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là quá trình truyền dữ liệu sắp xảy ra. Sau START bit là đến các bit dữ liệu D0-D7 (Theo hình vẽ các bit này có thể ở mức High or Low tùy theo dữ liệu). Sau khi truyền hết dữ liệu thì đến Bit Parity để bộ nhận kiểm tra tính đúng đắn của dữ liệu truyền. Cuối cùng là STOP bit là 1 báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu.

2. Các Thông Số Cơ Bản trong Truyền Nhận UART:

  • Baud rate (tốc độ baud): Khoảng thời gian dành cho 1 bit được truyền. Phải được cài đặt giống nhau ở gửi và nhận.
  • Frame (khung truyền): Khung truyền quy định về số bit trong mỗi lần truyền.
  • Start bit: là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận có một gói dữ liệu sắp đến. Bit bắt buộc.
  • Data: dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước, sau đó đến bit MSB.
  • Parity bit: kiểm tra dữ liệu truyền có đúng không.
  • Stop bit: là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu. Bit bắt buộc.

Ok, mình sẽ giới thiệu sơ lược với các bạn vậy thôi trong bài đăng sau sẽ giới thiệu rõ hơn về UART, vì vậy hãy theo dõi. Trong bài đăng sau, mình sẽ gửi tài liệu cho các bạn xem. Trong bài này, mình sẽ hướng dẫn các bạn xuất 1 ký tự và 1 chuỗi ký tự lên cửa sổ Virtual Terminal.

III. Chương Trình Demo

Các bạn tải project demo tại đây.