วิธีการใช้ ST-Link ภายนอกเพื่อดีบัก / โปรแกรม STM32F103 MCU


16

ฉันกำลังใช้ STM32F103 MCU สำหรับโครงการของฉันและต้องการใช้ ST-Link ของบอร์ด STM32F411 Nucleo เพื่อการดีบัก / เขียนโปรแกรมภายนอก

ฉันได้ปิดตัวจัมเปอร์ CN2 และคำถามที่แท้จริงของฉันอยู่ใน pinout ของ SWO (CN2) ฉันจะทำสิ่งต่อไปนี้อย่างไร:

  • PIN 1 (จาก SWO) คือ VDD_Target
  • PIN 2 คือ SWCLK
  • PIN 3 คือ GND
  • PIN 4 คือ SWDIO
  • PIN 5 คือ NRST
  • PIN 6 คือ SWO

เพื่อความรู้ที่ดีที่สุดของฉันฉันไม่ควรใช้หมุดเหล่านี้ทั้งหมดข้างต้น ในขณะที่ฉันได้เชื่อมต่อ

  • PIN 2 ถึง PIN 37 (หรือ PA14) ใน MCU
  • PIN 3 ถึง GND
  • PIN 4 ถึง PIN 34 (หรือ PA13)
  • PIN 5 ถึง PIN 7 หรือ (RESET) ใน MCU เป้าหมาย

ไม่แน่ใจว่าฉันควรจะเชื่อมต่อขา SWO เพราะมันตั้งเป็น "สงวน" (ทำไม?) นอกจากนี้ฉันให้ 3.3 V ถึง VIN พินของ MCU หมายความว่าฉันไม่จำเป็นต้องเชื่อมต่อ VDD (PIN 1 ของ stlink)

โปรดอ้างอิงตารางนี้จากตารางข้อมูลอย่างเป็นทางการ:

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

นี่คือการกำหนดค่า pinout ทั่วไปของ MCU ที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันได้ทดสอบทุกอย่าง "เกือบ" ด้วยออสซิลโลสโคปและเครื่องทดสอบและทุกอย่างดูโอเค มีอะไรอีกบ้างที่ขาดหายไป ฉันควรทำอะไรกับพิน BOOT0 หรือ BOOT1

คำตอบ:


11

ก่อนอื่นคุณพูดถูกถ้าบอร์ดของคุณมีแหล่งจ่ายแรงดันอยู่แล้วคุณไม่จำเป็นต้องเชื่อมต่อ VDD ของ ST-Link

สิ่งที่สองที่ฉันอยากจะแนะนำคือการเปิดคู่มืออ้างอิงของบอร์ด STM32F411 Nucleo และดูแผนผัง โดยเฉพาะอย่างยิ่งส่วนที่ ST-Link เชื่อมต่อกับคอนโทรลเลอร์บนบอร์ด

ป้อนคำอธิบายรูปภาพที่นี่

โดย ST Microelectronics, SWCLK, SWDIO, NRST และ SWO (และ GND แน่นอน) เชื่อมต่อกับ MCU เป้าหมาย ขา SWO เพิ่มเติมจะใช้เพื่อวัตถุประสงค์ในการแก้ปัญหานี้คุณสามารถเข้าถึงข้อมูลที่พิมพ์ด้วยprintfฟังก์ชั่นผ่านขานี้กับST-Link ยูทิลิตี้

Printf ผ่านทาง SWO Viewer จะแสดงข้อมูล printf ที่ส่งจากเป้าหมายผ่านทาง SWO

ดังนั้นฉันสามารถแนะนำให้คุณเชื่อมต่อ SWO ได้เช่นกันจะมีประโยชน์ในภายหลัง เชื่อมต่อ MCU ของคุณเข้ากับ ST-Link เหมือนพวกเขาเชื่อมต่อ MCU ของ Nucleo เข้ากับมัน

สำหรับการกำหนดค่าการบู๊ตมีสามตัวเลือกให้เลือกง่ายที่สุดที่จะติดกับ Main Flash และผูก Boot0 กับ GND แต่ฉันไม่ทราบความต้องการของคุณดังนั้นมันขึ้นอยู่กับคุณที่จะเลือก

ป้อนคำอธิบายรูปภาพที่นี่


