USB'nin, USB 2.0 Spesifikasyonu'nda açıklanan çeşitli katmanları vardır . OSI katmanlı ağ modelini biliyorsanız, bunu şöyle düşünebilirsiniz:
- Oturum katmanı = Bölüm 10 USB Ana Bilgisayar Donanım ve Yazılımı (aygıt sürücüleri)
- Aktarım katmanı = Bölüm 9 USB Aygıt Çerçevesi
- Ağ katmanı = Bölüm 8 Protokol Katmanı (bit akımı)
- Veri Bağlantı katmanı = Bölüm 7 Elektrik (devre)
- Fiziksel katman = Bölüm 6 Mekanik (kablo ve konektör)
Kavramsal olarak USB, IN (ana bilgisayara) veya OUT (ana bilgisayardan) olabilen Endpoints adı verilen veri akışlarına dayanır . Her cihaz, kontrol ve durum için kullanılan Bitiş Noktası 0'a sahiptir. Bir cihazın uygulama verileri için ek uç noktaları olabilir. Her uç nokta bir FIFO tamponu gibi davranır.
Veriler bir uç noktaya Toplu olarak aktarılır (TCP / IP gibi, her baytın geldiği ve doğru sırada olduğu gibi) veya Eşzamanlı (UDP / IP gibi, taze olduğu garanti edilir ancak paketleri düşürebilir) olarak aktarılır. Ana bilgisayar tarafından gerçekten sorgulanan yanıltıcı olarak adlandırılan " Kesme " aktarım türü var.
USB 2.0 veri bağlantısı için bir diferansiyel çifti kullanır. Bu, USB 2.0 spec bölüm 7 kapsamında olduğu için fazla ayrıntıya girmeyeceğim. Genel olarak PCB düzeninde, bunu eşleşen uzunluk, diferansiyel çifti olarak ele alıyoruz ve USB PHY (Fiziksel ne olursa olsun gerekli seri dirençleri koyuyoruz) Interface) kullanılıyor. USB çevre birimi, ana bilgisayara yüksek hızlı veya düşük hızlı bir çevre birimi olduğunu bildirmek için D + veya D hatlarından birinde yüksek değerli bir direnç kullanır.
USB ana bilgisayarı bir aygıtın varlığını keşfettikten kısa bir süre sonra, ana bilgisayar aygıttan bir grup tanımlayıcı ister . Bu, FTDI çipi tarafından perde arkasında halledilir. Tanımlar Bölüm 9.5'te açıklanmaktadır . Bunlar Cihaz Tanımlayıcı , Yapılandırma Tanımlayıcı , Arayüz Tanımlayıcılar , Uç Nokta Tanımlayıcılar , Dize Tanımlayıcıları içerir , hatta HID Rapor Tanımlayıcıları'nı içerir .
Cihaz Tanımlayıcı USB içeren VID (Vendor Identification) ve PID (Ürün Belirleme) sayılar. İşletim sistemi, bu aygıt için hangi aygıt sürücüsünün kullanılacağını belirlemek için bu sayı çiftini (VID_PID) kullanır. VID numarasının USB uygulayıcıları forumuna üye olarak verildiğini unutmayın, bu nedenle bireysel bir mucitseniz bu bir sorun olabilir.
Ek olarak, klavye / fare / vb. İçin bir miktar genel giriş ve ayrıca herhangi bir genel giriş / çıkış sağlayan HID (İnsan Arabirim Aygıtı) sınıf sürücüsü vardır. HID'in bir avantajı, özel bir aygıt sürücüsü sağlamayı gerektirmemesidir, ancak verimi özel bir toplu sürücüye kıyasla biraz sınırlıdır. HID tanımlayıcıları hakkında başka bir spesifikasyon belgesi daha vardır ; ve belirli bir insan arayüzlü cihazda bulunan çeşitli özellikleri tanımlayan tüm kod numaralarını detaylandıran bir HID Kullanım Tablosu belgesi .
FT220X veri sayfası gibi FTDI yongası USB "seri arayüz motoru" sağlar (SPI seri veya RS232 seri ile karıştırılmamalıdır). Bu, bölüm 6, 7 ve 8'de açıklanan düşük seviyeli şeylerin çoğunu halleder.
FTDI, tanımlayıcılara giren bilgileri biraz içermek için bir EEPROM (FT2232H'de offchip, FT220X üzerinde çip üzerinde) kullanır. VID / PID değerlerini özelleştirebilir ve özel açıklama dizeleri sağlayabilirsiniz.