Lập trình nhúng

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.

3 phút đọc
Giao thức truyền thông trên STM32 (Phần 0): Tổng quan và lộ trình

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

  1. Tổng quan và lộ trình (bài này)
  2. UART
  3. SPI
  4. I²C
  5. CAN / FDCAN
  6. LIN
  7. RS-485
  8. Modbus (RTU và TCP)
  9. 1-Wire
  10. USB CDC
  11. 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.