Arm mcu program atmada sıkıntı yaşıyorum

Başlatan sessiz_roman, 28 Mayıs 2019, 22:52:36

sessiz_roman

Arkadaslar stm32f030f4p6 islemcisi ike bir proje yaptim ve kartını yurtdışında bastırdım ancak şöyle bkr sorunum var.
Mcu ya stlink v2 uzerinden program atarken kullanacagim bacaklari proje icinde kullanmisim. Yani program yuklemek icin kullnailacak bacaklar olan swdio ve svclk bacaklari benim projemde led yakmak icin kullanildi ve devre kartida o şekilde basildi.

Simdi ben bu mcu ya yine bu bacaklar uzerindn program atabilir miyim. Bunun bir yolu var mıdır. Program yukleme işi bittiginde mcu yu kartima takinca o bacaklar led icin kullanilabilir mi.

Mantiken kullanilabilir diye düşünüyorum çünkü cubemx de bu bacaklar istenirse gpio in out olarak ayarlanabiliyor ki kullanilmasaydi bu bacaklari cubemx in gpio icin kullandirmamasi gerekiyordu.

Stm32f030f4p6 serisi bir mcu ya ilk defa program atacagim ve iki gundur kaynak ariyorum ancak hic bir şey bulamadim. Desteklerinizi bekliyorum.
Yardimlariniz icin tesekkurler.

Bu arada ide olarak atollic kullaniyorum.

abstruse

Evet kullanabilirsin ama donanım olarak bunu hesaba katarak tasarım yapmalısın. Programlama esnasında bu adı geçen pinlerde clock ve data sinyalleri var. Diyelim ki sen bu 2 bacağa doğrudan başka bir entegrenin çıkışını bağladın ve oda enerji verildiği andan itibaren sana sürekli data gönderiyor bu esnada stlink ilgili bacaklara bağlandı ve program atmaya çalıştın o zaman stlink istediği verileri işlemciye iletemeyecektir çünkü diğer bağladığın entegre hattı bozacak. Ama sen led bağladım diyorsun tam olarak nasıl bağladığını gösterirsen herkes yardımcı olabilir.

cripple

MCU çalışırken debug yapabilmek ve herhangi bir anda yeni program atabilmek için o pinleri cubemx te bulunan SYS başlığı altında Debug sekmesinde Serial Wire seçmeniz gerekirdi.
Ancak MCU yu boot moduna alıp yeni program yükleyebilirsiniz. MCU yu boot moduna almak için BOOT 0 pinine 3.3v uygulayıp MCU yu resetlemelisiniz. Yükleme işlemi bittiğinde tekrardan BOOT0 pinini gnd ye bağlarsanız yeni yüklenen program ile normal çalışmasına dönecektir. Bknz. STM32F030 boot modes

sessiz_roman

Alıntı yapılan: abstruse - 29 Mayıs 2019, 08:56:56Evet kullanabilirsin ama donanım olarak bunu hesaba katarak tasarım yapmalısın. Programlama esnasında bu adı geçen pinlerde clock ve data sinyalleri var. Diyelim ki sen bu 2 bacağa doğrudan başka bir entegrenin çıkışını bağladın ve oda enerji verildiği andan itibaren sana sürekli data gönderiyor bu esnada stlink ilgili bacaklara bağlandı ve program atmaya çalıştın o zaman stlink istediği verileri işlemciye iletemeyecektir çünkü diğer bağladığın entegre hattı bozacak. Ama sen led bağladım diyorsun tam olarak nasıl bağladığını gösterirsen herkes yardımcı olabilir.
arkadasim cevabin icin teşekkürler. Peki şöyle bir yontem uygulasam olur mu. Yazilim olarak o bacaklari 10 saniye ilk acilis esnasinda lojik 0 a ceksem çözüm olur mu. Boylece program atarken o bacaklardan veri akisi olmayacak ve senin dedigin gibi iletisim sorunu yasanmaz.

Led bagladim derken sunu kastediyorum o bakacaklar 2 digit dispalyde bagli yani sistem bu sekilde. Semasini aksam atabilirim su an iste oldugum icin

sessiz_roman

Alıntı yapılan: cripple - 29 Mayıs 2019, 09:01:42MCU çalışırken debug yapabilmek ve herhangi bir anda yeni program atabilmek için o pinleri cubemx te bulunan SYS başlığı altında Debug sekmesinde Serial Wire seçmeniz gerekirdi.
Ancak MCU yu boot moduna alıp yeni program yükleyebilirsiniz. MCU yu boot moduna almak için BOOT 0 pinine 3.3v uygulayıp MCU yu resetlemelisiniz. Yükleme işlemi bittiğinde tekrardan BOOT0 pinini gnd ye bağlarsanız yeni yüklenen program ile normal çalışmasına dönecektir. Bknz. STM32F030 boot modes
hocam eger cubemx de o baacklari serial wire olarak ayarlarsam o bacaklari cikis olarak ayarlayamiyorum ve led yakma isleminde kullanamiyorum.
Simdi ben cubemx de o iki bacagi serial wire olarak ayarlamasam yine de o bacaklardan program atabilir miyim stlink v2 aparati ile.

