Cơ bản9 phút đọc20/10/2026

Thiết kế mạch nạp và debug: SWD/JTAG, header chuẩn, bẫy thường gặp

Người đọc nối đúng mạch nạp SWD/JTAG cho STM32/ESP32, chọn trở kéo, tụ lọc và tránh lỗi không nhận chip khi debug.

Thiết kế mạch nạp và debug: SWD/JTAG, header chuẩn, bẫy thường gặp
Mục lục bài viết9 ▼
  1. 1. Tổng quan SWD và JTAG: khác nhau ở đâu
  2. 2. Header chuẩn và sơ đồ chân
  3. 3. Trở kéo (pull-up/pull-down) và vai trò
  4. 4. Tụ lọc và nhiễu trên đường tín hiệu debug
  5. 5. Bố trí mạch và layout thực tế
  6. 6. Lỗi thường gặp khi làm thật
  7. 7. Kiểm tra và xác minh mạch trước khi sản xuất
  8. Checklist khi thiết kế
  9. Đọc tiếp

Mạch nạp không nhận chip là lỗi phổ biến nhất khi board mới ráp lần đầu, và nguyên nhân thường không phải do mạch nạp hỏng mà do thiếu trở kéo, sai thứ tự chân header, hoặc nhiễu trên đường tín hiệu debug. Bài này dành cho kỹ sư thiết kế mạch phần cứng cần nối đúng SWD/JTAG cho STM32/ESP32 ngay từ lần đầu, tránh mất thời gian dò lỗi bằng tay sau khi lên khuôn PCB.

#1. Tổng quan SWD và JTAG: khác nhau ở đâu

SWD (Serial Wire Debug) là giao diện 2 dây tín hiệu — SWCLK (clock) và SWDIO (data, hai chiều) — cộng với GND và VCC tham chiếu, được ARM phát triển riêng cho các chip dùng nhân Cortex-M, trong đó có dòng STM32. Vì chỉ dùng 2 dây tín hiệu, SWD tiết kiệm chân hơn JTAG đáng kể và là lựa chọn mặc định trên STM32.

JTAG (Joint Test Action Group) dùng 4 dây tín hiệu bắt buộc — TCK (clock), TMS (mode select), TDI (data in), TDO (data out) — và có thể thêm TRST (reset riêng cho mạch debug) tùy chip. JTAG là chuẩn cũ hơn, hỗ trợ boundary scan nên vẫn phổ biến trong kiểm tra sản xuất (ATE), nhưng tốn chân hơn SWD.

ESP32 không có chân JTAG cố định như STM32 — chip cho phép ánh xạ (map) các tín hiệu JTAG lên một nhóm GPIO cấu hình được qua thanh ghi IO MUX, nên khi thiết kế board phải tra đúng nhóm GPIO JTAG mặc định/khuyến nghị trong tài liệu kỹ thuật của chip, không tự chọn GPIO bất kỳ.

Tiêu chíSWDJTAG
Số dây tín hiệu2 (SWCLK, SWDIO)4–5 (TCK, TMS, TDI, TDO, TRST tùy chip)
Chip điển hìnhSTM32 (Cortex-M)Nhiều dòng vi điều khiển/FPGA, kể cả ESP32 qua GPIO map
Boundary scanKhông hỗ trợCó hỗ trợ
Số chân chiếm trên boardÍt hơnNhiều hơn

#2. Header chuẩn và sơ đồ chân

Header 10 chân (bước 2.54 mm hoặc loại nhỏ hơn 1.27 mm cho board compact) là dạng phổ biến cho giao diện SWD theo chuẩn CoreSight của ARM, mang cả tín hiệu SWDIO, SWCLK, GND, VCC tham chiếu và một số chân dự phòng (NRST, SWO...). Thứ tự chân trên header này được ARM quy định cố định trong tài liệu ARM Debug Interface — không nên tự vẽ lại thứ tự theo cảm tính, vì mạch nạp thương mại thường ép theo đúng sơ đồ chuẩn này.

Với ESP32, không có header debug chuẩn hóa dùng chung cho mọi board; thường dùng header rời nối tới đúng nhóm GPIO JTAG mặc định được công bố trong tài liệu kỹ thuật của chip. Vì nhóm GPIO này có thể trùng với chân dùng cho mục đích khác (ví dụ giao tiếp flash hoặc boot mode), cần đối chiếu kỹ bảng chức năng chân (pin function) trước khi cố định layout.

Hình minh họa: sơ đồ chân header 10 pin SWD chuẩn ARM (tham khảo tài liệu ARM Debug Interface).

#3. Trở kéo (pull-up/pull-down) và vai trò

SWDIO là tín hiệu hai chiều (bidirectional), nên khi chưa cắm mạch nạp, chân này có thể rơi vào trạng thái lửng (floating) và dễ bị nhiễu kéo lên/xuống ngẫu nhiên. Trở kéo lên (pull-up) trên SWDIO giúp giữ mức logic xác định khi không có mạch nạp cắm vào, tránh chip khởi động vào trạng thái debug không mong muốn. Giá trị cụ thể của trở kéo này phải lấy theo khuyến nghị của nhà sản xuất chip, vì mỗi dòng chip có thể yêu cầu giá trị khác nhau tùy dòng rò và ngưỡng logic.