3
ในขณะที่คุณสามารถ "หนีไปกับ" ไม่ได้เชื่อมต่อขา VDD มันไม่ได้มีอยู่ในแหล่งจ่ายไฟ แต่มีไว้เพื่อตรวจจับแรงดันไฟฟ้าของเป้าหมาย (ดูวิธีการเชื่อมต่อกับอินพุตแบบอะนาล็อก) อินเทอร์เฟซการตรวจแก้จุดบกพร่องที่ซับซ้อนมากขึ้นสามารถรักษาบรรทัดของมันให้ต่ำโดยที่ไม่ต้องและยกระดับเหล่านั้นไปยังระดับการจัดหาที่สอดคล้องกันสนับสนุนแรงดันไฟฟ้าเป้าหมายหลาย ปกติแล้วไม่จำเป็นต้องมีการรีเซ็ตบรรทัดใหม่(ต่างจากการใช้ SWD อื่น ๆ อีกมากมาย) มันเป็นกุญแจสำคัญในการกู้คืนจากการโหลดที่ไม่ดีและเฟิร์มแวร์ที่ปิดการใช้งานหมุด SWD แต่สามารถจัดการได้ด้วยตนเองเช่นกัน
Chris Stratton

บนบอร์ด STM32F1xx เหตุผลหลักที่ทำให้ BOOT0 สามารถเลือกได้จากภายนอกคือหากมีความต้องการใช้ bootloader ROM UART (ฯลฯ ) ของโรงงาน ใน '103 สิ่งนี้ไม่รองรับ USB เช่นเดียวกับในส่วนต่างๆของ ST ถ้าใครต้องการ USB bootloader ใน '103 จะต้องอยู่ในหน่วยความจำแฟลชหลักดังนั้นขา BOOT0 จะไม่เป็นประโยชน์สำหรับสิ่งนั้น
Chris Stratton

boot0 และ boot0 ของฉันถูกตั้งค่าเป็นศูนย์เพื่อให้แน่ใจว่าโปรแกรมจะถูกเขียนลงในหน่วยความจำแฟลช นอกจากนั้นฉันจะลองใช้ยูทิลิตี้ st-link ในเครื่อง Windows ฉันใช้ Mac OS อยู่ในขณะนี้ แต่ไม่แน่ใจว่าเป็นปัญหาที่เกี่ยวข้องกับระบบปฏิบัติการหรือไม่
baqx0r

ฉันใช้ ST-Link ของ STM32F407 Discovery Kit เพื่อตั้งโปรแกรม STM32F303 ฉันเพิ่งเชื่อมต่อตัวเชื่อมต่อ SWD ของชุด (2-5 พิน) เข้ากับบอร์ดของฉัน SWCLK, GND, SWDIO, NRST, SWO (เหมือนกับที่ทำบน Discovery และ Nucleo) และทำงานกับ ST-Link Utility ขา boot0 จะเชื่อมโยงกับ GND ผ่านตัวต้านทาน 10k ตาม STM32F303 คู่มืออ้างอิงฮาร์ดแวร์
Bence Kaulics

6

ก่อนอื่นขอขอบคุณทุกคนที่มีส่วนร่วม

หลังจากสองคืนนอนไม่หลับและดิ้นรนฉันก็สามารถค้นหาปัญหาได้ ปัญหาเกิดขึ้นจากการเชื่อมต่อแบบพินในบอร์ดที่กำหนดเองของฉัน: ฉันคิดว่าใน MCU ของฉัน Pin 9 (VDDA) ลัดวงจรด้วย PIN 24-36-48 และ Pin 8 (VSSA) ด้วย PIN 23-35-47 แต่มันไม่เป็นเช่นนั้น

ฉันต้องการให้3.3VอีกอันและGND อีกตัวให้VDDAและVSSAและ st-link เริ่มทำงาน

วิธีการแก้ปัญหา : ฉันใช้แผนผัง Maple เพื่อเข้าใจการเชื่อมต่อของ STM32F103 ปรากฎว่าพวกเขาได้ VDDA ลัดวงจรกับ VDD1, VDD2 & VDD3 และ VSSA กับ VSS1, VSS2 และ VSS3 ฉันคิดว่าฉันควรเข้าใจสิ่งนี้จากการตั้งชื่อ VSSA เนื่องจากไม่ใช่ VSS0 หรือ VSS4

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.