Tagli

Mantıken ayarlanabilmesi lazım. Çünkü o bacakların reset anındaki görevi zaten SWD'dir. I/O görevi sonradan programlanır. Ancak programın hemen çalışmaya başlaması ve pinleri I/O yapması program atarken sorun yaratabilir. Bu durumda sanırım ST-Link'in reset bacağını da kullanmak gerekir. Elbette bu şekilde kullanıldığı IDE'de de belirtilmeli.
Gökçe Tağlıoğlu

sessiz_roman

Alıntı yapılan: Tagli - 29 Mayıs 2019, 12:33:11Mantıken ayarlanabilmesi lazım. Çünkü o bacakların reset anındaki görevi zaten SWD'dir. I/O görevi sonradan programlanır. Ancak programın hemen çalışmaya başlaması ve pinleri I/O yapması program atarken sorun yaratabilir. Bu durumda sanırım ST-Link'in reset bacağını da kullanmak gerekir. Elbette bu şekilde kullanıldığı IDE'de de belirtilmeli.
Sanirim dediginizi anladim hocam yani diyorsunuz ki ide de o bacaklari ledler icin cikis verecegim ve yazilimsal olarakda o bacaklari program calistigi anda 10sn lojik 0 a cekecem ki cakisma olmasin. Dogru mu anlamisim hocam.

Tagli

Hayır, bacakların programlama sırasında rahat çalışmaları için I/O olarak ayarlanmamaları gerekir. Cube/HAL'ı bilmiyorum, hiç kullanmadım. Ama tahminimce programın başında GPIO init fonksiyonu çağrıldığı anda bunlar senin CubeMX'te ayarladığın şekilde I/O bacağı oluyor. Bundan sonra bu bacakları ister 0 yap ister 1 yap, SWD tarafından kullanılamazlar ve program atamazsın. Belki Cube'un ürettiği kodda GPIO init fonksiyonunun çağrılmasını geciktirebilirsin ve bu sırada kod atabilirsin. Ama bence bu şekilde kullanmak sağlıklı değil. En doğrusu önceki mesajımda da dediğim gibi programlayıcının donanımsal reset pinini kullanmak.
Gökçe Tağlıoğlu

kimlenbu

çalışma anında o bacakları gpio olarak kullanmak için zaten remap yapmak zorundasın. eğer cihaz çalışmasını engelleyemeyecekse gpio ayarlarını yapmadan önce bir kaç saniyelik bir delay koy, bu esnada cihaza enerji verip direkt programlarsın.

sessiz_roman

Arkadaslar oncelikle dediginiz yollari deneyecegim en olmadi jumper vasitasi ile devre kartinin uzerinde baglanti bacaklarini degistirecegim ve o iki led bagli pinleri bostaki iki bacakla degistirecegim boylelikle baglanti pinleri boşta kalacak.

Tagli

Boşta pinin varsa zaten SWD bacaklarını debug için ayırmak en doğrusu. Son çare olmadıkça o bacaklara SWD dışında bir görev verme.
Gökçe Tağlıoğlu

sessiz_roman

Arkadaşlar ilgili bacaklari bos birakarak bir yukleme yaptim ve karti st link v2 ile programladim.
Boşta olan bir bacak ile sadece ledi acip kapatan bir program yuklemistim ve calisti.
Sonra dedim ki cubemx de ilgili swd bacaklarını bos birakayim ve ledi swd bacaginin bulundugu pinlerle yakayim.
Ilgili kodlari girdim proframi yukledim ve led bir kac kere yandi ve sonra yanmadi.
Tekrar kod yüklemeye calistifigimda stlink not detected diye uyari verdi.
Ben bu uyariyi daha once nucleo kart ile calisirken de cok aliyordum. Sonra nucleo karti da takip deneme yaptim ayni stlink not detected hatasini aldim. Yani bilgisayarim ayni donanim hatasini verdi.
Cikardigim sonuçlar ;
Cube mx de serial wire de ilgili bacaklari swd olarak ayarlamasak bile program atilabiliyor.
Yarin stlink problemini cozul tekrar deneyip sonuclari yazacagim.
Ilgilk arkadaslara ilgilerinden dolayi teşekkür ederim.