Chuyển đến nội dung
AIOTAIOT
  • Trang chủ
  • Giới thiệu
  • Tin tức
  • Sản phẩm
  • Giải pháp
    • Chấm công bằng Face ID
    • Thiết bị đọc căn cước
    • IoT trong giáo dục
    • IoT trong quản lý năng lượng
    • IoT trong y tế
  • Đào tạo
    • Khóa đào tạo cơ bản
      • Cảm biến
      • Hệ thống nhúng
      • LabVIEW FPGA
      • Phần cứng máy tính & Truyền thông công nghiệp
      • FPGA cơ bản
    • Khóa đào tạo nâng cao
      • LabVIEW FPGA High Performance
    • Tài liệu
  • PCCC
  • Liên hệ
  • icon
    097 186 8316    |    0839 799 889
Đào tạo, Hệ thống nhúng, Khóa đào tạo cơ bản

[Embedded Series – Bài 21] Làm Chủ Giao Tiếp UART Và SPI Trong Hệ Thống Nhúng

Đã đăng trên 11/05/202628/04/2026 bởi ThaoNguyen
11
Th5

Trong hệ thống nhúng, việc một vi điều khiển hoạt động độc lập là chưa đủ. Để xây dựng các ứng dụng thực tế, vi điều khiển cần phải “nói chuyện” được với các module bên ngoài như cảm biến, màn hình, GPS hay thậm chí là giao tiếp với máy tính. Bài viết hôm nay sẽ giới thiệu chi tiết về hai chuẩn giao tiếp kinh điển: UART (không đồng bộ) và SPI (đồng bộ).

🎯 Mục tiêu học tập

  • Hiểu rõ nguyên lý hoạt động của chuẩn giao tiếp không đồng bộ UART.
  • Nắm vững cấu trúc gói tin UART: Start bit, Data frame, Parity và Stop bit.
  • Làm chủ chuẩn giao tiếp đồng bộ tốc độ cao SPI và các chân tín hiệu (MOSI, MISO, SCK, CS).
  • Phân biệt 4 chế độ hoạt động của SPI dựa trên CPOL và CPHA.
  • Tìm hiểu các cấu hình kết nối đa thiết bị (Independent vs Daisy Chain).

1. Tổng quan về giao tiếp UART (Universal Asynchronous Receiver/Transmitter)

UART là một trong những chuẩn giao tiếp phổ biến và đơn giản nhất. Đây là kiểu truyền thông điểm – điểm (point-to-point), kết nối trực tiếp giữa hai thiết bị (ví dụ: MCU với PC hoặc MCU với Module GPS).

a) Đặc điểm hoạt động

  • Không đồng bộ (Asynchronous): Không sử dụng xung Clock chung để đồng bộ dữ liệu. Thay vào đó, hai thiết bị phải thống nhất một tốc độ truyền gọi là Baud rate.
  • Song công (Full Duplex): Có thể truyền và nhận dữ liệu đồng thời nhờ hai đường tín hiệu riêng biệt (TX và RX).
  • Tốc độ Baud: Là số bit được truyền trong một giây. Các tốc độ phổ biến là 9600, 115200, 921600 bps.

b) Định dạng gói tin (Data Frame)

Vì không có xung Clock, UART sử dụng các bit đặc biệt để đánh dấu bắt đầu và kết thúc dữ liệu:

  • Start Bit: Bình thường đường truyền ở mức Cao (1). Khi bắt đầu truyền, đường tín hiệu bị kéo xuống mức Thấp (0) để báo hiệu cho bên nhận.
  • Data Frame: Chứa dữ liệu thực tế (thường là 8 bit). Bit có trọng số thấp nhất (LSB) sẽ được truyền trước.
  • Parity Bit: (Tùy chọn) Dùng để kiểm tra lỗi đơn giản bằng cách đếm số lượng bit 1 là chẵn hay lẻ.
  • Stop Bit: Đánh dấu kết thúc gói tin bằng cách đưa đường truyền trở lại mức Cao (1) trong khoảng 1 hoặc 2 bit.

