Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: cagridinc - 25 Ekim 2014, 23:45:01

Başlık: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: cagridinc - 25 Ekim 2014, 23:45:01
Merhaba,STM32F030 işlemci kullanıyorum.Resetten sonra SWD pinlerini(SWDIO ve SWCLK) I/O olarak kullanmak istiyorum. Datasheetinde resetten sonra I/O olarak kullanabileceğim yazıyor ancak SWDIO sürekli lojik 1, SWCLK lojik 0 da kalıyor.Bu konuyla uğraşan birisi varsa yardımcı olursa memnun olurum.İyi çalışmalar.Kod:

  RCC->AHBENR  |= 0x00020000;   //A  port clock enable
  GPIOA->PUPDR   = 0;            //A port No pull up, no pull down 
  GPIOA->MODER  |= 0x04000000;   //A13 output
  GPIOA->ODR    |= 0x00002000;   //A13 logic 1
  GPIOA->MODER  |= 0x10000000;   //A14 output
  GPIOA->ODR    |= 0x00004000;   //A14 logic 1
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: cagridinc - 26 Ekim 2014, 22:08:08
Buldum arkadaşlar, GPIO->MODER registerini ilgili pinlerini( A13 ve A14) çıkış olarak tanımlamadan önce resetlemek gerekiyormuş.Çok ilgilenen olmadı ama pin sıkıntısı çekip bu pinleri kullanmak zorunda kalanlar için faydası olması dileğiyle, iyi çalışmalar.
Kodun son hali:

  GPIOA->MODER  &= 0xC3FFFFFF;   //A13(SWDIO) ve A14(SWCLK) reset
  GPIOA->MODER  |= 0x14000000;   //A13 ve A14 output
  GPIOA->PUPDR  &= 0x00000000;   //A port No pull up, no pull down 
  GPIOA->ODR    |=   0x00004000;   //A14 logic 1
  GPIOA->ODR    |=   0x00002000;   //A13 logic 1
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: CLR - 27 Ekim 2014, 02:04:27
stm32F103 serisinde I/O'ya çevirdikten sonra swd'den tekrar program atılmıyordu yalnız STM32F030 serisinde de aynı olabilir. Program güncellemek için dahili bootloader'ı kullanmak zorunda kalabilirsin.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: z - 27 Ekim 2014, 07:20:31
Buna 2 şekilde engel olunabilmesi lazım.

1. yöntemde reset rutininin başında mesela yarım saniyelik gecikme konur.

2. Yöntemde SWClk ve SVDIO ya ilave olarak NRST pini kullanılır.

Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: cagridinc - 27 Ekim 2014, 08:36:55
Dediğiniz doğru STM32030 da da aynısı oluyor.Bunların hiçbirine gerek yok.Kullandığınız derleyicinin ST Link ayarlarında RESET ayarlarını "CONNECT DURING RESET" yapmanız yeterli olacaktır.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: z - 27 Ekim 2014, 10:08:14
Sadece Clk ve DIO pinlerini kullanirken de oluyormu?
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: CLR - 27 Ekim 2014, 12:07:16
Evet olur,

Bende j-link v8 var, st-link yok, normalde NRST yapıp connect yapınca gpiolar ayarlanmadan swd kullanılabiliyor olması gerekiyordu ama j-link ayarlarından, normal, NRST seçeneklerini denedim bir türlü tekrar atamamıştım, demek ki nrst'ten işlemci kalkıncaya kadar j-link connect yapamıyor, RESET DURING RESET kesin çalışması gerekir, nedense onu görmemişim ve denememişim.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: cagridinc - 28 Ekim 2014, 08:13:48
Herhangi bir tanesi çıkış olarak tanımlandığında bile bu durum oluyor.MODER çıkış olarak tanımlandığında AF moddan çıktığı için debug yapamıyorsun ve derleyici ST Link ayarları default değerinde(NORMAL) olarak kaldığında tekrar kod atamıyorsun.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: halil82ist - 12 Kasım 2016, 19:16:06
Merhaba ;
anladığım kadarı ile buradaki arkadaşlar discovery boardtan gerçek hayata geçebilmiş arkadaşlar . Bir sorum olacak boot0 pini boş bıraksak çalışırmı yada direk şaseye birleştirsek ? şimdiden teşekkürler .
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: marecrisium - 13 Kasım 2016, 00:44:54
Boş bırakırsan çalışmaz. Datasheette boot modları var. Normal bi çalışma durumu için (flash hafızana başlama) boot0 pinini 10k gibi bi dirençle gndye bağlaman lazım.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: Klein - 13 Kasım 2016, 08:09:57
Boot modunu değiştirmeyeceksen eğer, doğrudan GND'ye bağlayabilirsin.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: serdararikan - 19 Kasım 2016, 15:25:09
gecikme rutinini SystemInit fonksiyonu içerisine mi yazmamız gerekiyor?
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: Zoroaster - 19 Kasım 2016, 15:30:49
Bu gecikme rutinini ilk başlarda koyuyorduk ama eğer programlaycıda NRST pinini de kullanıyorsak gerek yok galiba.

Bu durumu inceleyen oldu mu?

Besleme oturuncaya kadar  init işlemlerine geçmemeyi garantilediği için rutinlerimde hala bu gecikmeyi kullanıyorum.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: serdararikan - 19 Kasım 2016, 15:33:07
Alıntı yapılan: Zoroaster - 19 Kasım 2016, 15:30:49
Bu gecikme rutinini ilk başlarda koyuyorduk

stm32 konusunda yeniyim ilk başlarda derken

SystemInit

fonksiyonunun en başına mı yazmam gerekiyor?
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: Klein - 19 Kasım 2016, 15:40:58
Pin Init rutinlerinin hemen öncesine koyabilirsin.

Alıntı yapılan: Zoroaster - 19 Kasım 2016, 15:30:49
Bu gecikme rutinini ilk başlarda koyuyorduk ama eğer programlaycıda NRST pinini de kullanıyorsak gerek yok galiba.

Bu durumu inceleyen oldu mu?

Besleme oturuncaya kadar  init işlemlerine geçmemeyi garantilediği için rutinlerimde hala bu gecikmeyi kullanıyorum.
Reset pini kullanılıyorsa gerek olmayacaktır. Hiç programlayıcıda reset pini kullanmadım. Fakat SWD pinlerini kullandığım projeklerde elle reset yaparak programlıyorum.  Elle oluyorsa, programayıcı da yapabiliyordur.
Başlık: Ynt: SWD Pinlerini I/O Olarak Kullanmak
Gönderen: halil82ist - 01 Aralık 2016, 14:26:13
ustalara bir sorum olacak ? Stm32f0 serisi için soruyorum ? stm32 işlemcisi için programı yazdım kartı çizdim çalışıyor herhangi bir sıkıntı yok şükür . Ayrıca picten geçecek arkadaşlara tavsiye ederim .

kafamı kurcalayan sorun ise şu çalışan kartta ölçüm yapmak için skope probunun şasesini bağlarken 5 6 seferde bir işlemci programdan çıkıyor ve enerjiyi kesip verene kadar bir daha düzgün çalışmıyor . Skope girişinde izolasyon trafosu var . Pictede ara sıra böyle oluyordu ama pic kendi kendini resetliyor böyle durumlarda .program baştan çalışmaya başlıyor . pek bir sorun yaratmıyor .

Stm32 için piclerdeki gibi pwrt ve boden veya muadili özellikleri nasıl aktif edebilirim ?