Lesson 07 — Giao tiếp: UART, I2C, SPI
Mô phỏng tương tác ba giao thức nối tiếp phổ biến nhất trong hệ thống nhúng. Nhập dữ liệu, quan sát giản đồ xung và so sánh đặc điểm từng giao thức.
1. UART — Mô phỏng khung truyền và thời gian
Nhập ký tự ASCII hoặc giá trị hex, chọn cấu hình và baud rate — xem giản đồ xung TX và thời gian truyền.
2. I2C — Mô phỏng bus và giao tiếp địa chỉ
Nhấp vào slave để master giao tiếp với nó. Xem SDA/SCL thay đổi bên dưới.
MCU (Master) · BME280 0x76 (cảm biến nhiệt độ/ẩm) · DS3231 0x68 (RTC) · OLED 0x3C (màn hình) · ADS1115 0x48 (ADC 16-bit)
Giản đồ xung SDA và SCL cho một giao dịch I2C điển hình (ghi 1 byte vào địa chỉ 0x76).
Nhập địa chỉ I2C (decimal hoặc hex với tiền tố 0x), xem chuyển đổi nhị phân và byte ghi/đọc trên bus.
3. SPI — Mô phỏng dịch bit MOSI/MISO
Nhập byte muốn gửi qua MOSI. Nhấn "Dịch 1 bit" để xem từng bit được chuyển ra từ shift register. Đồng thời MISO nhận bit từ slave.
Sơ đồ kết nối SPI từ 1 MCU đến N slave. Chọn số slave để xem số chân cần dùng.
Giản đồ xung 4 đường tín hiệu SPI (SCLK, CS, MOSI, MISO) khi truyền byte 0xA5.
4. Bảng so sánh và gợi ý giao thức
| Tiêu chí | UART | I2C | SPI |
|---|---|---|---|
| Số dây (cơ bản) | 2 (TX + RX) | 2 (SDA + SCL) | 3 + 1/slave |
| Đồng bộ? | Không (bất đồng bộ) | Có (SCL) | Có (SCLK) |
| Tốc độ điển hình | 9.6 k – 921.6 kbps | 100 kHz – 1 MHz | 1 – 100+ MHz |
| Số thiết bị trên bus | 1 đối 1 | Nhiều (địa chỉ 7-bit) | Nhiều (1 CS/slave) |
| Full-duplex? | Có | Không (bán song công) | Có |
| Phát hiện lỗi | Parity (tùy chọn) | ACK/NACK | Không |
| Cần pull-up? | Không | Có (4.7 kΩ) | Không |
| Khoảng cách | Xa (RS-232 → 50 m) | Ngắn (< 1 m) | Rất ngắn (< 30 cm) |
| Ứng dụng điển hình | GPS, BT, debug, WiFi module | Cảm biến, RTC, OLED nhỏ | Thẻ SD, TFT, Flash, ADC |
Chọn tình huống thực tế — công cụ sẽ gợi ý giao thức phù hợp nhất và giải thích lý do.
Tính số dây cần thiết khi kết nối N thiết bị bằng mỗi giao thức.