NRST (chân reset) thường cần trở kéo lên để tránh board bị reset ngoài ý muốn do nhiễu điện từ trên đường dây dài hoặc do nhiễu từ các relay/biến tần gần đó trong tủ điện công nghiệp. Nhiều chip đã có trở kéo nội (internal pull-up) trên NRST, nhưng với board chạy trong môi trường nhiễu mạnh, nên bổ sung trở kéo ngoài theo khuyến nghị app note.

#4. Tụ lọc và nhiễu trên đường tín hiệu debug

Một số thiết kế thêm tụ lọc nhỏ trên SWCLK/SWDIO để giảm nhiễu cao tần, đặc biệt khi dây nối từ header đến mạch nạp dài hoặc đi gần nguồn công suất. Tuy nhiên tụ lọc có hai mặt: giá trị quá lớn sẽ làm chậm cạnh lên/xuống của xung clock, khiến mạch nạp chạy ở tốc độ debug cao bị lỗi đọc/ghi hoặc timeout. Giá trị tụ lọc khuyến nghị cụ thể (nếu nhà sản xuất có đề xuất) cần lấy từ app note layout tương ứng của chip đang dùng.

Tụ lọc nguồn (bulk và tụ lọc nhiễu cao tần) gần chip cần đặt đúng khoảng cách theo khuyến nghị layout của nhà sản xuất — đặt quá xa làm giảm hiệu quả lọc nhiễu nguồn, gián tiếp ảnh hưởng đến độ ổn định của tín hiệu debug vì chip dễ bị sụt áp tức thời khi mạch nạp ghi flash (dòng tải tăng đột ngột).

Hình minh họa: layout khoảng cách đặt tụ lọc nguồn gần chip theo app note của nhà sản xuất chip đang dùng.

#5. Bố trí mạch và layout thực tế

Đường tín hiệu SWD/JTAG nên đi ngắn nhất có thể từ header đến chip, và tránh chạy song song dài với đường nguồn công suất (motor driver, biến tần, relay) để giảm nhiễu ghép (crosstalk) cảm ứng lên tín hiệu debug tốc độ cao.

Đặt header debug quá xa chip trên board lớn làm tăng điện cảm và điện trở đường dây, gây suy giảm tín hiệu (signal degradation) rõ hơn khi mạch nạp chạy ở tốc độ debug cao — biểu hiện thường là nhận chip được ở tốc độ thấp nhưng lỗi liên tục khi tăng tốc độ.

#6. Lỗi thường gặp khi làm thật

Ba lỗi lặp lại nhiều nhất khi dựng mạch nạp lần đầu:

  • Không nhận chip do thiếu trở kéo: SWDIO treo lửng hoặc NRST không có trở kéo khiến mạch nạp không dò được chip hoặc dò ra tín hiệu không ổn định.
  • Nhầm thứ tự chân header: tự vẽ lại header theo cảm tính (ví dụ đổi vị trí TMS/TCK) dẫn đến mạch nạp nhận sai tín hiệu, có trường hợp đấu ngược hoàn toàn khiến không nhận chip mà không có dấu hiệu lỗi rõ ràng để debug.
  • Nguồn mạch nạp và board không đồng bộ: mạch nạp cấp nguồn tham chiếu (VCC sense) khác mức với nguồn thực tế của board, hoặc board bị sụt áp khi mạch nạp ghi flash do dòng tải tăng, gây mất kết nối debug giữa chừng.

#7. Kiểm tra và xác minh mạch trước khi sản xuất

Trước khi cắm mạch nạp, nên đo điện áp tại các chân debug (SWDIO, SWCLK, NRST) ở trạng thái chưa cắm để xác nhận mức logic đúng với kỳ vọng (ví dụ SWDIO và NRST ở mức cao nhờ trở kéo, không bị kéo xuống bởi lỗi mạch khác trên board).

Sau khi xác nhận mức logic tĩnh, nên test bằng mạch nạp thực tế trên board thử (prototype) trước khi chốt layout cho lần sản xuất PCB chính thức — bước này phát hiện sớm các lỗi do layout gây suy giảm tín hiệu mà đo tĩnh không thấy được.

Quy trình kiểm tra gợi ý: đo tĩnh mức logic → cắm mạch nạp dò chip ở tốc độ thấp → tăng dần tốc độ debug → ghi/đọc flash thử → theo dõi ổn định khi board chạy tải thực.

#Checklist khi thiết kế

  • Đã có trở kéo đúng vị trí (SWDIO, NRST) theo khuyến nghị datasheet của chip đang dùng
  • Đã dùng đúng thứ tự chân header theo chuẩn ARM (SWD) hoặc tài liệu kỹ thuật nhà sản xuất (JTAG/ESP32), không tự vẽ lại
  • Đã kiểm tra tụ lọc trên SWCLK/SWDIO (nếu có) không làm chậm tốc độ debug ngoài giới hạn cho phép
  • Đã kiểm tra khoảng cách đặt tụ lọc nguồn gần chip theo app note layout
  • Đường tín hiệu debug đi ngắn, không chạy song song dài với đường nguồn công suất
  • Đã đo điện áp tĩnh tại các chân debug trước khi cắm mạch nạp
  • Đã test với mạch nạp thực tế trên board thử trước khi chốt layout PCB chính thức

#Đọc tiếp

Bài tiếp theo trong series "Phần cứng nhúng căn bản": thiết kế mạch nguồn cho board nhúng — chọn LDO/buck, lọc nhiễu nguồn, và các bẫy thường gặp khi cấp nguồn cho mạch số lẫn mạch tương tự trên cùng board.