STM32F103 MCU'da hata ayıklamak / programlamak için harici ST-Link nasıl kullanılır?


16

Kendi projem için STM32F103 MCU kullanıyorum ve harici hata ayıklama / programlama amacıyla STM32F411 Nucleo panosunun ST-Linkini kullanmak istiyorum.

CN2 jumper'ları KAPALI konuma getirdim ve asıl sorum SWO'nun (CN2) pinoutsunda. Bu konuda nasıl ilerlediğim şöyledir:

  • PIN 1 (of SWO) VDD_Target
  • PIN 2, SWCLK
  • PIN 3, GND
  • PIN 4 SWDIO'dur
  • PIN 5 NRST
  • PIN 6 SWO'dur

Bildiğim kadarıyla yukarıdaki tüm pinleri kullanmamalıyım. Olduğu gibi bağlandım

  • MCU'da PIN 2 - PIN 37 (veya PA14)
  • GND'den PIN 3'e
  • PIN 4 - PIN 34 (veya PA13)
  • Hedef MCU'da PIN 5 - PIN 7 veya (SIFIRLA).

SWO pinini "ayrılmış" olarak ayarlanıp ayarlanmayacağından emin değilim (Neden?). Ayrıca MCU'nun VIN pinine 3.3 V veriyorum, VDD'yi (stlink'in PIN 1'i) bağlamaya ihtiyacım olmadığı anlamına geliyor.

Lütfen resmi veri sayfasından aldığım bu tabloya bakın:

resim açıklamasını buraya girin resim açıklamasını buraya girin

İşte MCU'nun genel pinout yapılandırması:

resim açıklamasını buraya girin

"Neredeyse" her şeyi osiloskop ve test cihazı ile test ettim ve her şey iyi görünüyor. Burada başka ne eksik? BOOT0 veya BOOT1 pinleri ile herhangi bir şey yapmalı mıyım?

Yanıtlar:


11

Her şeyden önce, haklısınız, eğer kartınızda zaten bir besleme voltajı kaynağı varsa, ST-Link'in VDD pinini bağlamanız gerekmez.

Size önereceğim ikinci şey, STM32F411 Nucleo board'un referans kılavuzunu açmak ve şemalara bakmak. Özellikle ST-Link'in karttaki denetleyiciye bağlandığı kısım.

resim açıklamasını buraya girin

ST Mikroelektronik ile SWCLK, SWDIO, NRST ve SWO (ve tabii ki GND) hedef MCU'ya bağlanır. Ek SWO pimi hata ayıklama amacıyla kullanılır, ST-Link Utilityprintf ile bu pim aracılığıyla işlevle basılı verilere erişebilirsiniz .

SWO ile Printf Görüntüleyicisi, hedeften SWO aracılığıyla gönderilen printf verilerini görüntüler.

Bu yüzden SWO'yu da bağlamanızı tavsiye edebilirim, daha sonra yararlı olabilir. MCU'nuzu Nucleo'nun MCU'sunu ona bağlamış gibi ST-Link'e bağlayın.

Önyükleme yapılandırmalarına gelince, Ana Flash ile yapışması ve Boot0'ı GND'ye bağlaması en kolay üç seçilebilir seçenek vardır, ancak gereksinimlerinizi bilmiyorum, bu yüzden seçmeniz size kalmış.

resim açıklamasını buraya girin


3
VDD pinini bağlamadan "kurtulmak" mümkün olsa da, bir besleme yoktur, daha ziyade hedefin besleme voltajını tespit etmek için oradadır (bir analog girişe nasıl bağlandığını görün). Daha sofistike bir hata ayıklama arayüzü, bu olmadan hatlarını düşük tutabilir ve bunları birden fazla hedef voltajı destekleyen sadece ilgili tedarik seviyesine yükseltebilir. Sıfırlama hattına normalde gerek yoktur (diğer birçok SWD uygulamasından farklı olarak). SWD pimlerini devre dışı bırakan, ancak elle de manipüle edilebilen kötü yüklerden ve yazılımlardan kurtulmanın anahtarıdır.
Chris Stratton

Bir STM32F1xx kartında, BOOT0'ı harici olarak seçilebilir hale getirmenin ana nedeni, fabrika ROM UART (vb) önyükleyicisini kullanma isteği olması olabilir. '103'te bu , ST'nin sonraki parçalarının çoğunda olduğu gibi USB'yi desteklemez. Eğer '103'de bir USB önyükleyici isterse, ana flash bellekte olması gerekir, bu nedenle BOOT0 pini bunun için yararlı değildir.
Chris Stratton

Programın Flash belleğe yazılacağından emin olmak için boot0 ve boot0'ım sıfıra ayarlanmış. Bunun dışında, Windows makinesinde st-link yardımcı programını kullanmayı deneyeceğim. Şu anda Mac OS kullanıyorum, ancak sorunumun işletim sistemiyle ilgili olup olmadığından emin değilim.
baqx0r

Bir STM32F303 programlamak için bir STM32F407 Keşif Kiti'nin ST-Linkini kullandım. (2-5 iğneli) Kit'in SWD konektörünü SWCLK, GND, SWDIO, NRST, SWO'yu (tıpkı Discovery ve Nucleo'da yapıldığı gibi) tahtaya bağladım ve ST-Link Utility ile çalıştı. Boot0 pimi, STM32F303 donanım başvuru kılavuzuna göre 10k direnç üzerinden GND'ye bağlıdır .
Bence Kaulics

6

Her şeyden önce herkese katkılarından dolayı teşekkür ederiz.

İki uykusuz geceden ve mücadeleden sonra sorunu bulabilirdim. Sorun, özel kartımdaki pin bağlantılarındaydı: MCU'mda, Pin 9'un (VDDA) 24-36-48 PIN'leriyle kısa devre ve 23-35-47 PIN'leriyle Pin 8 (VSSA) olduğunu düşündüm, ama öyle değil.

Başka vermek için gerekli 3,3V ve GND için VDDA ve VSSA ve st-link başladı çalışma.

Çözüm Yöntemi : STM32F103'ün bağlantılarını anlamak için Maple Mini şemalarını kullandım. VDD1, VDD2 ve VDD3 ile VDDA ve VSS1, VSS2 ve VSS3 ile VSSA'yı kısa devre yaptıkları ortaya çıktı. Bence bunu VSSA isminden anlamalıydım, çünkü VSS0 veya VSS4 değil.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.