STM32F103 Bağlantı hatası.

Başlatan Klein, 12 Kasım 2012, 17:54:56

muhittin_kaplan

hocam 2 adet işlemciyi dip adapterlere lehimledim. burada deneyim kazandıktan sonra pcb çizimine girişeceğim.    vdd ve vss leri birleştirdim. gerekli kapasiteleri koydum. vdda ile vssa yı da vdd ile vss lere birleştirdim. 
şimdi reset bat ve boot pinleri var. bat pini pil ile çalışmayı,rset i 3.3 v ye bağlayacağım. (bu bağlantılar tabiki kablo lu jumperlerla yapıyorum.)
peki datasına baktığıma göre boot pini bazı yükleme işlemlerinde kullanılıyormuş, öneriniz üzerine esas devrede jumper lı çizeceğim bu ucu. kullanmadığım durumda ne olmalı ?

Mucit23

Alıntı yapılan: Klein - 20 Kasım 2012, 16:21:15
Eğer analog kanal kullanıyorsam, hiç bir zaman Analog kanalın beslemesini çipin beslemesinden almam. Her zaman referans kullanırım.
Size de önerim referans kullanmanız olur. 
Hocam referans dediğiniz tam olarak nedir. Benimde bu konuda yanlışım olabilir. Sadece bir motor kontrol kartında ve deney serinde böyle yapıldığını görmüştüm. Bu yüzden bende aynısını yapıyordum. En doğrusu nasıl olmalı.

Klein

Referans dediğimiz şey aslında normal linear regülatöre göre doğruluğu ve ısısal kararlılığı daha yüksek  olan regülatör.
Örneğin TL431. 2.5V  %0.25 doğruluğa ve 20ppm ısısal kararlılığa sahip olanları var.  Farklı markaların çok farklı gerilim ve doğruluğa sahip referans çipleri bulunur. 

Analog referans kullanılmasının tek sebebi doğruluk ve ısısal kararlılık değildir.  Kontrolcünün dijital çıkışlarından veya aynı beslemeye bağlı diğer aygıtlar tarafından akım çekilmesi sonucu oluşacak dalgalanmalar, ve parazitler yaratır. Bu da ölçüm sonucumuzu etkiler. 

Örneğin:  Referans gerilimimiz = VCC = 3V3. Çipimizi de aynı yerden besliyoruz.
bir kaynaktan gelen gerilimi ölçüyoruz. O da 1V2 olsun.  ADC çözünürlüğü de 10bit olsun.

1.2V giriş gerilimi için ADC'den alacağımız değer  = (1024/Ref)*in = 1024/3.3*1.2 = 372.3 = 372

Devremizdeki aygıtlardan biri akım çekti ve regülatör çıkışımız 3.28V oldu. Buna göre ADC bize ne verir hesaplayalım
1024/3.28*1.2 = 374.6 =375

Görüldüğü gibi beslemedeki küçük bir oynama çıkışımızda 3 puanlık bir değişime neden oldu.
Buna bir de sıcaklık değişimi vs.. gibi etkileri koyun. Ölçüm değerimiz alır başını gider.

Ancak, Ölçümünü yapacağımız kaynak da bizim referansımıza bağlı ise, o zaman referanstaki düşme, giriş gerilimimizi de oransal olarak etkileyeceği için ölçüm değerimizde bir bozulma olmaz.

Eğer kontrolcnün referans girişi varsa , buraya referans gerilimini verip, analog besleme sizin söylediğiniz gibi VCC'den filtre ile besleme alınabilir.
Ancak STM serilerinin 48 ve daha az pinli olan kontrolcülerinde VREF girişi olmadığı için , referans gerilimini VDD den alır. Bu sebeple analog beslememizin, dolayısıyla referansımızın  beslemedeki dalgalanmalardan etkilenmemesi için ayrı bir REFERANS kaynaktan beslenmesi gerekir.
STM32F1 için VDDA ile VDD arasındaki fark en fazla 300mV olabilmekte.  Eğer çipi 3.3V ile besliyorsak, analog besleme 3V sabit veya ayarlı bir referans regülatörden alınabilir.

Eğer çipin referans pini olsa idi , 2.5V , 2.048V gibi ( çoğu kontrolcü bu değerleri izin verir) bağlanabilirdi.

Mucit23

Ben sürekli Stm32F103VC ve STM32F107VC ile çalışıyorum. Bu işlemciler için çizdiğim bir kartta VDDA ve VREF+ girişlerini birleştirip Bir LC den geçirdikten sonra VCC ye bağladım. VSSA ve VREF- ise GND ye bağlı.

Referans voltajı işini hala anlayamadım. Bu iş için Ayrı bir kaynakmı kullanılmalı?

muhittin_kaplan

hocam kullandığım işlemci lqfp64 ve ref pinleri yok.
Üzerinde çalıştığımız cihaz la alakalı olarak, besleme kaynakları yani analog tarafı başka bir arkadaş tasarlıyor. sabit 3.3 şartı verdim. oda iddalı bir şekilde 3.31 olmaz dedi. kısaca kaynak tan yana sıkıntım olmaz umarım.

şimdi gelelim soruma, stm32vl diskovery kit üzerindeki swd, 4 adet pin ile programlama yapmak istiyorum bunlar vdd,vss, swclk,swdata programakk için hedef işlemcideki pinlerle bağlantı yapmak yeter mi ?
reset i ne yapacağım ?
boot pinini ne yapacağım ?

(bu arada 1 0 yendik güzel maç oldu)

Klein

#50
Alıntı yapılan: muhittin_kaplan - 20 Kasım 2012, 22:00:53
hocam 2 adet işlemciyi dip adapterlere lehimledim. burada deneyim kazandıktan sonra pcb çizimine girişeceğim.    vdd ve vss leri birleştirdim. gerekli kapasiteleri koydum. vdda ile vssa yı da vdd ile vss lere birleştirdim. 
şimdi reset bat ve boot pinleri var. bat pini pil ile çalışmayı,rset i 3.3 v ye bağlayacağım. (bu bağlantılar tabiki kablo lu jumperlerla yapıyorum.)
peki datasına baktığıma göre boot pini bazı yükleme işlemlerinde kullanılıyormuş, öneriniz üzerine esas devrede jumper lı çizeceğim bu ucu. kullanmadığım durumda ne olmalı ?

Eğer bir sebeple swd veya jtag haricindeki bir kaynaktan flash yükleme yapma ihtimalin varsa , BOOT0 pinini Pull-Down yapıp VDD'ye takılıp sökülebilir bir jumper koy. BOOT1 pini için boot opsiyonlarına bir bak. Seri porttan programlamak için GND yapmak gerekiyordu yanlış hatırlamıyorsam. 
Ama bu ihtimal çok düşük diyorsan BOOT0'ı Pull-Down BOOT1'i  PULL-UP yap, jumperi lehimli tip yap, gerektiğinde lehim yaparsın.
Hiç bir şekilde SWD ya da JTAG kullanmm desen, BOOT0'ı gnd yap, BOOT1'i ne yaparsan yap.

SWD pinlerini PULL_UP yap (zorunlu değil ama yapsan iyi olur).
RESET pinini PULL-UP yapıp GND'ye 100n gibi bir kapasite koyabilirsin.

SWD ile programlama için VDD pinine ihtiyaç yok. Eğer devreyi programlarken USB üzerinden besleyeceksen kullan.   

mesaj birleştirme:: 21 Kasım 2012, 00:12:34

Alıntı yapılan: Mucit23 - 20 Kasım 2012, 23:56:39
Ben sürekli Stm32F103VC ve STM32F107VC ile çalışıyorum. Bu işlemciler için çizdiğim bir kartta VDDA ve VREF+ girişlerini birleştirip Bir LC den geçirdikten sonra VCC ye bağladım. VSSA ve VREF- ise GND ye bağlı.

Referans voltajı işini hala anlayamadım. Bu iş için Ayrı bir kaynakmı kullanılmalı?

Eğer yüksek doğruluk gerektiren analog işlemler yapmıyorsan gerek yok.
Ama doğruluk önemli ise, evet ayrı bir kaynak veya  regülatör kullanman gerek. Ama bu regülatör sıradan bir regülatör değil , referans regülatör olmalı.

muhittin_kaplan

Alıntı YapRESET pinini PULL-UP yapıp GND'ye 100n gibi bir kapasite koyabilirsin
Hocam Stliink ile programlama yaparken (ki discovery kit üzerinde) reset pini kullanılmıyor mu ?

uzatmadan yazayım elimdeki DIP adaptör e lehimli işlemciyi (başka birşey yok bu adaptorde, sedece işlemci var)bu discovery kit üzerindeki stlink ile nasıl yüklerim ?

Klein

SWD ile programlarken reset kullanmak şart değil. Ancak SWD Pinleri IO olarak kullanılmış ise, programlamaya başlayabilmek için manuel reset atmak gerekli. Ayrıca hemen resetten sonra pinler io olarak konfigüre edildiği için,  çip reset halinde iken programlamak gerekli.  Eğer manuel reset atmayayım derseniz , ya reset pinini programlama soketine çıkacaksınız, ya da SWD pinlerini IO olarak kullanmayacaksınız.   
Eğer  1 pin fazladan koymak zor olmayacaksa,  reseti dışarı çıkmakta fayda var.
Ancak çip ile programlama soketi arası biraz uzaksa, ben koymazdım. Reset pinini çok fazla uzatmak , gürültüden etkilenebilirliğini artırır.

BOOT0 = GND
SWDIO,SWCLK,GND program soketine şeklinde bir düzenleme yeterli.

X-Fi

Boot pinini gnd ye çekerken 10k ile bağlamanızı öneririm bir nevi filtre edilecek katalog verilerindede bu şekilde bağlanması gösterilmiş Usart bootloader içinse Vdd ye 10 k ile çekilecek. direk bağlantı yapmamak daha iyi.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

muhittin_kaplan

olmuyor. discovery kitlerin st link ini kullanarak elimdeki dip adaptör e lehimli işlemciyi programlayamadım.

Klein

Kitin jumperlerini söktün mü? diye sormuyorum. atlamış olamazsın.
AVDD-AVSS bağlı mı?

muhittin_kaplan

kitin üzerindeki jumperlerı söktüm. Diger Headerları MCU ya taktım. 
Yanlız şemasını incelediğimde ve ölçtüğümde "TARGET_VDD" yazan pin de gerilim görmüyorum. Ben Gerilimide Kitten almaya çalışıyorum. acaba burada mı yanlış yapıyorum.


mesaj birleştirme:: 21 Kasım 2012, 15:37:31

avdd ve avss, vdd ve vss ye bağlı

muhittin_kaplan

Boot Pini Boştayken yükleyebildim. Harici bir kaynaktan besledim Hedef CPU yu.
Boot0 ve Boot1 pinlerinin işlevi nedir ?

Klein

boot0 = 0 ise  flash hafızadan boot edilir.
boot0 =1  Boot1=0 ise  Bootloaderden bootedilir. (USART, USB vs..)
Boot0 =1 Boot1=1 ise Ram hafızadan boot edilir.



muhittin_kaplan

STlink ile program gönderebiliyorum. ama programım çalışmıyor. start adres vs ayarlaması yapmam gerekiyormu derleme esnasında.