Giao thức truyền thông trên STM32 (Phần 0): Tổng quan và lộ trình
Series về các giao thức truyền thông của vi điều khiển (UART, SPI, I²C, CAN, LIN, RS-485, Modbus, 1-Wire, USB, Ethernet), mỗi giao thức sẽ được dựng mạch và đo trên STM32. Phần này giới thiệu chung và so sánh nhanh các giao thức.

Một sản phẩm nhúng hiếm khi chỉ có vi điều khiển chạy một mình. Nó đọc cảm biến, ghi bộ nhớ, vẽ lên màn hình, nói chuyện với một MCU khác, với máy tính, với mạng. Mỗi kết nối cần một giao thức, và nhiều lỗi khó tìm nhất (mất gói, nhiễu, trễ, chạy trên bàn thì được mà ra hiện trường thì không) bắt nguồn từ chỗ chọn sai giao thức hoặc cấu hình sai nó.
Series này đi lần lượt qua các giao thức hay gặp nhất. Mỗi phần có lý thuyết ngắn, cách cấu hình trên STM32, và kế hoạch đo trên phần cứng thật.
Nội dung mỗi phần
Mỗi phần bắt đầu với nguyên lý: tín hiệu, khung dữ liệu và các thông số cần nắm. Tiếp theo là cấu hình trên STM32 bằng STM32CubeIDE và HAL, xuống thanh ghi khi cần, ở các chế độ polling, ngắt và DMA. Kèm theo là sơ đồ nối dây, bảng lỗi thường gặp và cách gỡ.
Phần đo đạc dùng logic analyzer và oscilloscope để ghi dạng sóng, tốc độ thực và tỷ lệ lỗi. Các bài hiện có số liệu tính toán, cột số đo sẽ được điền khi chạy trên phần cứng. Ảnh mạch thử và mã nguồn đầy đủ sẽ được bổ sung cùng lúc.
So sánh nhanh các giao thức
| Giao thức | Số dây tín hiệu | Kiểu kết nối | Đặc điểm chính |
|---|---|---|---|
| UART | 2 (TX, RX) | Điểm-điểm, bất đồng bộ | Đơn giản, phổ biến nhất, tốc độ vừa phải |
| SPI | 4 (SCK, MOSI, MISO, CS) | Một master, nhiều slave | Nhanh, full-duplex, cần thêm dây CS cho mỗi slave |
| I²C | 2 (SCL, SDA) | Nhiều thiết bị trên một bus, địa chỉ hóa | Ít dây, tốc độ thấp hơn SPI, cần điện trở kéo lên |
| CAN / FDCAN | 2 (CANH, CANL) | Đa master, truyền thông điệp | Chống nhiễu tốt, có kiểm lỗi, dùng trong ô tô và công nghiệp |
| LIN | 1 dây dữ liệu | Một master, nhiều slave | Rẻ, tốc độ thấp, dùng cho thiết bị phụ trong ô tô |
| RS-485 | 2 (A, B) | Nhiều node trên bus dài | Vi sai, truyền xa, lớp vật lý cho nhiều giao thức công nghiệp |
| Modbus (RTU, TCP) | Chạy trên RS-485 hoặc Ethernet | Master - slave (client - server) | Giao thức ứng dụng phổ biến trong tự động hóa |
| 1-Wire | 1 dây dữ liệu | Một master, nhiều slave | Rất ít dây, tốc độ thấp, dùng cho cảm biến |
| USB CDC | 2 (D+, D−) | Host - device | Cổng COM ảo, kết nối thẳng với máy tính |
| Ethernet / TCP-IP | PHY + cặp xoắn | Mạng TCP/IP | Tích hợp mạng, cần stack giao thức |
Lộ trình các phần
- Tổng quan và lộ trình (bài này)
- UART
- SPI
- I²C
- CAN / FDCAN
- LIN
- RS-485
- Modbus (RTU và TCP)
- 1-Wire
- USB CDC
- Ethernet và TCP/IP
Thứ tự và danh sách có thể thay đổi tuỳ thiết bị đo và phần cứng. Phần nào chưa đăng sẽ hiện nhãn "Sắp ra mắt" trong khung series ở đầu bài.
Thiết bị thử nghiệm
Mục này sẽ cập nhật khi chốt cấu hình: dòng STM32 và board dùng cho cả series, logic analyzer, oscilloscope, và các module ngoại vi dùng để đo.
Tiếp theo
Phần 1 bắt đầu với UART. Nó là giao thức đơn giản nhất, nhưng khi chuyển sang ngắt và DMA thì có khá nhiều chỗ dễ sai.