2. Giao tiếp SPI (Serial Peripheral Interface)

Khác với UART, SPI là chuẩn truyền thông nối tiếp đồng bộ tốc độ cao, thường được dùng để giao tiếp với các chip nhớ (Flash), cảm biến gia tốc, hoặc màn hình TFT màu.

a) Cấu trúc 4 dây thần thánh

SPI sử dụng 4 đường tín hiệu chính giữa thiết bị Master (chủ) và Slave (tớ):

  • MOSI (Master Out Slave In): Truyền dữ liệu từ Master sang Slave.
  • MISO (Master In Slave Out): Truyền dữ liệu từ Slave về Master.
  • SCLK (Serial Clock): Xung đồng bộ do Master tạo ra.
  • CS/SS (Chip Select / Slave Select): Dùng để chọn thiết bị Slave nào sẽ giao tiếp (mức Thấp là chọn).

b) Nguyên lý hoạt động

Để bắt đầu giao tiếp, Master kéo chân CS của Slave tương ứng xuống mức 0. Master sau đó tạo xung Clock trên đường SCLK. Với mỗi nhịp Clock, một bit dữ liệu sẽ được đẩy ra trên đường MOSI và một bit khác được nhận vào từ đường MISO. Quá trình này diễn ra đồng thời, tạo nên cơ chế song công toàn phần (Full-duplex).

c) 4 Chế độ hoạt động (SPI Modes)

Dựa vào hai tham số CPOL (Cực tính xung) và CPHA (Pha xung), SPI có 4 chế độ hoạt động:

Mode CPOL CPHA Mô tả
0 0 0 Clock nhàn rỗi ở mức 0, lấy mẫu tại cạnh lên đầu tiên.
1 0 1 Clock nhàn rỗi ở mức 0, lấy mẫu tại cạnh xuống.
2 1 0 Clock nhàn rỗi ở mức 1, lấy mẫu tại cạnh xuống.
3 1 1 Clock nhàn rỗi ở mức 1, lấy mẫu tại cạnh lên.

d) Các cấu hình kết nối đa Slave

  • Independent Slave Configuration: Master có nhiều chân CS, mỗi chân nối đến một Slave riêng biệt.
  • Daisy Chain Configuration: Dữ liệu đi xuyên qua các Slave như một chuỗi mắc xích. MISO của Slave này nối vào MOSI của Slave tiếp theo.

3. Các thanh ghi SPI quan trọng trên STM32F4

Để lập trình SPI ở mức thấp, chúng ta cần can thiệp vào các thanh ghi chính:

  • SPI_CR1 (Control Register 1): Cấu hình tốc độ (Baud rate), kích thước khung dữ liệu (8/16 bit), chọn chế độ Master/Slave và bật/tắt module SPI.
  • SPI_SR (Status Register): Chứa các cờ trạng thái quan trọng như TXE (Bộ đệm truyền trống) và RXNE (Bộ đệm nhận đã đầy).
  • SPI_DR (Data Register): Nơi bạn ghi dữ liệu cần gửi đi và đọc dữ liệu nhận về.
📝 Tóm tắt: UART linh hoạt cho các kết nối đơn giản và gỡ lỗi, trong khi SPI là lựa chọn hàng đầu cho các ứng dụng cần tốc độ truyền dữ liệu cực nhanh và giao tiếp với nhiều ngoại vi trên cùng một bus. Hiểu rõ các thông số Baud rate, CPOL và CPHA là chìa khóa để xử lý mọi sự cố giao tiếp.

🚀 Bài tập thực hành

  1. UART: Viết chương trình nhận một ký tự từ máy tính qua UART và gửi trả lại chính ký tự đó (Echo).
  2. SPI: Cấu hình STM32 làm Master để đọc ID từ một con chip nhớ Flash (ví dụ W25Qxx) bằng giao thức SPI.
  3. Nâng cao: Kết hợp UART và SPI. Đọc dữ liệu từ cảm biến qua SPI và gửi kết quả lên màn hình máy tính qua UART mỗi 1 giây.

