USB nasıl çalışır? Enumeration süreci, endpoint'ler ve transfer tipleri nelerdir?

Cevap

USB host merkezli bir protokoldür: tüm iletişimi host başlatır, device sadece host sorduğunda cevap verir. Bir device bağlandığında host onu tanımak için enumeration yapar, sonra uygun class sürücüsünü yükler.

Enumeration adımları

  1. Device bağlanır; D+ (full speed) veya D- (low speed) hattındaki pull-up direncinden host bağlantıyı ve hızı algılar.
  2. Host bus'ı resetler, adres 0 üzerinden GET_DESCRIPTOR (Device) ister.
  3. Host SET_ADDRESS ile device'a benzersiz bir adres verir.
  4. Device, configuration, interface, endpoint ve string descriptor'ları okunur.
  5. SET_CONFIGURATION ile device kullanıma hazır hale gelir; host VID/PID veya class koduna göre sürücü seçer.

Endpoint'ler

  • Endpoint, device tarafında bir veri tamponudur; yönü (IN = device'tan host'a, OUT = host'tan device'a) ve numarası vardır.
  • Endpoint 0 her device'ta zorunludur ve kontrol (setup) istekleri için kullanılır.

Transfer tipleri

TipÖzellikÖrnek
ControlSetup/yapılandırma, garantili teslimEnumeration, vendor komutları
BulkBüyük veri, hata düzeltmeli, bant genişliği garantisi yokUSB bellek (MSC), CDC veri
InterruptKüçük veri, garantili maksimum gecikme (host belirli aralıklarla sorar)Klavye, fare (HID)
IsochronousGarantili bant genişliği, hata durumunda tekrar gönderim yokSes, video

Hızlar

Low Speed 1.5 Mbps, Full Speed 12 Mbps, High Speed 480 Mbps, SuperSpeed 5 Gbps ve üzeri. Çoğu MCU'da dahili PHY ile Full Speed bulunur; High Speed için genellikle harici ULPI PHY gerekir.

Gömülü pratik

  • Full Speed USB, hassas bir 48 MHz saat ister: kristal + PLL ya da clock recovery system (CRS) ile ayarlanan HSI48.
  • Hazır class'lar sürücü yazmayı gereksiz kılar: CDC-ACM (sanal seri port), HID, MSC, DFU.
  • Yaygın stack'ler: TinyUSB, STM32 USB Device Library, Zephyr USB stack.
  • Ticari ürün için kendi VID/PID'niz gerekir (USB-IF'ten satın alınır veya üretici alt-PID programları kullanılır).

Not: "Interrupt transfer" ismi yanıltıcıdır; device host'u kesmez, host belirlenen aralıkla device'ı yoklar (polling).

  1. UART, SPI ve I2C arasındaki farklar nelerdir?OrtaHaberleşme ProtokolleriEmbedded
  2. CAN bus nasıl çalışır? Arbitration, hata yönetimi ve CAN FD farkını açıklayın.ZorHaberleşme ProtokolleriEmbedded
  3. SPI'da CPOL ve CPHA nedir? Dört SPI modu arasındaki fark nasıl açıklanır?OrtaHaberleşme ProtokolleriEmbedded
  4. I2C protokolü nasıl çalışır? Adresleme, ACK/NACK ve clock stretching nedir?OrtaHaberleşme ProtokolleriEmbedded
  5. UART'ta baud rate, frame yapısı ve parity nedir? RS-485 UART'tan nasıl farklıdır?KolayHaberleşme ProtokolleriEmbedded
  6. CRC nedir, checksum'dan farkı nedir? CRC-16 hesaplayan bir C fonksiyonu yazın.OrtaHaberleşme ProtokolleriEmbedded

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle