STM32 Donanım Tasarım Rehberi (STM32F1)

Yılın başında sitemizde STM32F3 ile giriş seviyesinde çalışmalar yapsak da artık daha popüler ve ucuz olan STM32F1 (STM32F103) serisi üzerinden devam etme kararı aldım. Bunun önemli yanlarından biri de şu an yapacağım projeler için o kadar da gelişmiş analog sistemlere ve işlem gücüne ihtiyacım olmamasıdır. Eğer buna ihtiyaç duyarsam STM32F1 ile F3 serisinin ayak ayağa uyumlu olduğunu bildiğimden devre kartında bir değişiklik yapmadan F3 serisine de geçebilirim. Kısacası bu yıl STM32F103 BluePill geliştirme kartı ile ilerleyebildiğimiz kadar ilerleyeceğiz. Bu sefer daha ileri seviye konuları da ele alacağımı umuyorum.

STM32F1 serisi için bütün mikrodenetleyicilerde olduğu gibi en iyi kaynaklardan biri de datasheet, referans kılavuzunun yanında Application Note adı verilen uygulama notlarıdır. Ben de başlangıçta AN2586 adlı uygulama notunu okudum ve oldukça önemli bilgileri elde ettim. Bunları uygulama notunu tekrar açıp ondan faydalanarak sizlere anlatmak istiyorum. İsteyenler orjinal metinden de takip edebilir.

AN2586 Getting started with STM32F10xxx hardware development

Bir mikrodenetleyici kartı tasarlamak

Pek çok öğrenci Arduino veya benzeri mikrodenetleyici kartlarını kullanarak proje yapmaktadır. Fakat konu bir mikrodenetleyici kartı tasarlamaya gelince gözlerinde çok zor bir işmiş gibi görünmektedir. Hatta kendi mikrodenetleyici kartını yapanlar azınlıkta olmakta ve büyük bir iş gibi görünmektedir. Aslında her öğrencinin bir süre sonra bunu yapabilmesi şarttır. Mikrodenetleyici kartı yapmak veya bir elektronik devreye mikrodenetleyiciyi eklemek hiç zor değildir. Çünkü mikrodenetleyici mimari konularından bildiğiniz üzere belki bir sehpa kadar olan bir devre kartıyla kurulabilecek bir devrenin tek bir çip üzerine sığdırılması ile meydana gelmiştir. Yani pek çok harici devreyi kendi bünyesinde bulundurmakta ve çok çok az devre elemanı ile bir mikrodenetleyici sistemi meydana getirilebilmektedir.

Bazı mikrodenetleyicilerde bu 5 voltluk stabil bir besleme ve birkaç pull-up veya pull-down direnci ile çözülebilmektedir. Yalnız hassas işlemler için oldukça kararlı bir sistem ortaya koymak istiyorsak teknik veri kitapçığında yer alan püf noktalarını gözden kaçırmamamız gerekli. Teknik veri kitapçığında bir mikrodenetleyici sisteminin devresi ve bunun nasıl tasarlanacağı bizlere açıklanmaktadır. En kritik bilgi bunlar olduğu için bunları öğrendikten sonra istediğimiz şekilde kartı çoğu zaman rahatlıkla tasarlayabiliriz. (ESD gibi faktörleri ayrı bir konuda ele alacağız.)

Besleme

Besleme bir mikrodenetleyici sisteminin en önemli dış birimlerinden biridir. Beslemenin doğru olması sistemin kararlı çalışmasının yanında zarar görmemesi için de şarttır. Mikrodenetleyiciler bazı mantık devreleri gibi geniş bir çalışma gerilimi aralığına sahip değildir. Analog ile karşılaştırdığımızda en esnek dijital aygıtlar bile dar bir çalışma gerilimine sahip olsa da mikrodenetleyiciler dijital devreler arasında en dar çalışma gerilimine sahip aygıtlardır. Gerilim düştükçe bu alışma aralığı daha da azalmaktadır. Örneğin 5V mantık seviyesine göre yapılmış AVR mikrodenetleyicilerde çalışma gerilimi 1.8V – 5.5V arasındadır. Çoğu 3.3V mantık seviyesindeki STM32 denetleyicilerde ise 2.0V – 3.6V arasındadır. Bu 3.6 volt gerilimin azami değer olduğunu unutmamanız gerekir. Normal şartlarda 3.3V ile beslemek gerekli. Bunun için AMS1117 entegresi en sık kullanılan regülatörlerin başında gelmektedir. Besleme devresinin tasarımı size kalmış bir konudur. Mikrodenetleyici üreticisi stabil ve yeterli 3.3V beslemeyi verdiğinizi varsayarak uygulama notunu yazmıştır. Örneğin siz AMS1117 üzerinde bir devre kurduğunuz zaman kondansatörleri ihmal etmemelisiniz ve varsayılan devreyi kurmalısınız. Buradaki kondansatörler stabil bir besleme için şarttır.

 

STM32F1xxx serisinin besleme diyagramına baktığımızda AVR, PIC gibi 8-bit mikrodenetleyicilerden biraz daha teferruatlı olduğunu görmekteyiz. Bu gözünüzü korkutmasın çünkü işin aslını öğrendiğinizde gözünüze oldukça basit görünecektir.

Burada bir mikrodenetleyici çipinin içindeki besleme yapısını kabaca görmekteyiz. Öncelikle analog ve dijital kısmın beslemesinin birbirinden ayrıldığını görmeniz gereklidir. Dijital kısım mikrodenetleyicinin temelini oluşturduğundan ana besleme ayaklarının VSS ve VDD ayaklarının olduğunu görebilirsiniz. Bu ayakların adı çoğu mikrodenetleyicide aynıdır. VDD pozitif gerilim, VSS ise şase olarak (GND) geçmektedir. Burada VBAT adında yeni bir ayağın olduğunu ve bunun içerideki bir anahtar vasıtasıyla değiştirildiğini görmekteyiz. VBAT harici batarya anlamı taşımaktadır. Yani ana besleme dışında ikincil bir besleme ile mikrodenetleyiciyi besleyebilir ve kritik verileri bu şekilde koruyabiliriz. Bir saat pili veya BIOS pili gibi düşünmemiz mümkündür. Zaten VBAT beslemesinin bir görevi de gerçek zamanlı saat (RTC) birimine gerekli gücü sağlamaktır. İlginç noktalardan biri de bu mikrodenetleyicinin içinde 1.8V regülatör bulunmasıdır. Biz dışarıdan 2.0V – 3.6V ile bir besleme versek de bu denetleyicinin içinde daha da düşürülmekte ve çekirdek kısmı bu şekilde beslemektedir. Elbette giriş ve çıkış ayaklarından 3.3V alacağınızı unutmayınız. Bu güç tüketimini düşürme adına içeride gerçekleşen bir durumdur.

Analog ve dijital beslemenin birbirinden ayrılması bunları farklı kaynaklardan beslemeniz gerektiği anlamına gelmemektedir. Yalnız ADC gibi analog devrelerde hassas ölçüm yapabilmek için dijital gürültüden mümkün olduğunda korunması gerekecektir. Bu da devre kartı tasarımında yapılacak bazı önlemlerle iyileştirilebilir. VDDA ayağı ADC besleme ayağı ve VSSA ayağı ise ADC şase ayağıdır. Bunun içeride izolasyonlu olduğunu söyleyelim. VREF- ve VREF+ ayakları ise ADC’nin negatif ve pozitif referans gerilimlerini belirlemektedir. Burada önemli gördüğüm bir nokta ise 8-bit denetleyicilerde genelde sadece pozitif referans gerilimi ayarlanabilmektedir. Yani GND ile VREF+ arasındaki değerleri ADC ölçmektedir. Burada ise daha esnek bir özellik eklenmiş ve istediğimiz aralıkta ölçüm yapmamızın önü açılmış. Bunu ADC birimini incelediğimizde bütün ayrıntıları ile göreceğiz.

Besleme ile alakalı yine belli başlı kurallar yer almakta. Bu kuralları şöyle sıralamamız mümkündür.

  • Eğer ADC kullanılacaksa besleme gerilimi 2.4V’dan 3.6V’a kadar olabilir. 
  • Eğer ADC kullanılmayacaksa bu sefer besleme gerilimi 2.0V ve 3.6V arasında olabilir. 
  • VDD ayakları VDD’ye harici decoupling kondansatörü ile bağlanmalı ( Her ayak için 100nF seramik ve bir adet tantalyum ya da seramik 10uF)
  • VBAT ayağı harici bir bataryaya bağlanabilir. 1.8V ile 3.6V arasında olmalı. Eğer harici batarya kullanılmayacaksa VDD ayağına 100nF seramik decoupling kondansatör ile bağlanmalı. 
  • VDDA ayağı iki adet harici 100nF ve 1uF seramik decoupling kondansatörüne bağlanmalı.
  • VREF+ ayağı VDDA harici beslemesine bağlanabilir. Eğer ayrı bir referans gerilimi uygulanacaksa 100nF ve 1uF kondansatörler ayağa bağlanmak zorundadır. Bütün durumlarda VREF+ 2.4V ve VDDA arasında olmalıdır. 

Analog gürültüyü filtrelemek için şu iki yöntem isteğe bağlı kullanılabilir.

  • VDDA VDD’ye ferit boncuk üzerinden bağlanabilir. 
  • VREF+ ayağı VDDA’ya direnç üzerinden bağlanabilir. (47R)

Yukarıda yazanları devre üzerinde şöyle görebiliriz.

Uygulama notunda defalarca “must be” ifadesini gördüğümü söylemeliyim. Bunlar şakaya alınacak konular değil ve devre tasarımında muhakkak dikkat etmemiz gerekir.

Reset

Bir mikrodenetleyici devresi tasarımında “reset” konusunu ihmal etmemek gereklidir. Ben yıllar önce PIC16F628 ile mikrodenetleyicilere başladığımda yaptığım ilk devrede MCLR ayağına pull-up direnci koymadığım için mikrodenetleyiciyi çalıştıramamıştım. O zaman edindiğim tecrübeden dolayı bir mikrodenetleyici devresinde ilk gözüme çarpan her zaman reset devresi olmuştur. Normalde Reset devresinin gürültülerden filtrelenmesi ve doğru mantık seviyesinde durağan halde olması çok önemlidir. Kimse mikrodenetleyicinin parazitlerden dolayı istenmeden resetlenmesi istemez. Mikrodenetleyicilerde reset ayağının durumuna göre de cihaz reset veya çalışma vaziyetine geçmektedir. Eğer reset ayağı sürekli reset durumunda ise mikrodenetleyici bir türlü çalışma vaziyetine geçemez. Bu da istenmeyen bir durumdur. Kısacası biz mikrodenetleyicinin düzgün çalışmasını istiyorsak reset devresini olması gerektiği gibi yapmamız gereklidir. STM32’de harici reset devresini ise aşağıda göreceğiz.

STM32F1 aygıtlarında 2V gerilimde başlayan besleme ve güç kesiminde yürütülen iki ayrı reset bulunmaktadır. Bu reset ayağı ile alakalı olmayıp besleme ile alakalı resettir. Reset ayağı ile alakalı olan reset durumuna harici reset demekteyiz. POR (Power-on-Reset) ve PDR (Power-down-Reset) mikrodenetleyiciye gelen besleme gerilimini kontrol eder ve bu besleme gerilimi 2V üstüne çıktığında açılış reseti meydana gelir. Buradan anlayacağınız kendisine güç verilen ve çalışmaya başlayan aygıt kendini öncelikle resetlemektedir. Aynı şekilde güç kesilmeye başladığında da yine kapanırken kendini resetlemektedir.

Programlanabilir Gerilim Dedektörü (PVD)

Programlanabilir gerilim dedektörü besleme gerilimini gözleyen ve ayarlanmış eşik seviyesine göre mikrodenetleyiciyi resetleyebilen bir birimdir. Bu ayarlama yazmaçlar vasıtasıyla (PWR_CR) yapıldığından yazılım ile bir eşik seviyesi belirleyebiliriz. Besleme gerilimi bu eşik seviyesinin altına düştüğünde veya eşik seviyesinin üstüne çıktığında bazı komutları çalıştırmak için bir kesmeye götürebiliriz. Bu kesme fonksiyonu acil kapatma durumlarında verileri korumak gibi önemli ve hızlı işleri yerine getirebilir.

STM32F1 serisi mikrodenetleyicilerde sistem reseti meydana geldiğinde reset bayrakları ve saat denetimci yazmacı (CRC) haricinde bütün veriler sıfırlanır. Sistem reseti şu olaylardan biri vasıtasıyla gerçekleşebilir.

  • NRST ayağının LOW olmasıyla (Harici reset)
  • WWDG reseti ile
  • IWDG reseti ile (bunlar watchdog)
  • Yazılım reseti (SW reset)
  • Düşük güç idare reseti

Hangi resetin gerçekleştiğini RCC_CSR yani kontrol ve durum yazmacındaki reset bayraklarını okuyarak öğrenebiliriz.

Normalde harici reset devresi önemli olsa da STM32F1 serisinde harici bir reset devresi kurmak şart değildir. Harici reset devresi içeride filtre ve pull-up direncine sahip olduğundan EMS performansını artırmak adına 100nF kondansatör ekleyerek parazitlerin sebep olduğu resetten koruyabiliriz. Yukarıda verdiğimiz genel bilgiyi yine de unutmamanızı tavsiye ederiz. Normalde AVR ve PIC mikrodenetleyicilerde gözlemlediğim bir direnci bağlamamaktan dolayı mikrodenetleyicinin çalışmaması gibi olumsuz bir durumu burada göremiyoruz. Mikrodenetleyicinin avantajları arasında bunu da sayabiliriz. Şimdi reset devresine bakalım.

Burada pek çok reset kaynağı arasında 8-bit mikrodenetleyicilerde yine göremediğimiz yazılım reseti de gözümüzden kaçmadı. Bir mikrodenetleyiciyi yazılımsal olarak resetlemek bizim için büyük bir imkandır. Yine de resetin yüzde yüz gerçekleşmesini garanti altına almak için donanım resetini kullanmak durumundayız.

Saat Devresi

Mikrodenetleyiciler çoğu zaman harici bir saat kaynağına ihtiyaç duyar. Bu da genellikle kristal osilatörler olmaktadır. Bazen RC osilatörle bazen de rezonatör ile saat beslemesini yapsak da yeni mikrodenetleyicilerin hemen hepsinde dahili osilatörler de yer almaktadır. Kristal osilatör yerine kullanacağımız pek çok saat kaynağı bulunsa da hiçbiri kristal osilatörlerin yerini tutmamaktadır. Bunun sebebi kristal osilatörler oldukça doğru ve kararlı çalışabilmektedir. Dahili osilatör olmak üzere diğer osilatörlerin hepsinin en büyük eksilerinden biri doğruluklarının düşük olmasıdır. Zamanlama konusunda önemli olmayan uygulamalar için bu göz ardı edilebilse de zamanlamanın önemli olduğu uygulmalarda muhakkak harici kristal osilatör kullanılmalıdır. Hatta bazı pahalı kristal osilatörler sıcaklıktan etkilenmemek adına kendi içlerinde ısıtıcı ile sabit bir sıcaklıkta çalışmaktadır. Kristal osilatörler de hassaslıklarına göre kendi içerisinde ayrılır.

STM32F1 serisinde sistemi besleyen 3 adet saat kaynağından söz edebiliriz.

  • HSI Osilatör (High-Speed Internal)
  • HSE Osilatör (High-Speed External)
  • PLL Saati

Ayrıca bunun yanında iki adet ikincil saat kaynağı da bulunmaktadır. Bunlar iç birimleri besleyen saatlerdir. Bunlardan biri 40kHz dahili RC osilatör olup watchdog zamanlayıcısını beslemek için kullanılmaktadır. Harici olarak da RTC için 32.768 kHz kristal osilatör bağlama şansımız vardır. Bütün bu saat kaynakları güç tasarrufu için kullanılmadığı zamanlar kapatılabilir.

HSE Saat

HSE yani harici saat kaynağı iki şekilde sağlanabilir. Bunlardan birisi hepimizin bildiği kristal osilatör veya rezonatör devresi ile gerçekleşmekte öteki ise harici bir saat sinyali kaynağının bağlanması ile gerçekleşmektedir. Saat kaynağının nereden geleceği kullanıcıya bırakılmıştır. Şurada iki kaynak için de örnek devreleri görmekteyiz.

Burada alt kısımda yazan yazılara pek dikkat etmesek de önemli bilgiler yer almaktadır. Biz OSC_IN  ve OSC_OUT ayaklarına bir kristal bağlarken bu ayaklar arasındaki kapasitansı da unutmamız gerekir. Bu ayakların mümkün olduğu kadar kısa olması gerektiğini unutmayalım. Devre tasarımında kristal her zaman mikrodenetleyiciye en yakın yerde yer almalıdır. CL1 ve CL2 kondansatörleri için 20-22 pF seramik kondansatör kullanabilirsiniz. Harici saat sinyali ise %50’ye yakın görev döngüsünde sinüs, üçgen veya kare dalga olabilir. F103 serisinde 25MHz’e kadar desteklenmekte. Yine harici kristal ise 4 ile 16MHz arasında olabilir. Kristal değeri bu kadar düşük olsa da PLL ile bu frekansı çarparak F103 serisinde 72MHz’e kadar sistem çalışma frekansı elde edebiliriz. REXT direnci ise kristal karakteristiğine göre değişmektedir. Uygulamada 390R kullanılmıştır.

LSE Saat

Düşük hızlı harici saat sinyali iki farklı kaynaktan elde edilebilir. Bunlardan biri harici kristal osilatör veya seramik rezonatör kullanmak diğeri ise harici saat sinyali uygulamaktır. Osilatör devresi aşağıda görünmektedir.

CL1 ve CL2 kondansatörlerinin azami değeri 15pF’dir. Burada devredeki yolları da hesap etmek gerekir. REXT direncinin tipik değeri ise 5-6R’dır. Sıfır ohm direnç de iş görür. Harici kristal takmak istediğimizde 32.768 kHz osilatör takarız. Eğer harici saat kaynağından besleyeceksek 1MHz’e kadar çıkabilir.

Saat Güvenlik Sistemi (CSS)

Saat güvenlik sistemi yazılım tarafından etkinleştirilir. Bu güvenlik sisteminde saat sinyali kontrol edilir ve buna göre çeşitli önlemler alınır. Harici saat sinyalini denetleyen saat algılayıcısı harici saat kullanımı sırasında saat sinyalinin sağlamlığını denetler.

Eğer saat sinyalinde bir sıkıntı yaşanırsa osilatör otomatik olarak devre dışı bırakılır. Osilatörün bozulduğu mikrodenetleyiciye bildirildikten sonra mikrodenetleyici dahili osilatöre geçerek programı sağlıklı bir şekilde yürütmeye devam edebilir.

Boot Ayarları

STM32F1 serisinde üç farklı boot (açılış) modu bulunmakta ve bunlar da donanım üzerinde BOOT[1:0]ayakları vasıtasıyla ayarlanabilmektedir. Pek çok kart üzerinde bu yüzden iki adem jumper olduğunu görürsünüz. Şimdi açılış modlarına bir bakalım.

BOOT1 Ayağı BOOT0 Ayağı Boot Modu Açıklama
x 0 Ana Flash Hafıza Boot alanı olarak ana flash hafıza seçilir.
1 Sistem Hafızası Boot alanı olarak sistem hafızası seçilir
1 1 Gömülü SRAM Boot alanı olarak gömülü SRAM seçilir.

BOOT ayaklarının değeri SYSCLK sinyalinin 4. yükselen kenarında okunmaktadır. Bu yüzden başlama esnasında BOOT ayakları değiştirilse de çalışma esnasında değişikliğe uğraşaması bir değişiklik ortaya koymaz. BOOT alanlarının bu kadar farklı olması programın farklı konumlardan okunması yönünde bir esneklik bize vermektedir. Bildiğiniz üzere normalde mikrodenetleyicilerde bir program hafızası olur ve bu hafıza bir defa programlanır ve her açılışta baştan itibaren programı çalıştırmaya devam eder. Burada RAM bellek üzerine bile program yüklemek mümkün ve bu programı aynı program hafızasında olduğu gibi çalıştırabiliyoruz. Gelişen teknoloji ile mikrodenetleyicilerin kısıtlamaları birer birer kalkmaktadır.

Boot ayaklarının devreye nasıl bağlandığına bir bakalım. STM32F1 ailesinin her ferdinde çip üzerinde BOOT0 ve BOOT1 ayakları bulunmaktadır.

Görüldüğü gibi pull-up ve pull-down’u bir anahtar vasıtasıyla ayarlamaktayız. Benim boot ile işim olmaz normal program atıp kullanacağım deseniz bile BOOT0 ayağını 0’a çekmeniz lazımdır.

Boot konusuna gelmişken bootloader yani ön yükleyiciden de biraz bahsedelim. Normalde biz 8-bit mikrodenetleyicilerde de ön yükleyiciyi kullanabilsek de STM32 serisinde ön yükleyiciler fabrika çıkışlı olarak bize gelmektedir. Yani fabrikada her çipe ön yükleyici yüklenmiş ve çipler doğrudan seri port vasıtasıyla programlanabilir haldedir. Ön yükleyiciler aygıtın hangi alt grupta olduğuna göre değişmektedir. Genelde her mikrodenetleyici ailesinde ucuz seri, performans serisi, yüksek seri ve bağlantı serisi olmak üzere özelliklerin arttığı veya azaldığı seriler vardır. Bunları başka bir yazıda ayrıntısıyla açıklayacağım. Genel olarak USART1, USART2, CAN, USB üzerinden ön yükleyici vasıtasıyla denetleyiciye program atılabilmektedir.

Hata Ayıklama

Hata ayıklama bir mikrodenetleyicinin olmazsa olmaz özelliklerinden biridir. STM32F1 serisinde ise donanımsal olarak hata ayıklama birimi Cortex-M3 çekirdeğinin üzerinde bulunmaktadır. Böylelikle bir yerde durdurup işlemcinin yazmaçlarının içeriklerini gözleyebilir veya breakpoint (durma noktası) belirleyip herhangi bir yerde donanımsal olarak işlemciyi durdurup inceleyebiliriz. Bu noktada bizim hata ayıklayıcı (debugger) cihazına ihtiyacımız vardır. Bazen bir mikrodenetleyicinin hata ayıklayıcı cihazı 200-300 dolar fiyatı bile bulabilmektedir. Fakat STM32 mikrodenetleyiciler için ST-LINK/2 hata ayıklayıcısını iki üç dolara bulmamız mümkündür. Ayrıca bütün STM32 geliştirme kartları beraberinde programlayıcı ve hata ayıklayıcı ile gelmektedir.

Hata ayıklayıcının bağlanma noktasında ise iki ayrı yöntem gözümüze çarpar. Biri JTAG konnektörü ile bağlanma diğeri ise SW ayakları vasıtasıyla bağlanmadır. Mikrodenetleyicinin hata ayıklama modunu seçerken bu ikisinden birini belirtmemiz gereklidir. SW konnektörü ile sadece iki ayak üzerinden mikrodenetleyiciye program atabilir ve hata ayıklayabiliriz. JTAG bağlantısını çoğu kişi yapmayacağı için burayı geçiyorum.

Tavsiyeler