“Giao tiếp là linh hồn của hệ thống nhúng. Làm chủ được các giao thức này, bạn đã nắm giữ chìa khóa để kết nối mọi module trong dự án của mình.”

Gợi ý bài tiếp theo: Giao Tiếp I2C Chuyên Sâu Và Làm Chủ UART Interrupt Trên STM32

 

Mục nhập này đã được đăng trong Đào tạo, Hệ thống nhúng, Khóa đào tạo cơ bản và được gắn thẻ Embedded Systems.
ThaoNguyen

[Embedded Series – Bài 20] Giao Tiếp Với Thế Giới Tương Tự: Làm Chủ ADC Và DAC Trên STM32
[Embedded Series – Bài 22] Giao Tiếp I2C Chuyên Sâu Và Làm Chủ UART Interrupt Trên STM32

Để lại một bình luận Hủy

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 *

Bài viết mới
  • Bài 3: Mạch Giao tiếp – Nghệ thuật điều khiển điện áp: Để Cảm biến và Vi điều khiển “hiểu” nhau
  • So sánh các phiên bản Windows 11 năm 2026: Home, Pro và Enterprise phù hợp với đối tượng nào?
  • Lộ trình chuyển dịch sang Windows 11 năm 2026: Yêu cầu an toàn thông tin và giải pháp tối ưu hóa hiệu suất
  • Rủi Ro Bảo Mật Từ Ổ Cứng Cũ: Những Sai Lầm Phổ Biến Khi Thanh Lý Thiết Bị Lưu Trữ
  • Xu Hướng Đưa AI Tự Chủ Lên Thiết Bị Cạnh Biên: Phân Tích Giải Pháp Phần Cứng Và Phần Mềm Từ GTC Taipei 2026
Danh mục
  • Cảm biến
  • Đào tạo
  • FPGA cơ bản
  • Giải pháp
  • Hệ thống nhúng
  • IoT trong giáo dục
  • IoT trong y tế
  • Khóa đào tạo cơ bản
  • Khóa đào tạo nâng cao
  • LabVIEW FPGA
  • LabVIEW FPGA High Performance
  • Phần cứng máy tính & Truyền thông công nghiệp
  • Sản xuất công nghiệp
  • Thiết bị dịch vụ thông minh
  • Thiết bị đọc căn cước
  • Tin tức

CÔNG TY CỔ PHẦN HỆ THỐNG AIOT

VPGD: Số A21-TT9 Đường Foresa 1 KĐT Xuân Phương, Phường Xuân Phương, Hà Nội.

Địa chỉ kinh doanh: Đường Phú Diễn, Tổ dân phố 18, phường Phú Diễn, Thành phố Hà Nội, Việt Nam

Hotline/Zalo: 097 186 8316 | 0839 799 889

Email: aiot@aiots.vn

VỀ CHÚNG TÔI

Giới thiệu

Sản phẩm

Giải pháp

Đào tạo

Tin tức

QUY ĐỊNH & CHÍNH SÁCH

Chính sách thanh toán

Chính sách vận chuyển

Chính sách bảo hành

Chính sách đổi trả

Chính sách bảo mật

ĐỊA CHỈ VĂN PHÒNG GIAO DỊCH

Copyright 2024 © Bản quyền thuộc về AIOT. Thiết kế bởi Jamina JSC
  • Trang chủ
  • Giới thiệu
  • Tin tức
  • Sản phẩm
  • Giải pháp
    • Chấm công bằng Face ID
    • Thiết bị đọc căn cước
    • IoT trong giáo dục
    • IoT trong quản lý năng lượng
    • IoT trong y tế
  • Đào tạo
    • Khóa đào tạo cơ bản
      • Cảm biến
      • Hệ thống nhúng
      • LabVIEW FPGA
      • Phần cứng máy tính & Truyền thông công nghiệp
      • FPGA cơ bản
    • Khóa đào tạo nâng cao
      • LabVIEW FPGA High Performance
    • Tài liệu
  • PCCC
  • Liên hệ
Zalo
Phone

Đăng nhập

Quên mật khẩu?