elektrik port üyelik servisleri elektrik port üyelik servisleri

STM32F103C8 ile Standart Peripheral Library Dersleri |
3. Bölüm

Geçtiğimiz derste GPIO birimini nasıl çıkış olarak kullanabileceğimizi öğrenmiştik. Bu yazımızda GPIO birimini nasıl giriş olarak kullanacığımızı, dış dünyadan nasıl dijital okuma yapabileceğimizi öğreneceğiz.



A- A+
25.03.2020 tarihli yazı 6569 kez okunmuştur.

Giriş Modları


GPIO_Mode_IPD


Bu mod girişi pull down direnci ile çalıştırır. Pull down giriş için harici bir direnç eklemenize gerek yoktur. Burada mikrodenetleyicimiz dahili pull down direncini kullanır. Pull down direnci ile girişimiz normalde lojik  0 okuma yapar. Ama butona basarsak veya tetikleme sinyali gelirse lojik 1 okuma gerçekleştirir.


GPIO_Mode_IPU


Bu mod ise pull down modunun tam tersi şekilde çalışır. Dahili pull up direnci ile normalde lojik 1 okuma yaparken butona basılma ile lojik 0 okuma gerçekleştirir.
 

GPIO_Mode_IN_FLOATING
 

Mikrodenetleyicimize ait datasheet üzerinden bu modun bize harici sinyalin devamlı takip edildiğini , herhangi bir sinyal yoksa dahili Schmitt Trigger devresinin pin üzerinde ki gürültüyü dinleyip okuduğu gürültüye göre mantıksal seviye belirlediğini söylüyor. Türkçe çevirisi yüzer giriş olan bu mod da diğer modlardan ziyade sabit bir referans yoktur.
 

Kavraması biraz zor olan bu modumuzu şöyle düşünebiliriz. Diğer iki modda eğer biz tetikleme sinyali vermezsek devamlı ya GND ya da VCC pinimize ulaşır. Ama bu modda pine ulaşan hiç bir şey yoktur. Yani pinin tamamen boşta durduğunu düşünelim. İşte bu durumda mikrodenetleyicimiz harici gürültülere göre bir sinyal seviyesi belirler ve bu seviyenin altını lojik 0 , üstünü iste lojik 1 olarak okur.  Ayrıca bu modun daha fazla enerji tükettiğini unutmamalıyız.

STM32F103 ile Pini Giriş Tanımlama

Öncelikle; birinci dersimiz de anlattığımız ; proje oluştururken eklememiz gereken kütüphanelerin yanında GPIO kütüphanesini de eklemeliyiz ve projemizi oluşturmalıyız. Çıkış tanımlama dersimizde de yaptığımız gibi öncelikle pinimizi tanımlamalıyız.

GPIO_InitTypeDef buton;

Yine daha önce ki dersimizde olduğu gibi hangi kanalı kullandığımızı tanımlamamız gerekiyor. Bu işlemi gerek GPIO birimi olsun, gerek SPI olsun, gerek USART olsun mutlaka yapmamız gerekir. Yoksa o kanal aktif olmamakla beraber o birimi kullanamayız.

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

Hangi pinimizi ,hangi mod ile ve hangi hız ile kullanacağımızı tanımladıktan sonra artık o pinimizi giriş olarak kullanabiliriz.

buton.GPIO_Pin = GPIO_Pin_1; 

buton.GPIO_Speed = GPIO_Speed_2MHz; 

buton.GPIO_Mode = GPIO_Mode_IPD; 

Son olarak GPIO_Init fonksiyonu ile pinimizi kullanmaya hazır hale getirebiliriz.

GPIO_Init(GPIOA,&buton);

Artık seçtiğimiz pin giriş olarak kullanılmak için hazır. Bundan sonra yapmamız gereken o pini nasıl kullanacağımıza karar vermektir. İstersek o pinden bir buton okuması    yapabilir, istersek endüstriyel bir sensörün bize söylemek istediğini okuyabiliriz. Önemli olan bunu mikrodenetleyicimizin izin verdiği gibi yapmakta. Kullandığımız mikrodenetleyicinin  bazı pinlerini maksimum 3.3V   ile okuma yapabilirken bazı pinleri ise 5 V gerilim seviyesine toleranslıdır. Tabiki de hangi pin bizden ne istediğini datasheet ile öğreneceğiz.




Resim 1 : Pin Tablosu

Pin tablosunda Type kısmında pinimizin ne olarak kullanabileceğini görebiliriz. I/O ile belirtilen pinler hem giriş hem çıkış olarak kullanılabilir. I/O Level kısmında ise FT ifadesini gördüğümüz  pinler 5 V toleransa sahiptir. Peki kullandığımız sensörün 5 V değil de 12  V veya 24 V kullandığını varsayarsak bunu nasıl okuyabiliriz? Tabi ki de ilk aklımıza gelen optokuplör ile bunu yapabiliriz.



 
              Resim 2: Örnek Optokuplör Devresi
 
Giriş seviyemizi mikrodenetleyicimizin istediği seviyeye indirdiğimize göre artık pinimizi bir sorgu ifadesiyle okuyabiliriz. Burada “GPIO_ReadInputData” ve “GPIO_ReadInputDataBit”  fonksiyonlarını if sorgusu içinde kullanarak girişimizi izleyebiliriz.  Örnek projemiz de A1 pinini pull up modunda giriş olarak kullanımı gösterilmiştir.

Örnek Proje



st.com
alldatasheet.com



Yazar: Yasin Tekin



 

Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar