Fırat DEVECİ

STM32 USB HID Uygulaması

  • 8 yıl önce, Fırat DEVECİ tarafından yazılmıştır.
  • 17 Yorum
  • Genel

1506893_10152743165473030_724586435ww858661488_nDaha önceki yazımızda ST’nin uygun fiyatlı performans ürünü olan STM32F072 ailesinin üzerinde kullanabileceğimiz, USB sanal seri port uygulamasından bahsetmiştik. Geçmiş yazımızda da bahsettiğimiz üzere, ST’nin yayınlamış olduğu kullanıcı dostu kütüphaneler sayesinde USB üzerinden bir çok cihaz özelliğini (bellek, ses, mause vb.) kullanmamız mümkün hale gelebilmektedir.

Günümüzde herhangi bir cihazı elimize aldığımızda ilk baktığımız haberleşme yöntemi USB olmaktadır; bunun yanında kullanıcılar minimum kurulum ile (hatta bazen kurulum olmaksızın) cihazını bilgisayara tanıtmak ve işlemlerini yürütme isteği içerisindedirler. Bu konuda USB bize “Human Interface Device” (HID) yani “İnsan Arabirim Aygıtı” işlevini sunmaktadır. Bu bölüme girmeden önce HID’in ne olduğu ve asıl ortaya çıktığını anlamak gerekir.

HID Nedir?
HID yani insan arabirim aygıtı işlevi hemen hemen her bilgisayarda kullanılan aygıtlar için tasarlanmış USB standardına verilen isimdir. Günümüzde hemen hemen her bilgisayarda fare/klavye/depolama gibi bir çok cihaz, bu veri yolu standardını kullanarak bilgisayara ile iletişim halinde olurlar. HID’in en büyük avantajı ise diğer USB yazılımları gibi ek bir driver ihtiyacı olmamasıdır.

STM32F072 ve USB HID Uygulaması

USB’yi HID olarak programlamak için ST’nin paylaşmış olduğu kütüphaneyi kullanmak en iyi yol olacaktır. Daha önceki yazımızda bahsettiğim bu kütüphaneyi indirdikten sonra yapılması gereken ilk işlem VID ve PID numaralarının belirlenmesidir. Bunun için “usbd_desc.c” adlı sayfa açıldığında, aşağıda görebileceğiniz bölümü, istediğiniz kod numarası ve tanımına göre değiştirmeniz mümkündür.

Burada bahsetmem gereken en önemli husus, PID ve VID numaralarının, başka firmalar adına kayıtlı olanlarını kullanmanız özellikle ticari projelerde lisans sorunları yaratabilir. Ben burada deneme amaçlı VID ve PID numarası kullanmayı tercih ettim, eğer firmanızın kayıtlı numaraları var ise bu kısımda değişiklik yaparak kullanabilirsiniz. Bilgisayarınıza USB analiz programları indirerek ilgili tanımlamanın aşağıdaki şekilde olduğunu görebilirsiniz.
VID-PIDYaptığım uygulamada, DHT11 sensöründen aldığım verileri USB üzerinden göndererek sıcaklık ve nem bilgileri alınarak; bilgisayar tarafından da STM32F072 Discovery kitinin üzerinde bulunan ledleri kontrol edilmesi sağladım. İlgili uygulamaya ait ekran görüntüsünü aşağıda görebilirsiniz.
STM32F072 HID C# ProgramAyrıca işlemcide bir sayıcı değeri de yine aynı veri ekranına taşındı. İlgili uygulamaya dair videoyu aşağıda seyredebilirsiniz.

Yukarıdaki videoya ait uygulamayı buradan (indirdikten sonra uzantıyı .rar yapınız) indirebilirsiniz. Ayrıca uygulamanın STM32F072 ailesinin özelliklerinden biri olan kristalsiz USB kullanımı içerdiğini de belirtmek isterim.

Sonuç Olarak
ST, sağlamış olduğu USB kütüphanesiyle gerek driver desteği gerek ise HID kullanımındaki kolaylık ile kullanıcılara büyük avantajlar sağlamaktadır. Kütüphanenin sağladığı ek özellikler için kullanım kılavuzunu ayrıntılı şekilde okumanızı öneririm.

Herkese çalışmalarında başarılar dilerim.

  1. Ahmet dedi ki:

    Merhaba
    Paylaşmış olduğunuz kodu derleyip kartıma yükledim ancak driver problemi var gibi görünüyor. Sizin kullandığınız bir driver dosyası var mı?

    Windows 8 kullanıyorum.

    Teşekkürler.

    • Fırat DEVECİ dedi ki:

      Merhabalar Ahmet Bey,

      Herhangi bir driver olmasına gerek yok, HID’in özelliği tak çalıştır olmasıdır. Win7-8-8.1 ve 10’da denendi kodlar.

      İyi günler dilerim.

      • Ahmet dedi ki:

        Tekrar merhaba. Device Manager penceresinde sarı ünlemli bir şekilde “Unknown USB Device (Device Descriptor Request Failed)” Diye bir uyarı veriyor.

        Device Status
        “Windows has stopped this device because it has reported problems. (Code 43)

        A request for the USB device descriptor failed.”

        Bilginiz varsa paylaşabilirseniz sevinirim. Yoksa araştırmaya devam 🙂

        Teşekkürler.

        • Fırat DEVECİ dedi ki:

          Tanımlama hatası vermiş, Windows’un kronik hatalarından biri. İnternette çözümleri mevcut. İsterseniz ST’nin USB HID Demonstration aracını da indirip deneyebilirsiniz.

  2. talha türk dedi ki:

    Merhabalar Fırat bey
    C# arayüzlü bir PIC18fF4550 ile USB haberleşme yapıyorum. Yazdığım C# uygulaması USB portta bir cihaz bağlandığını algılıyor ancak benim işlemcim olduğunu algılayamıyor. Nedeni konusunda bilgi verebilirseniz minnettar olurum.

    İyi çalışmalar

    • Fırat DEVECİ dedi ki:

      Merhaba Talha Bey,

      PID/VID ayarlarınızın doğru olup olmadığını kontrol etmeniz gerekiyor. Benim programımı deneyerek USB’nizin çalışıp çalışmadığını kontrol edebilirsiniz.

  3. Abdullah dedi ki:

    Hocam merhabalar,

    Paylaşım için teşekkürler. Bende ST’nin STM32F103 adlı denetleyicisi var. HID uygulaması yapmak istiyorum ancak takıldığım noktalar var. C# tarafı nasıl olacak acaba biraz ayrıntı verebilir yada örnek kodları paylaşabilir misiniz? ST tarafında da indirdiğim dosyadaki klasörler ile sizin projenizdekiler farklı. İletişim için hangi dosyalar yeterli acaba? Saygılarımla.

    • Fırat DEVECİ dedi ki:

      Merhabalar Abdullah,

      F103 çok klasik hale gelmiş bir entegre. ST’nin sitesinde USB Demo adında bir blgisayar programı var, bu program ile birlikte HID uygulamanı ilerletebilirsin. F103’ün çok detaylı örnekleri mevcut. App. notları okumanı mutlaka tavsiye ederim, orada hangi dosyaların gerekli olduğu yazıyor. F103 için dosyalar birbirine benzer olsa da özellikle USB Core kısımları Cortex M0’dan farklı yazılmış. Buna dikkat etmeni öneririm. Ayrıa verilen örnekler üzerinden gidersen uygulamaya daha hızlı hakim olabilirsin.

  4. Selman Ergunşah dedi ki:

    Hocam elinize sağlık güzel bir uygulama olmuş. Eğer mümkünse arayüzün açık kaynak kodunu paylaşır mısınız? C# da mı yazıldı acaba?

  5. Erkin dedi ki:

    Merhaba

    Arayüz programını yazarken kullandığınız usb kütüphanesini paylaşabilir misiniz?

  6. Yılmaz dedi ki:

    Hocam bu arayüzün oluşturulması hakkında da basit bir video çeker misiniz?

  7. Furkan dedi ki:

    İyi günler Fırat bey şirketimiz için usb butona ihtiyacımız var. Yazınızı okudum elinize sağlık.Burada kodumuzu hangi programla yazacağımız fark eder mi?Cevabınız için şimdiden teşekkürler

  8. gilamada dedi ki:

    Merhabalar uygulamayı indiremiyorum. Sayfa bulunamadı sorunu var. Teşekkürler.

Fırat DEVECİ yazısına yorum yazın

error: Kopyalama Yasaktır, Eğer Bilgi İçeriğini Almak İstiyorsanız İletişim Bölümünden Yazara Ulaşın!