Bu tavsiyeler uygulama notunun sonunda yer almakta ve mikrodenetleyici kartı tasarlarken bize önemli bilgileri vermektedir. Devre kartı tasarlarken çift taraflı ve bir tarafı şase bir tarafı da beslemeye ayırdığımız bir devre kartı tasarlamak en iyisidir. Bu bir decouple ve ekranlama etkisi verecektir. Devre kartında gürültü ve parazit üreten elemanları diğer elemanlardan ayrı bir bölüme yerleştirmek de önemlidir. Bütün bölümler ayrı olarak topraklanmalı ve loop yapmaktan kaçınılmalıdır. Bütün besleme ve şase ayakları besleme kaynağına uygun şekilde bağlanmalıdır. Bağlantılar, pedler, yollar ve diğer yerler mümkün olduğu kadar az empedansa sahip olmalıdır. Bunun yanında bütün besleme çiftleri 100nF kondansatörle filtrelenmeli ve bir adet 10uF kondansatör denetleyiciye paralel olarak takılmalıdır. Şurada VDD ve VSS çiftinin kart üzerinde nasıl olması gerektiği gösterilmiştir.

Referans Tasarım

Yazının sonunda ise örnek bir devreyi inceleyeceğiz ve bunun için gereken malzemelerden bahsedeceğiz. Burada gerekli ve isteğe bağlı parçaları birbirinden ayırmamız gerekir. Her ne kadar kullanılmasının gerekli olduğunu söylesek de bir mikrodenetleyici bunlar olmadan da çalışabilir. Aşağıdaki listede yatık olarak işaretlediklerim kullanılması zorunlu parçalardır.

  • STM32F103 Denetleyici
  • 11 adet 100nF kondansatör (decoupling)
  • 10uF kondansatör (decoupling)
  • 5 adet 10k direnç (JTAG ve BOOT için Pull-up ve Pull-down)
  • 1 adet 390R direnç (Kristal için)
  • 1 adet 0 Ohm direnç (Alçak frekanslı osilatör için)
  • 3 adet 100nF seramik kondansatör
  • 2 adet 1uF kondansatör (VDDA ve VREF için)
  • 2 adet 10pF kondansatör (Alçak frekanslı osilatör için)
  • 2 adet 20pF kondansatör (Yüksek frekanslı osilatör için)
  • 8 MHz kristal osilatör (HSE)
  • 32kHz kristal osilatör (LSE)
  • JTAG Konnektörü
  • 3.3V Pil 
  • 2 adet anahtar veya jumper (boot modu seçmek için)
  • Düğme 

Burada oldukça fazla elemanın olduğunu görseniz de aslında yukarıda saydığımız ilk üç elemanla da devrenizi kurabilirsiniz. Biz düzgün ve tam teşekküllü bir sistem kurmak istersek bütün bu elemanları kullanmak zorundayız. Şimdi devre şeması üzerinden bazı noktaları inceleyelim ve yorumlayalım.

Burada pil kısmında bir jumper anahtar görmekteyiz. Bu sayede devre üzerinde pil etkinleştirilir veya devre dışı bırakılabilir. VDDA ve VREF+ ayakları ise 100nF ve 1uF filtre kondansatörü ile beslemeye bağlanmaktadır.

Burada ise kritik devrelerin yer aldığı kısmı görmekteyiz. Reset devresi içinde pull-up olduğu için bir düğme ile bunu şaseye bağlamak yeterli olmaktadır. Yine parazitlerden korunma adına 100nF kondansatör koyulmuştur. LSE ve HSE için farklı değerde kondansatörlerin kullanıldığına dikkat edelim. Bundan başka JTAG bağlantısı ve decoupling kondansatörleri yer almaktadır. Bütün ayrıntıları yukarıda yazdığımız için bunu okuyan herkes devre şemasına baktığında neyin ne için kullanıldığını gayet iyi anlayacaktır.

STM32F1 donanım tasarımı hakkında anlatacaklarımız bu kadardı. Yazının başında bahsettiğimiz uygulama notunda örnek devreyi bulabilir ve kendi devre kartınızı tasarlayabilirsiniz. Örnek devre olsa da mükemmel devre olmadığını ve bir de bunun PCB tarafı olduğunu aklınızdan çıkarmayın.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.