Làm cách nào để sử dụng ST-Link bên ngoài để gỡ lỗi / chương trình STM32F103 MCU?


16

Tôi đang sử dụng STM32F103 MCU cho dự án của riêng mình và muốn sử dụng ST-Link của bảng Nucleo STM32F411 cho mục đích gỡ lỗi / lập trình bên ngoài.

Tôi đã đặt bộ nhảy CN2 TẮT và câu hỏi thực tế của tôi nằm trong sơ đồ chân của SWO (CN2). Cách tôi tiến hành việc này như sau:

  • PIN 1 (của SWO) là VDD_Target
  • PIN 2 là SWCLK
  • PIN 3 là GND
  • PIN 4 là SWDIO
  • PIN 5 là NRST
  • PIN 6 là SWO

Theo hiểu biết tốt nhất của tôi, tôi không nên sử dụng tất cả các chân trên. Như trong, tôi đã kết nối

  • PIN 2 đến PIN 37 (hoặc PA14) trong MCU
  • PIN 3 đến GND
  • PIN 4 đến PIN 34 (hoặc PA13)
  • PIN 5 đến PIN 7 hoặc (RESET) trong MCU mục tiêu.

Không chắc chắn liệu tôi có nên kết nối pin SWO vì nó được đặt là "dành riêng" (Tại sao?). Ngoài ra, tôi đang cung cấp 3,3 V cho số chân của MCU, có nghĩa là tôi không cần kết nối VDD (PIN 1 của liên kết).

Vui lòng tham khảo bảng này tôi đã lấy từ bảng dữ liệu chính thức:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Đây là cấu hình sơ đồ chân chung của MCU tại đây:

nhập mô tả hình ảnh ở đây

Tôi đã thử nghiệm "gần như" mọi thứ bằng máy hiện sóng và máy kiểm tra và mọi thứ có vẻ ổn. Tôi còn thiếu gì ở đây nữa? Tôi nên làm bất cứ điều gì với chân BOOT0 hoặc BOOT1?

Câu trả lời:


11

Trước hết, bạn đã đúng, nếu bo mạch của bạn đã có nguồn điện áp cung cấp, bạn không phải kết nối chân VDD của ST-Link.

Điều thứ hai tôi muốn khuyên bạn là mở hướng dẫn tham khảo của bảng Nucleo STM32F411 và xem sơ đồ. Đặc biệt là phần mà ST-Link được kết nối với bộ điều khiển trên bảng.

nhập mô tả hình ảnh ở đây

Bằng ST Vi điện tử, SWCLK, SWDIO, NRST và SWO (và tất nhiên là GND) được kết nối với MCU mục tiêu. Chân SWO bổ sung được sử dụng cho mục đích gỡ lỗi, bạn có thể truy cập dữ liệu được in bằng printfchức năng thông qua chân này với ST-Link Utility .

Printf qua SWO Viewer hiển thị dữ liệu printf được gửi từ mục tiêu thông qua SWO.

Vì vậy, tôi có thể khuyên bạn nên kết nối SWO là tốt, có thể hữu ích sau này. Kết nối MCU của bạn với ST-Link giống như họ đã kết nối MCU của Nucleo với nó.

Đối với cấu hình khởi động, có ba tùy chọn có thể lựa chọn, dễ nhất là gắn với Đèn flash chính và buộc Boot0 thành GND, nhưng tôi không biết yêu cầu của bạn nên tùy bạn chọn.

nhập mô tả hình ảnh ở đây


3
Mặc dù bạn có thể "tránh xa" khi không kết nối chân VDD, nhưng đó không phải là nguồn cung cấp, mà là để phát hiện điện áp cung cấp của mục tiêu (xem cách nó được kết nối với đầu vào analog). Một giao diện gỡ lỗi tinh vi hơn có thể giữ cho các dòng của nó ở mức thấp mà không có điều đó, và chỉ nâng chúng lên mức cung cấp tương ứng, hỗ trợ nhiều điện áp mục tiêu. Dòng thiết lập lại thường không cần thiết (không giống như nhiều triển khai SWD khác). Đó là chìa khóa để phục hồi từ tải xấu và phần cứng vô hiệu hóa các chân SWD, nhưng cũng có thể được thao tác bằng tay.
Chris Stratton

Trên bảng STM32F1xx, lý do chính để khiến BOOT0 có thể chọn bên ngoài sẽ là nếu có mong muốn sử dụng bộ tải khởi động ROM UART (vv) của nhà máy. Trên '103, điều này không hỗ trợ USB như trên nhiều phần sau của ST. Nếu ai đó muốn có bộ tải khởi động USB trên '103 thì nó phải nằm trong bộ nhớ flash chính, vì vậy chân BOOT0 không hữu ích cho việc đó.
Chris Stratton

Boot0 và boot0 của tôi được đặt thành 0 để đảm bảo chương trình sẽ được ghi vào bộ nhớ Flash. Ngoài ra, tôi sẽ thử sử dụng tiện ích st-link trong máy Windows. Tôi hiện đang sử dụng Mac OS, nhưng không chắc vấn đề của tôi có liên quan đến HĐH không.
baqx0r

Tôi đã sử dụng ST-Link của STM32F407 Discovery Kit để lập trình STM32F303. Tôi chỉ đơn giản là đã kết nối đầu nối SWD của Kit (2-5 chân) với bảng SWCLK, GND, SWDIO, NRST, SWO của tôi (giống như được thực hiện trên Discovery và Nucleo) và nó hoạt động với ST-Link Utility. Chân boot0 được gắn với GND thông qua điện trở 10k, dựa trên hướng dẫn tham khảo phần cứng STM32F303 .
Bence Kaulics

6

Trước hết cảm ơn mọi người vì sự đóng góp của họ.

Sau hai đêm mất ngủ và vật lộn, tôi có thể tìm ra vấn đề. Vấn đề nằm ở các kết nối pin trong bảng tùy chỉnh của tôi: Tôi nghĩ rằng, trong MCU của tôi, Pin 9 (VDDA) bị ngắn mạch với mã PIN 24-36-48 và Pin 8 (VSSA) có mã PIN 23-35-47, nhưng nó không phải như vậy.

Tôi cần cung cấp thêm 3,3VGND cho VDDAVSSA và st-link bắt đầu hoạt động.

Phương pháp giải pháp : Tôi đã sử dụng sơ đồ Maple Mini để hiểu các kết nối của STM32F103. Hóa ra, họ đã sử dụng VDDA ngắn mạch với VDD1, VDD2 & VDD3 và VSSA với VSS1, VSS2 và VSS3. Tôi nghĩ rằng, tôi nên hiểu điều này từ việc đặt tên VSSA, vì nó không phải là VSS0 hay VSS4.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.