STM32G431RB ve BOOT0 Pin Sorunu

Başlatan e-zeki, 24 Haziran 2020, 15:34:13

e-zeki

Merhabalar.
G4 serisi ile çalışmaya başladım. 2 Nucleo arasında FDCAN tranceiver ile veri alışverişini tamamladım fakat FDCAN1 pinleri ile USB pinleri (PA11-PA12)aynı olduğu için FDCCAN'i alternatif pinlere taşıdım.(PB9 - PB8 - Boot0) Fakat BOOT0 pini işleri karıştırdı. Debug'a girer girmez kod kilitleniyor. herhangi bir şekilde mesaj alışverişi olmuyor. Biraz araştırdıktan sonra BOOT0 pin'ini alternate moda almak için OPTION BYTES da nSWBOOT0 bitini 0 yapmam gerekiyormuş.
- kod içinde denedim olmadı.
- STMCube Programmer ile denedim yine bir değişiklik olmadı.

BOOT0 pinini kullanmam için ne yapmam lazım? Yardımcı olabilecek var mı ?

Tagli

Denemedim ama referans dokümanına şöyle bir baktım. Bölüm 2.6.1'de Tablo 5 var. İlk 3 satırdan birini tutturman gerekiyor anladığım kadarıyla. Option Byte içinde BOOT_LOCK bitini 1 yaparsan sorun çözülecek bence (ilk satır). Diğer iki satır da iş görecektir.

nSWBOOT0 bitini 0 yapmak tek başına yeterli değil. Bu durumda nBOOT0 bitinin de 1 olması gerekiyor (satır 3).

Option Byte'ın fabrika çıkış ayarı nasıl bilmiyorum, ama F serilerindeki BOOT0 pini gibi davranmaya programlı ise, PB8'e 10k pull-down atmayı da deneyebilirsin. FDCAN'i bozar mı bilemeyeceğim. Yine de pek sağlıklı bir çözüm olmayacaktır bence.
Gökçe Tağlıoğlu

e-zeki

Hocam option bytes' ayarlarını değiştirdim 2 tane NUCLEO 32G431RB board kullanıyorum boot0 pinine bağlı 10k direnç jumper ile bağlanıp ayrılabiliyor onu da denedim sonuç yok. Bir şekilde çalışması lazım ama bir türlü çalışmadı  :'(

Tagli

Belki başka bir sorun vardır. Debug haricinde kod çalışıyorsa zaten olması gerektiği gibi flash'tan başlıyor demektir. BOOT pini sadece ilk çalışma sırasında kontrol edilir, ondan sonra işe karışmaması lazım. Ama debug sırasında ne gibi değişiklikler oluyor onu bilmiyorum.
Gökçe Tağlıoğlu

e-zeki

Hocam Led blink attım transmit ve receive rutinleri çalışıyorsa diye debug haricinde de çalışmıyor çok garip bir şeklide. Pinleri PA11/PA12 ye geçirince hiç sıkıntısız çalışıyor. PB9/PB8 e geçirince transmit yok iki tarafta da. tx Fifo full hatası veriyor.

e-zeki

Sonuçları yazayım FDCAN kullanmak isteyen olursa belki faydası olur:

-Öncelikle BOOT0 piniyle herhangi birşey yapacaksanız Option Bytes'dan  nSWBOOT0 bitini 0'a çektiğinizde kod çalışıyor. Çekmezseniz sorunlu çalışıyor.
- Port değişiklikleri garip bir şekilde Bus hızını etkiliyor. (Kablolamadan olabilir. Emin değilim.) A11/12(Orjinal pinler) 7.7 Mbps de gönderim yapabiliyorken B8/9 Pinleri 7.3 Mbps'den fazla gönderemedi.
(sadece jumperların yerini değiştirdim haricen kablolara hiç ellemedim.)
- Önceki mesajlarda bahsettiğim durumlardan ötürü fdcan handler'ınızda error görmüyorsunuz fakat ECR Register'ı hata biriktiriyor, oradan birşeylerin yanlış gittiğini görebilirsiniz.
Yeni şeyler çıkarsa buradan eklerim.

e-zeki

Projeyi sonuçlandırdım. üstteki mesaja ek olarak sonuçları yazıyorum:
- Kablolama sorunlarını giderdikten sonra ECR hata biriktirmeyi bıraktı. Yani derme çatma şeylerle yüksek hızlı haberleşme denemeyin :D
- hat uzunluğu 1.5 metreden itibaren güvenli data hızınız maksimum 5Mbps. Mesafe arttıkça hızınız düşmek zorunda kalacaktır. Klasik CANBUS da 30M ye kadar 1Mbps sorunsuz çalışmakta.
-Option Byte porgramlamak için ST Cube Programmer ya da ST Link Utility programlarını kullanabilrisiniz ikisinde de OB  menüsünde tik'i kaldırarak programlama yapılabiliyor.