USB interfeysinin əsasları. STM32 USB FS nümunələrində Universal Serial Bus USB ötürmə rejimləri

18.03.2024

2008-ci ilin sonunda. Gözlədiyiniz kimi, yeni standart ötürmə qabiliyyətini artırdı, baxmayaraq ki, artım USB 1.1-dən USB 2.0-a keçərkən sürətin 40x artması qədər əhəmiyyətli deyil. Hər halda, ötürmə qabiliyyətinin 10 dəfə artması xoşdur. USB 3.0 dəstəkləyir maksimum ötürmə sürəti 5 Gbit/s.Ötürmə qabiliyyəti müasir Serial ATA standartından demək olar ki, iki dəfə yüksəkdir (ehtiyatsız məlumatların ötürülməsi nəzərə alınmaqla 3 Gbit/s).

USB 3.0 loqosu

Hər bir həvəskar təsdiq edəcək ki, USB 2.0 interfeysi müasir kompüterlərin və noutbukların əsas darboğazıdır, çünki onun pik “xalis” ötürmə qabiliyyəti 30 ilə 35 MB/s arasında dəyişir. Lakin masaüstü kompüterlər üçün müasir 3,5 düymlük sərt disklər artıq 100 MB/s-dən çox ötürmə sürətinə malikdir (noutbuklar üçün 2,5 düymlük modellər də bu səviyyəyə yaxınlaşır). Yüksək sürətli bərk vəziyyətdə olan disklər 200 MB/s həddini uğurla keçiblər. 5 Gbit/s (və ya 5120 Mbit/s) isə 640 MB/s-ə uyğundur.

Biz sabit disklərin yaxın gələcəkdə 600 MB/s-ə yaxınlaşacağını düşünmürük, lakin növbəti nəsil SSD-lər bir neçə il ərzində bu rəqəmi keçə bilər. Məlumatın miqdarı artdıqca və onların ehtiyat nüsxəsini çıxarmaq üçün lazım olan vaxt müvafiq olaraq artdıqca ötürmə qabiliyyətinin artırılması getdikcə daha vacib olur. Yaddaş nə qədər sürətli işləyirsə, ehtiyat nüsxələmə vaxtı bir o qədər qısa olar, ehtiyat cədvəlində “pəncərələr” yaratmaq bir o qədər asan olar.

USB 1.0 – 3.0 sürət müqayisə cədvəli

Rəqəmsal videokameralar bu gün gigabaytlarla video məlumatı yaza və saxlaya bilir. HD video kameraların payı artır və böyük həcmdə məlumatların yazılması üçün daha böyük və daha sürətli yaddaş tələb olunur. Əgər siz USB 2.0 istifadə edirsinizsə, onda redaktə üçün bir neçə onlarla gigabayt video məlumatın kompüterə ötürülməsi xeyli vaxt tələb edəcəkdir. USB Tətbiqçiləri Forumu hesab edir ki, bant genişliyi prinsipial olaraq vacib olaraq qalacaq və USB 3.0 növbəti beş il ərzində bütün istehlakçı cihazları üçün kifayət edəcəkdir.

8/10 bit kodlaşdırma

Etibarlı məlumat ötürülməsini təmin etmək USB 3.0 interfeysi məsələn, Serial ATA-dan bizə tanış olan 8/10 bit kodlaşdırmadan istifadə edir. Bir bayt (8 bit) 10 bitlik kodlaşdırmadan istifadə etməklə ötürülür ki, bu da ötürmə qabiliyyəti hesabına ötürmə etibarlılığını artırır. Buna görə də bitlərdən bayta keçid 8:1 əvəzinə 10:1 nisbəti ilə həyata keçirilir.

USB 1.x – 3.0 bant genişliyi və rəqiblərin müqayisəsi

Enerjiyə qənaət rejimləri

Şübhəsiz ki, əsas məqsəd interfeys USB 3.0 mövcud bant genişliyini artırmaqdır, lakin, yeni standart effektiv enerji istehlakını optimallaşdırır. USB 2.0 interfeysi daim enerji sərf edən cihazın mövcudluğunu yoxlayır. Bunun əksinə olaraq, USB 3.0 U0-U3 adlı dörd əlaqə vəziyyətinə malikdir. Bağlantı vəziyyəti U0 aktiv məlumat ötürülməsinə uyğundur və U3 cihazı “yuxuya” qoyur.

Bağlantı boşdursa, U1 vəziyyətində məlumatların qəbulu və ötürülməsi qabiliyyəti qeyri-aktiv olacaq. Dövlət U2 daxili saatı söndürməklə bir addım irəli gedir. Müvafiq olaraq, qoşulmuş qurğular məlumat ötürülməsi tamamlandıqdan dərhal sonra U1 vəziyyətinə keçə bilər ki, bu da USB 2.0 ilə müqayisədə əhəmiyyətli enerji istehlakı üstünlükləri təmin edəcəyi gözlənilir.

Daha yüksək cərəyan

Müxtəlif enerji istehlakı vəziyyətlərinə əlavə olaraq, standart USB 3.0 fərqlidir USB 2.0-dan və daha yüksək dəstəklənən cərəyan. Əgər USB 2.0 cari həddi 500 mA təmin edirdisə, yeni standart vəziyyətində məhdudiyyət 900 mA-a dəyişdirildi. Bağlantının başlanğıc cərəyanı USB 2.0 üçün 100 mA-dan USB 3.0 üçün 150 mA-a qədər artırıldı. Hər iki parametr adətən bir qədər yüksək cərəyan tələb edən portativ sabit disklər üçün olduqca vacibdir. Əvvəllər problem, USB 2.0 spesifikasiyalarını pozsa da, əlavə USB fişindən istifadə etməklə, iki portdan enerji çəkməklə, lakin məlumat ötürülməsi üçün yalnız birini istifadə etməklə həll edilə bilərdi.

Yeni kabellər, birləşdiricilər, rəng kodlaması

USB 3.0 standartı USB 2.0 ilə geriyə uyğundur, yəni tıxaclar adi A Tipi prizlərlə eyni görünür, USB 2.0 pinləri eyni yerdə qalır, lakin indi konnektorun dərinliyində yerləşən beş yeni sancaq var. Bu o deməkdir ki, əlavə sancaqlar tələb edən USB 3.0-ın işləməsini təmin etmək üçün USB 3.0 fişini tamamilə USB 3.0 portuna daxil etməlisiniz. Əks halda USB 2.0 sürətini əldə edəcəksiniz. USB Tətbiqçilər Forumu istehsalçılara konnektorun daxili hissəsində Pantone 300C rəng kodlamasından istifadə etməyi tövsiyə edir.

Fərqlər vizual olaraq daha nəzərə çarpsa da, vəziyyət USB tipli B fiş üçün də oxşar idi. USB 3.0 fişini beş əlavə sancaqla müəyyən etmək olar.

USB 3.0 fiber optikdən istifadə etmir, çünki kütləvi bazar üçün çox bahadır. Buna görə də qarşımızda köhnə yaxşı mis kabel var. Ancaq indi dörd naqildən çox doqquz naqil olacaq. Məlumat ötürülməsi diferensial rejimdə (SDP-Qoruyucu Diferensial Cüt) beş əlavə naqildən dördü üzərində həyata keçirilir. Bir cüt naqil məlumat qəbul etmək, digəri ötürmək üçün cavabdehdir. Əməliyyat prinsipi Serial ATA-ya bənzəyir, qurğular hər iki istiqamətdə tam bant genişliyi alır. Beşinci tel "torpaq" dır.

USB (Universal seriya avtobusu- “universal serial avtobus”) - orta və aşağı sürətli periferik qurğular üçün ardıcıl məlumat ötürmə interfeysi.Qoşulmaq üçün 4 telli kabel istifadə olunur, iki naqil məlumatların qəbulu və ötürülməsi üçün, 2 naqil isə periferik cihazı gücləndirmək üçün istifadə olunur. Daxili elektrik xətləri sayəsində USB öz enerji təchizatı olmadan periferik cihazları birləşdirməyə imkan verir.

Əsaslar

USB kabel 4 mis keçiricidən - bükülmüş cütdə 2 güc keçiricisi və 2 məlumat ötürücüdən və torpaqlanmış örgüdən (ekran) ibarətdir.

USB kabellər“cihaza” və “ev sahibinə” fiziki cəhətdən fərqli məsləhətlərə malikdir. USB cihazını kabelsiz, korpusa quraşdırılmış “host” ucu ilə həyata keçirmək mümkündür. Kabelin daimi olaraq cihaza inteqrasiyası da mümkündür(məsələn, USB klaviatura, Veb kamera, USB siçan), baxmayaraq ki, standart tam və yüksək sürətli cihazlar üçün bunu qadağan edir.

USB avtobus ciddi yönümlü, yəni "əsas cihaz" (host, həmçinin USB nəzarətçi kimi tanınır, adətən ana platada cənub körpüsü çipinə quraşdırılmışdır) və "periferik cihazlar" anlayışına malikdir.

Cihazlar avtobusdan +5 V güc ala bilər, lakin xarici enerji təchizatı da tələb oluna bilər. Gözləmə rejimi avtobusdan verilən əmr əsasında cihazlar və bölücülər üçün də dəstəklənir, gözləmə rejimində enerjini saxlayarkən əsas gücü çıxarır və avtobusdan verilən əmr əsasında onu işə salır.

USB dəstəkləyirCihazların isti qoşulması və ayrılması. Bu, siqnal olanlara nisbətən topraklama kontaktı keçiricisinin uzunluğunun artması səbəbindən mümkündür. Bağlandıqda USB konnektoru ilk bağlayanlardır torpaqlama kontaktları, iki cihazın korpuslarının potensialları bərabər olur və siqnal keçiricilərinin sonrakı birləşdirilməsi, qurğular üç fazalı elektrik şəbəkəsinin müxtəlif fazalarından qidalansa belə, həddindən artıq gərginliyə səbəb olmur.

Məntiqi səviyyədə USB cihazı məlumatların ötürülməsi və qəbulu əməliyyatlarını dəstəkləyir. Hər bir əməliyyatın hər bir paketində bir nömrə var son nöqtə cihazda. Cihaz qoşulduqda, OS nüvəsindəki sürücülər cihazdan son nöqtələrin siyahısını oxuyur və cihazdakı hər bir son nöqtə ilə əlaqə saxlamaq üçün nəzarət məlumat strukturları yaradır. ƏS nüvəsindəki son nöqtələrin və məlumat strukturlarının toplanması adlanır boru.

Son nöqtələr və buna görə də kanallar 4 sinifdən birinə aiddir:

1) axın (toplu),

2) menecer (nəzarət),

3) izoxron (izox),

4) fasilə.

Siçan kimi aşağı sürətli cihazlar ola bilməz izoxron və axın kanalları.

Nəzarət kanalı cihazla qısa sual-cavab paketlərinin mübadiləsi üçün nəzərdə tutulmuşdur. İstənilən cihazın idarəetmə kanalı 0 var ki, bu da OS proqram təminatına cihaz haqqında qısa məlumatı, o cümlədən sürücünü seçmək üçün istifadə edilən istehsalçı və model kodları və digər son nöqtələrin siyahısını oxumağa imkan verir.

Kanalı kəsin qısa paketləri hər iki istiqamətdə, cavab/təsdiq almadan, lakin çatdırılma müddətinə zəmanətlə çatdırmağa imkan verir - paket N millisaniyədən gec olmayaraq çatdırılacaq. Məsələn, giriş cihazlarında (klaviaturalar, siçanlar və ya joysticklər) istifadə olunur.

İzoxron kanal sizə paketləri çatdırılma zəmanəti olmadan və cavablar/təsdiqlər olmadan, lakin avtobus müddətində N paketin zəmanətli çatdırılma sürəti ilə (aşağı və tam sürət üçün 1 KHz, yüksək sürət üçün 8 KHz) çatdırmağa imkan verir. Audio və video məlumatların ötürülməsi üçün istifadə olunur.

Axın kanalı hər bir paketin çatdırılmasına zəmanət verir, cihazın istəksizliyi (buferin daşması və ya az olması) səbəbindən məlumat ötürülməsinin avtomatik dayandırılmasını dəstəkləyir, lakin çatdırılma sürətinə və gecikməsinə zəmanət vermir. Məsələn, printerlərdə və skanerlərdə istifadə olunur.

Avtobus vaxtı dövrlərə bölünür, dövrün əvvəlində nəzarətçi “dövrün başlanğıcı” paketini bütün avtobusa ötürür. Sonra dövr ərzində kəsmə paketləri, daha sonra dövr ərzində qalan vaxt üçün tələb olunan miqdarda izoxron paketlər, nəhayət, axın paketləri ötürülür.

Avtobusun aktiv tərəfi həmişə nəzarətçidir, məlumat paketinin cihazdan nəzarətçiyə ötürülməsi nəzarətçinin qısa sualı və məlumatları ehtiva edən cihazdan uzun cavab kimi həyata keçirilir. Hər bir avtobus dövrü üçün paket hərəkət cədvəli bunun üçün bir çox nəzarətçi istifadə edən nəzarətçi aparatı və sürücü proqramı ilə birlikdə yaradılır; Birbaşa Yaddaş Girişi DMA (Birbaşa Yaddaş Girişi) - qurğular arasında və ya cihazla əsas yaddaş arasında, iştirakı olmadan məlumat mübadiləsi rejimi Mərkəzi prosessor(CPU). Nəticədə, məlumatların CPU-ya geri və irəli göndərilmədiyi üçün ötürmə sürəti artır.

Son nöqtə üçün paket ölçüsü cihazın son nöqtə cədvəlində quraşdırılmış sabitdir və dəyişdirilə bilməz. O, USB standartı tərəfindən dəstəklənənlər arasından cihaz tərtibatçısı tərəfindən seçilir.


Spesifikasiyalar

USB imkanları:

Yüksək ötürmə sürəti (tam sürətli siqnal bit sürəti) - 12 Mb/s
- Yüksək ötürmə sürəti üçün maksimum kabel uzunluğu - 5 m
- Aşağı sürətli siqnal bit sürəti - 1,5 Mb/s
- Aşağı ötürmə sürəti üçün maksimum kabel uzunluğu - 3 m
- Maksimum qoşulmuş qurğular (çoxaltıcılar daxil olmaqla) - 127
- Müxtəlif ötürmə sürətlərinə malik cihazları birləşdirmək mümkündür
- İstifadəçinin SCSI terminatorları kimi əlavə elementləri quraşdırmasına ehtiyac yoxdur
- Periferik qurğular üçün təchizatı gərginliyi - 5 V
- Bir cihaz üçün maksimum cərəyan istehlakı - 500 mA

USB 1.1 və 2.0 konnektor naqilləri

USB siqnalları qorunan dörd telli kabelin iki teli üzərindən ötürülür.

Burada :

GND- periferik cihazları enerji ilə təmin etmək üçün "case" sxemi
V AVTOBUS- Enerji təchizatı sxemləri üçün də +5V
Təkər D+ məlumatların ötürülməsi üçün nəzərdə tutulmuşdur

Təkər D- məlumat almaq üçün.

USB 2.0-ın çatışmazlıqları

USB 2.0-ın maksimum məlumat ötürmə sürəti 480 Mbps (60 MB/s) olsa da, real həyatda belə sürətlərə nail olmaq qeyri-realdır (praktikada ~33,5 MB/s). Bu, məlumatların ötürülməsi üçün sorğu ilə köçürmənin faktiki başlanması arasında USB avtobusunda böyük gecikmələrlə bağlıdır. Məsələn, FireWire avtobusu, USB 2.0-dan 80 Mb/s (10 MB/s) az olan 400 Mbit/s aşağı pik ötürmə qabiliyyətinə malik olsa da, əslində, sabit disklərə və digər yaddaş qurğularına daha çox məlumat ötürmə qabiliyyətinə imkan verir. Bu baxımdan, müxtəlif mobil sürücülər uzun müddət USB 2.0-ın qeyri-kafi praktiki bant genişliyi ilə məhdudlaşır.

Yüksək sürətli siqnal bit sürəti - 12 Mb/s - Yüksək sürətli siqnal bit sürəti üçün maksimum kabel uzunluğu - 5 m - Aşağı sürətli siqnal bit sürəti - 1,5 Mb/s - Aşağı sürətli siqnal bit sürəti üçün maksimum kabel uzunluğu - 3 m - Maksimum qoşulmuş qurğular (o cümlədən multiplikatorlar) - 127 - Fərqli ötürmə sürətlərinə malik cihazları birləşdirmək mümkündür - İstifadəçinin SCSI üçün terminatorlar kimi əlavə elementləri quraşdırmasına ehtiyac yoxdur - Periferik qurğular üçün təchizatı gərginliyi - 5 V - Hər cihaz üçün maksimum cərəyan sərfi - 500 mA

USB 1.1 və 2.0 konnektor naqilləri

USB siqnalları qorunan dörd telli kabelin iki teli üzərindən ötürülür.

Burada :

GND- periferik cihazları enerji ilə təmin etmək üçün "case" sxemi V AVTOBUS- Avtobusun enerji təchizatı sxemləri üçün də +5V D+ məlumatların ötürülməsi üçün nəzərdə tutulmuşdur

Təkər D- məlumat almaq üçün.

Usb 2.0-ın çatışmazlıqları

USB 2.0-ın maksimum məlumat ötürmə sürəti 480 Mbps (60 MB/s) olsa da, real həyatda belə sürətlərə nail olmaq qeyri-realdır (praktikada ~33,5 MB/s). Bu, məlumatların ötürülməsi üçün sorğu ilə köçürmənin faktiki başlanması arasında USB avtobusunda böyük gecikmələrlə bağlıdır. Məsələn, FireWire avtobusu, USB 2.0-dan 80 Mbps (10 MB/s) az olan 400 Mbit/s daha aşağı pik ötürmə qabiliyyətinə malik olsa da, əslində, sabit disklər və digər məlumatların saxlanması üçün daha böyük ötürmə qabiliyyətinə imkan verir cihazlar. Bu baxımdan, müxtəlif mobil sürücülər uzun müddət USB 2.0-ın qeyri-kafi praktiki bant genişliyi ilə məhdudlaşır.

USB 3.0-ın ən əhəmiyyətli üstünlüyü onun daha yüksək sürətidir (5 Gbps-ə qədər), bu da köhnə portdan 10 dəfə sürətlidir. Yeni interfeys enerjiyə qənaəti yaxşılaşdırıb. Bu, istifadə edilmədikdə sürücüyə yuxu rejiminə keçməyə imkan verir. Eyni zamanda ikitərəfli məlumat ötürülməsini həyata keçirmək mümkündür. Bir neçə cihazı bir porta birləşdirsəniz (portu ayırsanız) bu, daha yüksək sürət verəcəkdir. Siz hubdan istifadə edərək budaqlana bilərsiniz (hub bir portdan 3-6 porta şaxələnən cihazdır). İndi hubı USB 3.0 portuna qoşsanız və bir neçə cihazı (məsələn, fləş diskləri) huba qoşsanız və eyni vaxtda məlumat ötürsəniz, sürətin USB ilə olduğundan daha yüksək olacağını görəcəksiniz. 2.0 interfeysi. Bir müsbət və mənfi ola biləcək bir xüsusiyyət var. USB 3.0 interfeysi cərəyanı 900 mA-a qədər artırıb, USB 2.0 isə 500 mA cərəyanla işləyir. Bu, USB 3.0 üçün uyğunlaşdırılmış cihazlar üçün bir artı olacaq, lakin kiçik bir mənfi cəhət ondan ibarətdir ki, telefon kimi daha zəif cihazları doldurarkən risk ola bilər. Yeni interfeysin fiziki çatışmazlığı kabel ölçüsüdür. Yüksək sürəti qorumaq üçün kabel USB 2.0 ilə müqayisədə daha qalın və uzunluğu qısalmışdır (3 metrdən çox ola bilməz). Fərqli USB interfeysləri olan cihazların olacağını qeyd etmək vacibdir yaxşıdır və problem olmamalıdır. Ancaq USB 3.0-ı köhnə porta qoşsanız və ya köhnə interfeys kabelini yeni porta qoşsanız, sürətin artacağını düşünməyin. Məlumat ötürmə sürəti ən zəif portun sürətinə bərabər olacaq.

  • Dərslik

Universal Serial Bus üzərində OSI şəbəkə modelinin təsvirli proyeksiyası.

USB yığınının üç "əlamətdar" səviyyəsi

İnternetdə ən çox tapıla bilən USB yığınının görünüşü məni qane etmədi:

Çox faydalı USB yığını deyil


Avtobus səviyyəsi, məntiqi, funksional... Bunlar təbii ki, gözəl abstraksiyalardır, lakin onlar daha çox host üçün sürücü və ya proqram təminatı hazırlamağa hazırlaşanlar üçündür. Mikrokontroller tərəfində mən şablon sonlu dövlət maşını gözləyirəm, onun qovşaqlarına adətən faydalı kodumuzu yerləşdiririk və o, janrın bütün qanunlarına uyğun olaraq əvvəlcə uğursuz olacaq. Və ya hostun proqram təminatı səhv olacaq. Və ya sürücü. Hər halda, kimsə uğursuz olacaq. MK kitabxanalarını dərhal anlamaq da mümkün deyil. Və beləliklə mən analizatorla USB avtobusundakı trafikə baxıram, burada üç gözəl səviyyəli tanış olmayan bir dildə baş verən hadisələr heç də uyğun gəlmir. Görəsən, qrip qızdırmasına görə başımda belə dissonans yaranıb?

Oxucuda oxşar hisslər olubsa, sevimli 7 qatlı OSI modelinə əsaslanaraq, mənim həddən artıq qızmış beynimdə birdən mənə aydın görünən USB yığınının alternativ görüntüsünü təklif edirəm. Özümü beş səviyyə ilə məhdudlaşdırdım:

Demək istəmirəm ki, bütün proqram təminatı və kitabxanalar artıq hazırlanıb və ya bu model əsasında tərtib edilməlidir. Mühəndislik səbəblərinə görə səviyyələri olan kod çox qarışdırılacaq. Ancaq USB avtobusu ilə tanışlığa başlayanlara, cihaz mübadiləsi protokollarını və domen terminologiyasını anlamaq, hazır nümunələrə, kitabxanalara yaxınlaşmaq və daha yaxşı naviqasiya etmək istəyənlərə kömək etmək istəyirəm. Bu model MK-ya yükləmək üçün deyil, sizin parlaq zehniniz üçün nəzərdə tutulub, əziz dostlar. Və sonra qızıl əlləriniz hər şeyi özləri edəcək, şübhəm yoxdur :)

Beləliklə, gedək, səhvlər görürsünüzsə, düzəldin. Bu qaralama versiyadır və əgər belə bir şey artıq hardasa çəkilibsə, üzr istəyirəm, tapa bilmədim, ona görə də özüm düzəltdim. Düşünürəm ki, şəkil qaçmayacaq, amma hələlik hörmətli ictimaiyyətə ilk növbədə niyə bu nəşrə başladığımı izah edəcəyəm.

90-cı illərdən başqa bir flashback

Mən ilk səhvimi başqasının kodundan 90-cı illərin sonunda, tələbə kimi işləyərkən sildim. Bu, FreeBSD üçün pppd idi, sonra onu modem hovuzuna quraşdırdıq. Motorola modemləri bağlı vəziyyətdə qaldı, heç kim keçə bilmədi, xətt boş yerə itdi və PPP-nin canlı saxlanması ilə qalan yeganə üsul nədənsə səhv idi. O zaman bildim ki, nədənsə pppd tələb olunan dörd əvəzinə altı LCP cavab baytını gözləyir. Onda özümü çox dəli hiss etdim bug shaker 90-cı illərdən :-) PPP-nin bununla nə əlaqəsi var? Bu, USB-yə bənzəyir: paket və nöqtədən nöqtəyə. Düzdür, USB 2.0-dan fərqli olaraq tam dupleksdir.


İstəsək də, istəməsək də, mikrokontrollerlərin təkamülü açıq şəkildə dayanmayacaq. Xeyr, yox və o, nəşrlərdə görünəcək (http://habrahabr.ru/post/208026/, http://habrahabr.ru/post/233391/) "ağır ətraf qurğular" - MK-da quraşdırılmış USB avtobus tətbiqləri, təhlil nümunələri ilə, HID-dən istifadə etməklə və s. RaJa müəllifinə hörmətlə yanaşmalıyıq: standart STSW-STM32121 (UM0424) kitabxanasında verilmiş səkkiz nümunədən o, ən faydalı olanı seçdi (Xüsusi HID), onu pulsuz Em::Blocks mühitinə köçürdü, başa düşülən dildə təqdim etdi və bir az da bəzədib , bravo! Bu mənə çox vaxt qənaət etdi.

Kitabxanaya necə getmək olar?

Müəllif tərəfindən lütfən GitHub-da yerləşdirilən Em::Blocks üçün RHIDDemo layihəsini aldıqdan sonra onu Keil-ə köçürməyə başladım (FTDI əsaslı CoLink sazlayıcım; kimsə mənə Em::Blocks üçün Coocox plaginini desin). Ancaq mən başa düşə bilmədim: əgər sayt 2011-ci ildən 3.5.0-ı yerləşdiribsə, müəllif 2012-ci ildən SPL 3.6.1-i haradan alıb? Mən olduqca darıxdırıcı bir axtarışdan keçdim, bu da məni təəccübləndirdi... birbaşa USB FS 4.0.0 kitabxanasının bir hissəsi kimi Keil üçün hazır Xüsusi HID layihəsinə gətirib çıxardı. Süpürgə altında siçan kimi göz qabağında yatır. Oh yaxşı. Amma nəhayət STMicroelectronics buraxılışlarına çatdım, STSW-STM32121 (UM0424) USB FS kitabxanasının təsvirini tapdım və tərtibatçının məni dəli etmək cəhdlərini dayandırdım. Mənə deyin, 2009-cu ildən köhnə CMSIS 1.30-u 2011-ci ildən SPL 3.5.0 dəstinə qoymaq, 2012-ci ildən yeni SPL 3.6.1-i 2013-cü ildən USB-FS 4.0.0-da gizlətmək normaldırmı (2012-ci ildən CMSIS 3.0.1-in qoyulması). orada da), 2014-cü ildə buraxılmış CMSIS 3.30-un cari versiyasına sahib olmasına baxmayaraq? Yeri gəlmişkən, STM32F10X üçün SPL 3.6.x-də bufer daşması siqnalları ilə bağlı USART ilə bir neçə səhv düzəldildi. Sağ olun, heç olmasa buraxılış qeydlərini qoyublar...

HID vs SNMP

Beləliklə, STM32F103C8T6-nı götürərək, USB HID mövzusunu bir az araşdırmaq qərarına gəldim, USB HID abstraksiya hər növ sensorlar, sensorlar və digər PWM ilə idarə olunan güc sürücülərinin konsepsiyasına çox yaxşı uyğun gəlir. Nədənsə bu, mənə SNMP-ni xatırlatdı, yalnız çox sadələşdirilmiş formada: HID deskriptorları SNMP MIB rolunu oynayır. Cihaz ev sahibi tərəfindən işə salındıqda: “Salam, ev sahibi! Mən qəhvə hazırlayanam. Məndə [başlat] düyməsi, [qaymaq], [şəkər] idarələri, [qalan qəhvə], [su qalır], [şəkər qalır], [qaymaq qalır]. Sürücüləri qaldırın, düyməni basın, bir az qəhvə içək." Sizə heç nəyi xatırlatmır? SNMP dialoqunun nümunəsi: “Yaxşı, salam, 100.000 dollara proqram təminatı olan idarəetmə stansiyası. Və mənim 200.000 dollara keçid şassim var və hər biri 100.000 dollara onun üzərində daha 4 modul var; hər birində nalayiq sürətlə daha 16 port var və burada bütün funksiyaları sadalamaq sadəcə mümkün deyil... hər bir element üçün ayrıca soruşun; ah, bəli, prosessor yükü filan, yaddaş filan...” Və eyni ruhda başqa onlarla səhifə.

HID ideyasını bəyəndim. Ancaq Windows-u yanıb-sönən LED-lərin təhsil tapşırıqlarından kənara çıxan kimi (həqiqi UNIX mühitlərinə doğru!), o, bütün möhürlənməmiş çatlardan sızmağa başladı və özümü bir növ aciz axsaq kimi hiss etdim. Layihəni sazlayarkən, mən instinktiv olaraq bir növ tcpdump (bu belə adlanır: usbdump(8) və ya usbmon) tutdum, lakin mən yalnız tanımadığı dildə mesajlar gördüm.

Aydın oldu: USB avtobusu haqqında fundamental bilik çatışmazlığı var. Hər hansı bir təcrübəli İT mütəxəssisi OSI modelini və TCP/IP yığınını onurğa beyni səviyyəsində sadəcə olaraq zərurətdən başa düşürsə, USB ilə vəziyyət fərqlidir. Bu başa düşüləndir: orada eyni tcpdump vasitəsilə trafikə casusluq edə bilərsiniz (lazımdır) və aparat və proqram təminatını konfiqurasiya edə bilərsiniz, lakin burada o, tamamilə qoşub istifadə edir və siz sürücünü və ya mikroproqramı yeniləməklə (və ya ƏS-ni yenidən quraşdırmaqla) nəyisə düzəldə bilərsiniz. Amma biz buraya sadəcə yaxşı proqram təminatı yaratmaq üçün toplaşmışıq, elə deyilmi? Bəzi USB təsvirlərini onlayn oxuduqdan sonra sənədlərin nə qədər çaşdırıcı ola biləcəyinə təəccübləndim. Hətta məndə belə bir hiss var idi ki, onlar qəsdən duman yaymaqla, qönçədəki rəqabətdən qurtulmaqla bizi yoldan çıxarmaq istəyirlər. Mən bu vəziyyətlə razı deyiləm!

Başqa bir möhtəşəm sxem

İnternetdə başqa bir təsvirə rast gəldim (bu, BMP formatında idi, zarafat deyil):

Əvvəlcə optimist görünür. Nəhayət, yığın sökülür. Bununla belə, çərçivələr zəif işarələnib: mən onları şaquli nöqtəli xətlərlə çəkərdim və EOF sadəcə fasilədir, heç bir məlumat əslində ötürülmür. Ancaq konteksti oxumağa başlayırıq və müəllifin əsl niyyətini başa düşmürük (bizi çaşdırmaq üçün):

USB avtobus interfeysi host nəzarətçisi yaradır kadr;
Kadrlar NRZI metodundan istifadə edərək seriyalı bit ötürülməsi ilə ötürülür.
Və burada başqa:
hər çərçivəən yüksək prioritetdən ibarətdir bağlamalar, tərkibini aparıcı sürücü təşkil edir;
hər biri yayım bir və ya bir neçə əməliyyatdan ibarətdir;
hər bir əməliyyat ibarətdir paketlər;
hər plastik torba paket identifikatorundan, verilənlərdən (əgər varsa) və yoxlama məbləğindən ibarətdir.

Deyəsən hər şey düzgün çəkilib, amma oxuduqca suallar daha çox olur. Avtobusda ötürülən minimum məlumat strukturu çərçivə və ya paketdir? Ümumiyyətlə, yuxarıdan aşağıya baxmalıyıq, yoxsa əksinə? Və NRZI metodundan istifadə edərək kodlaşdırılan nədir - çərçivələr, paketlər və ya avtobusdakı bütün bit axını? Əməliyyatlar bağlama, köçürmə və ya bəlkə də bir növ qiymətli bağlamadan ibarətdir?
Niyə edə bilməzsiniz: host paketləri əməliyyatlara qruplaşdırır və onları cari avtobus ötürmə qabiliyyətinə əsaslanaraq vaxt baxımından kritik məlumatlara (video, audio) üstünlük vermək üçün çərçivələr adlanan vaxt dilimlərinə paylayırmı? Bəli, USB-də paket köçürmələrinin planlaşdırılması ilə bağlı nüanslar var, mən hələ onlara toxunmuram.

USB yığını ilə bağlı baxışım

Mən hubda qeyd olunan NutShell-dəki USB-ni (hurray, tərcümə), eləcə də USB Made Simple-ni yaxşı sənədləşdirmə hesab edirəm. Onlara əsaslanaraq, USB yığınının versiyasını yığdım, onu yenidən çəkəcəyəm.

Fiziki təbəqə
Fiziki səviyyədə, diferensial cüt keçiricinin (yerlə birlikdə) elektrik rejimləri dəsti bit doldurulması ilə NRZI metodundan istifadə edərək bit axınının kodlandığı vəziyyətləri təyin etmək üçün istifadə olunur: burada altı ardıcıl "1"dən sonra ( yaxşı, ötürmək istədim, deyək ki, 0xffff) “0” qəbuledicinin uzun müddət bir vəziyyətdə qalmaması üçün daxil edilmişdir; Qəbuledici A Daxil edilmiş “0” yoxdur və bu, tezliklərin daha yaxşı avtomatik tənzimlənməsi üçün kodlaşdırmada kifayət qədər geniş yayılmış texnikadır; Torpaqla birlikdə bir cüt tel ən azı dörd statik vəziyyət yaratmağa imkan verir (onlar J, K, SE0, SE1 olaraq təyin olunur). USB 2.0-da SE1 istifadə edilmir və qalan üçü əlavə olaraq bir neçə nəzarət simvolunu (paket sərhədləri, sıfırlama, qoşulma/ayrılma, enerjiyə qənaət/çıxış) ötürmək üçün dinamikada (saatlar və keçidlərlə) ifa olunur. USB Made Simple, Part 3 - Data Flow-da yaxşı təsvirlər var.
Bunlar. Nəticədə, məlumatlar sıfırlar və birlər, üstəgəl bütün növ nəzarət simvolları şəklində ötürülür ki, bu elektrodinamik mətbəxdən normal məlumat paketləri hazırlana bilsin.
(oxucuların xahişi ilə əlavə edilmişdir)
Dəstə səviyyəsi
Paket səviyyəsində ünvansız paketlər host və cihaz arasında ötürülür (yarım dupleks xəttdə olan bir cüt cihaz ünvansız edə bilər). Paket qəbuledicinin saatını, bayt ardıcıllığını və EOP simvolunu sinxronlaşdırmaq üçün SYNC markerindən ibarətdir. Paketin uzunluğu dəyişkəndir, lakin yığının yuxarı səviyyələri vasitəsilə razılaşdırılır. Birinci bayt Paket İdentifikatoru (PID) adlanır, səs-küydən qorunmaq üçün sadə lazımsız formata malikdir və növbəti səviyyəli maşına (paketlərdən əməliyyatların yığılması üçün) qidalanma üçün uyğundur. İçliyi olan paketlər (bir PID baytdan çox) yoxlama məbləği ilə təmin edilir (paketin növündən asılı olaraq qısa CRC5 və ya uzun CRC16). Protokol analizatoru ən azı bizə paketləri göstərməlidir.
Əməliyyat səviyyəsi
Növbəti səviyyədə paketlər gedirlər əməliyyatlar. Tranzaksiya, bir-birinin ardınca ciddi şəkildə izlənilən, (yarım dupleks rejimində) ev sahibinin son nöqtə ilə mübadilə edən kiçik paketlər toplusudur (Tam Sürətli USB 1, 2 və ya 3-də). Əməliyyatı yalnız ev sahibinin açması çox vacibdir; bu, USB xüsusiyyətidir (MK proqram təminatında bizim üçün daha az çətinlik var). Əməliyyat səviyyəsində biz danışa bilərik kanal(boru) host və cihazın son nöqtələrindən biri arasında, lakin mən qəsdən OSI modelindən "Data Link" terminindən qaçıram. Protokol analizatoru ən azı əməliyyatları deşifrə etməlidir.
Ötürücü səviyyəsi
Tranzaksiyaların üzərinə köçürmə qatını yerləşdirəcəyik. USB-də onların dörd növü var: 0 nömrəli son nöqtə ilə idarəetmə köçürmələri, kəsilmə köçürmələri, izoxron köçürmələr və toplu köçürmələr. Son üçü axın kanallarının variantlarıdır (axın borusu), onlar haqqında daha sonra bir neçə söz deyəcəyəm. Bu səviyyə də yaxşı bir protokol analizatorunu göstərməlidir.
Tətbiq təbəqəsi
Stackin yuxarı hissəsində, həmişə olduğu kimi, tətbiq təbəqəsi var. Burada baş verənlər: cihazın ünvanını host tərəfindən təyin etmək, cihaza özü haqqında deskriptorlar dilində məlumat vermək, konfiqurasiya seçmək üçün host əmrləri (nəzarət ötürülməsi), HID cihazları ilə məlumat mübadiləsi (nümunələrdə tapdım. bu günə qədər fasilələrlə ötürmə, mən nəzarəti sınamaq istəyirəm, printerdə çap və skan etmək, USB yaddaşa giriş (böyük blok), qulaqlıqlar və veb-kameralar vasitəsilə əlaqə (izoxron) və bir çox başqa gözəl şeylər.
Son toxunuş
Səviyyələri bir saniyə aşağı ataraq əlavə edə bilərik ki, ev sahibi vaxtaşırı eyni Start of Frame (SOF) paketlərini avtobusun üzərinə atır, vaxtı bərabər intervallara bölür, lakin tranzaksiyaların özləri pozulmayacaq şəkildə. Buna görə də, SOF paketləri müstəqil əməliyyatlar hesab edilə bilər. USB çərçivəsi OSI modelinin məlumat bağlantısı qatının omonimi ilə qarışdırılmamalıdır. Audio CD-nin çərçivələrini (çərçivələrini) xatırlamaq daha yaxşıdır, bu sadəcə bir zamandır: ev sahibi SOF paketləri ilə avtobusa "gənə verir" ki, qoşulmuş qurğular sözdə iştirak etməyi əvvəlcədən planlaşdırsınlar. izoxron ötürülmələr, məlumat axınlarını real vaxtda idarə etmək. Yaxşı və ya buna bənzər: əməliyyat qrupları ev sahibi tərəfindən çərçivələr adlanan vaxt intervallarında planlaşdırılır. Tam Sürətdə çərçivə 1ms və Yüksək Sürətli USB-də 125µs-dir, lakin Yüksək Sürət daha mürəkkəb bir standartdır və ayrı-ayrılıqda ən yaxşı şəkildə öyrənilir.
UPD:
Oxucular tərəfindən yaxşı bir sual verildi: parçalanma haqqında nə demək olar? USB 2.0-də əməliyyat səviyyəsində və aşağıda heç bir parçalanma əlaməti tapmadım, yəni. Əməliyyatların tam şəkildə ötürülməsi nəzərdə tutulur. Bəzi hallarda köçürmələr, xüsusən də izoxron rejimlər nəzərə alınmaqla, bir neçə əməliyyata bölünə bilər və edilməlidir. Yenə də deyirəm ki, hələlik ev sahibi bizim üçün bütün planlaşdırmalara cavabdehdir (MK tərəfində biz daha az düşünməliyik).

USB trafikinə baxırıq

İllüstrasiyaların yaxşı seçimi qeyd olunan USB Made Simple kitabında, 5-ci fəsildə verilmişdir: www.usbmadesimple.co.uk/ums_5.htm

Onlardan biri budur


Beləliklə, əməliyyat həmişə cihazda seçilmiş bir son nöqtə ilə əlaqəli olaraq ev sahibi tərəfindən başlayır (0 nömrəli xüsusi nöqtəyə əlavə olaraq, bir cihazda onlardan 15-ə qədər ola bilər, məsələn, birləşdirilmiş klaviatura ilə birləşdirilmiş klaviatura. siçan, termometr, fləş sürücü, qəhvə dəmləyən və santexnika sifarişi üçün zəng düyməsi).
Ev sahibi cihazdan məlumat alırsa, sonuncu özü əməliyyatı aça bilməz, ancaq gözləyə bilər doğru an və orada iştirak edin. Host cihazı PID = IN (Token qrupu) paketi ilə əməliyyat açır və tələb olunan müddət ərzində avtobus azadlığına zəmanət verir, cihaz əməliyyatın növündən asılı olaraq Data qrupundan paketi atır, host təsdiq edə bilər. Handshake qrupundan üçüncü paket (ACK, NAK, STALL, NYET) ilə uğur qazanır, əməliyyat bağlanır.
Cihaza məlumat göndərərkən (PID = OUT, Token qrupu) host əməliyyatı açır, məlumat paketi (Data) göndərir və rejimdən asılı olaraq, əməliyyatın müvəffəqiyyətini təsdiqləyən Handshake paketini də ala bilər.
Əməliyyatın sonunda hər şey normala dönəcək, cihaz yenidən hostdan nəzarət paketlərini gözləyəcək.

STM32 USB FS nümunələrində USB ötürmə rejimləri

Audio-video axını, siçan jestləri və yüksək sürətli osiloskop siqnalı ilə eyni vaxtda bir cüt naqil üzərindən diskdən surət çıxara bilmək üçün müxtəlif növ mesajlar və ötürmələr mövcuddur.
Yuxarıda yalnız sadə təsvir etdim axın kanalı Doldurulmuş paketlərin (Məlumat qrupları) USB altsisteminin özünə heç bir xüsusi və ya nəzarət məlumatı daşımadığı host və son nöqtə arasında (Axın Borusu). Yazışmaların tam azadlığı, nəzarətçi kitabxanası MK yaddaşından ixtiyari ölçülü buferi hosta və ya arxaya yükləmək üçün primitivləri təmin etməlidir. MK kitabxanasına host sürücüsü ilə birlikdə paketlərə kəsmə, yönləndirmə və "defraqmentasiya" ilə məşğul olsun. STM32-də bunlar UM0424-də təsvir edilən USB_SIL_Write() və USB_SIL_Read()-dir. Onlar abstraksiyanın çox məntiqi səviyyəsidir. Host tərəfində müvafiq sürücünün təsvirinə baxın (məsələn, FreeBSD-də bu ugen(4)-dir).
Bununla belə, sadə axın kanalı təşkil etmək üçün USB kimi ağır periferiya qurğularından istifadə etməyi küfr hesab edirəm (sual olunur: USART-da nə səhvdir?). Ancaq təbii ki, hər cür vəziyyət var.
Hər halda, USB alt sisteminin ümumiyyətlə canlanması və cihazın aşkarlanması üçün nəzarət əməliyyatlarının mübadiləsi tələb olunur.

MƏDDƏT

STMicroelectronics-dən Tam Sürətli USB ilə işləmək üçün eyni UM0424 kitabxanasından əlavə nümunələr qeyd olunacaq, lakin onlar yerli demo lövhələri üçün nəzərdə tutulub. Müəllif Rajadan nümunə götürün, layihələri demo boardunuza uyğunlaşdırmaqda mühəndislik fərasətini göstərin.

Proqram təminatı ilə bağlı hər şey aydındır: bunlar sənaye istifadəsi üçün olmayan nümunələrdir, səhvlər ola bilər, bəzi hissələr (məsələn, Kütləvi yaddaş nümunəsindəki link cədvəli) patentlə qorunur və sizin onlardan istifadə etmək hüququnuz yoxdur. kommersiya layihəsində. Ancaq bu heç bir şey deyil, çinlilər daha sonra VID və PID kitabxanasını dəyişdirməkdən belə çəkinmədikləri USB məhsullarını bazarda satmağı bacarırlar.

Dəmir üçün, mənim başa düşdüyüm kimi, kvarsdan başlamaq lazımdır. Məndə 12 MHz kvars olan Chelyabinsk PinBoard II var (bütün kitabxanalar 8 MHz üçün nəzərdə tutulmuşdur), PLL çarpanını 9-dan 6-a dəyişdirdim (izahlarla əlaqə), əks halda MK 72 MHz əvəzinə 108 MHz-ə qədər sürətlənəcək və USB tələb olunan 48 MHz əvəzinə 72 MHz-ə getməyəcək. Siz həmçinin USB avtobus bölücüsünü bir yarımdan birə dəyişdirərək MK sürətini 48 MHz-ə endirə bilərsiniz. Mütəxəssislər HSI MK-nın daxili generatorundan istifadə etməyi sevmirlər: istilik səbəbindən tezlik bir qədər sürüşə bilər və USB-nin nəticələrini proqnozlaşdırmaq çətindir. Əlbəttə ki, periferiyanı unutma. SPI/SDIO fləş yaddaşı olmadan, Kütləvi yaddaş nümunəsindən yalnız /dev/null analoqunu yarada bilərsiniz, lakin onu formatlaya bilməzsiniz :-)

Ötürmələri və mesaj kanallarını idarə edin
USB haqqında düşünərkən LCP, IPCP, CCP və həmçinin xzCP ilə köhnə PPP protokolunu xatırlayıram. Host və 0 saylı son nöqtə arasında xüsusi tipli mesajların mübadiləsi x3CP-nin yerli ekvivalentidir.
İdarəetmə ötürülmələri vasitəsilə cihaz işə salınır, ünvan alır və hosta özü haqqında deskriptor dilində məlumat verir (tələb olunan drayveri tapıb aktivləşdirə bilsin). Nəzarət əməliyyatları olmadan sadə axın işləməyəcək, əgər cihaz formada cavab vermirsə, host tez bir zamanda portu bağlayacaq: protokola əməl edilməlidir.
Prinsipcə, protokol məlumat mübadiləsini fasilələrlə rejimə bənzər 0 nömrəli nəzarət nöqtəsinə qoşmağı qadağan etmir. Eyni zamanda, bu barədə düşünün: MK mikroproqramını, belə deyək, sahədə necə yeniləyəcəksiniz? Proqramçı hazırsınız? Başqa bir həll yolu var.
Misal: Cihazın proqram təminatının təkmilləşdirilməsi
Kəsilmiş ötürmələr
Bu müxtəliflik ( köçürməni dayandırmaq) nəzarət əməliyyatlarına bənzər kiçik əməliyyatların mübadiləsi üçün nəzərdə tutulub. Xeyr, cihaz hostun işini kəsə bilməz, səsverməni gözləyir, onların tezliyi və paket ölçüləri əvvəlcədən cihazın deskriptorunda müəyyən edilir. Hər növ uzaqdan idarəetmə, sensorlar, siçanlar, LEDlər və digər HID qəhvə dəmləyiciləri üçün yaxşı uyğundur. Hər nöqtədə fasilələr olan kanal bir istiqamətlidir.
Nümunələr: Fərdi HID, Joystick siçanı, Virtual COM portu
İzoxron ötürmələr
Χρόνος yunan dilində "zaman" deməkdir. İzoxron ötürülmə ( izoxron köçürmə) - real vaxt rejimində məlumat axınlarını idarə etməyə imkan verən yerli yüksək texnologiya. O, zəmanətli (lakin mütləq geniş deyil) bant genişliyi və QoS ilə UDP kimi təsdiqləyici əməliyyatlara malik deyil. Sınıq paket? MK-nı ayağına itələyən tanrı Xronos idi. Paketi yenidən göndərməyə cəhd etməyə ehtiyac yoxdur, əks halda Allah üzüləcək. Bununla belə, yoxlama məbləğlərini Chronos-dan sakitcə yoxlayırıq. İzoxron köçürmələr audio-video və real vaxt ölçmə sistemləri, eləcə də digər oyuncaqlar üçün yaxşıdır ikili istifadə. Baxmayaraq ki, bəziləri ola bilər. USART və ya SPI vasitəsilə ARM-ə qoşularaq bir növ AVR-ni bağlamaq daha maraqlıdır. İzoxron əməliyyatlar çərçivə siqnalizasiyasında iştirak edir (SOF paketinin işarələnməsini xatırlayın).
Misal: USB səs dinamiki
Böyük bloklu ötürücülər
Xeyr, biz sement torbaları daşımayacağıq. Düşünürəm ki, hər kəs müxtəlif USB sürücülərinin iş rejimini öyrənib. Transferlər toplu köçürmə hər zaman pozulmuş paketlərin ötürülməsi ilə, lakin bant genişliyinə zəmanət olmadan məlumatları mümkün qədər tez və mümkün qədər tez göndərmək məqsədi var, lazım olduqda onu izoxron ötürmələrə verir (QoS olmadan TCP-də olduğu kimi). Mən artıq USB flash sürücülərin daxili strukturu haqqında danışdım, indi işləyən prototipi yükləyə və işlədə bilərsiniz. Mən bunu özüm sınamamışam, amma nümunə təsvirindəki SCSI əmrləri cədvəli (yeri gəlmişkən) olduqca simvolikdir. NAND yaddaşı üçün aşınma idarəetmə alqoritminin heç bir əlaməti tapmadım :-)
QEYD: STM patent mühafizəsi yerlərdə tətbiq edilir.
Misal: Kütləvi saxlama

Açılmamış nə qalıb

USB-də başqa dərslik hazırlamaq məqsədim yoxdur, mənsiz də kifayət qədər var və onlar yaxşı təsvir olunub: elektrik hissəsi, protokol detalları, hublarla işləmə, deskriptor dili və HID abstraksiya səviyyəsi, VID/ ilə problemlər PID unikallığı, USB 3.0 və USB avtobusun bir çox digər gözəl xüsusiyyətləri, həm bizim üçün faydalıdır, həm də çox deyil. İT mütəxəssisləri üçün xüsusilə düşmən cihazlarının icmalı ilə qaranlıq tərəfə ekskursiya etməyi məsləhət görürəm (dəhşətli işlər görəcək maskalanmış HID klaviaturası olan bir flash sürücü).

Bağlantılar

Xüsusi HID nümunəsinin pulsuz Em::Blocks mühitinə və LC-Tech Industrial Electronics tərəfindən istehsal olunan STM32F103C8T6 büdcə demo lövhəsinə uyğunlaşdırılması. İT adamları. Bu bir növ mühəndislik Yin və Yangdır, hər birimizin hər ikisindən bir payı var.

Sənaye elektronikası mühəndisləri aparat sahəsində mükəmməl bilik və bacarıqlara malikdirlər, onlar saç kimi nazik radio komponentlərini sol əlləri ilə gözləri ilə lehimləyirlər (sonra işləyir). Elektron dövrəyə baxdıqda, demək olar ki, fiziki olaraq bütün cərəyanlarını potensiallarla hiss etməyə başlayırlar, onlar da güc sxemləri ilə və (böyük, sürətli, təhlükəli) sənaye məhsulları ilə işləyirlər. MK-nın proqramlaşdırılmasına yanaşma uyğundur: o, sadəcə olaraq lazımi məntiqi səviyyələri lazımi vaxtda düzgün ayaqlara çıxarmalıdır, hansı şəkildə olmasının əhəmiyyəti yoxdur. Texnologiyada mühafizəkardırlar (müdaxilə etməyin - işləyir), ağır MK periferiyaları xüsusilə üstünlük təşkil etmir. Obyekt yönümlü proqramlaşdırma, informasiya təhlükəsizliyi, milyonlarla kodlu nəhəng layihələr və hər cür dəbdəbəli qrafik interfeysləri müzakirə edərkən insanlar sıxılır. Paket yönümlü USB avtobusu əvəzinə onlar adi RS-232 və ya daha qəddar RS-485 (sənaye proqramları üçün seriya avtobusu, 15 m-də 10 Mbit/s, 100-ə qədər) ilə təkmilləşdirilmiş USART axın rejiminə üstünlük verirlər. 1200 m-də kBit/s, 32 cihaza qədər).

İT mütəxəssisləri əməliyyat sistemləri, şəbəkə infrastrukturu və mürəkkəb qarşılıqlı əlaqələr haqqında anlayışla yetişdirilir və elita informasiya təhlükəsizliyini yaxşı bilir və başqasının sisteminə nüfuz etmək üçün hər cür görünməz yolları başa düşür. Bəzi insanlar həqiqətən pişikləri sevirlər (sən onları necə sevməyə bilərsən? Ancaq mən saxlamıram, yetişdirmirəm və bişirmirəm :-). Bir çox insanlar məlumat azadlığını, korporasiyaları/hökumətləri tənqid etməyi və təbiət qüvvələrini düşüncə gücü ilə məğlub etməyi sevirlər. Onlar patoloji cəhətdən tənbəldirlər, lakin onlar yeni texnologiyalar və bahalı oyuncaqlar ilə bükülmüş mühəndislik bulmacalarını sevirlər (tercihen proqram səviyyəsində həll olunur və ya həddindən artıq hallarda jumpers). Bir lehimləmə dəmiri ilə münasibətlər qorunur: İT mütəxəssisindən lehimləmə dəmirini bəyəndiyini soruşmayın, səhv başa düşə bilər; Elektron sxemləri lehimləməyi sevdiyini soruşmaq daha yaxşıdır.

Mən nədən danışıram? Biz sadəcə olaraq bu dünyaya başqa cür baxırıq... Axı, Linux nüvəsi C-də modullardan və konkret platformalar üçün assembler əlavələrindən tutmuş eyni uşaqlar tərəfindən yaradılmışdır və onlar sanki holivarsız işləyirdilər. Mən həqiqətən ciddi layihəni ən son mikrokontrollerləri ağır periferik qurğularla birləşdirən çoxnüvəli sistem kimi görürəm, lakin AVR kimi klassik modellərlə kombinasiyaları istisna etmirəm: onlardan texniki tərəqqinin bəzi kritik, sürətlə fırlanan nizə ucluqlarını asmaq üçün istifadə etmək olar. Əgər kod illərdir sınaqdan keçirilirsə, niyə də olmasın?

Teqlər əlavə edin

Bugünkü məqalə, adından da göründüyü kimi, əsasları müzakirə etməyə həsr olunacaq USB interfeysi. Gəlin əsas anlayışlara, interfeys strukturuna baxaq, məlumat ötürülməsinin necə baş verdiyini anlayaq və yaxın gələcəkdə bütün bunları praktikada tətbiq edəcəyik 😉 Bir sözlə, başlayaq!

Bir sıra fərqli spesifikasiyalar var USB. Hər şey ilə başladı USB 1.0USB 1.1, sonra interfeys çevrildi USB 2.0, son spesifikasiya nisbətən yaxınlarda ortaya çıxdı USB 3.0. Ancaq hazırda ən çox yayılmış tətbiqdir USB 2. 0.

Yaxşı, yeni başlayanlar üçün əsas məqamlar və xüsusiyyətlər. USB 2.0üç iş rejimini dəstəkləyir:

  • Yüksək Sürət– 480 Mb/s-ə qədər
  • Tam Sürət– 12 Mb/s-ə qədər
  • Aşağı Sürət– 1,5 Mb/s-ə qədər

Avtobusda əmrlər USB host(məsələn, PC), 127-yə qədər müxtəlif cihazı birləşdirə bilərsiniz. Bu kifayət deyilsə, başqa bir host əlavə etməlisiniz. Bundan əlavə, cihazın özünün hosta məlumat göndərə/qəbul edə bilməməsi vacibdir; bu, ev sahibinin cihazın özü ilə əlaqə saxlamasıdır;

Haqqında demək olar ki, bütün məqalələr USBİstifadə olunan termini görmüşəm son nöqtə", lakin bunun nə olduğu adətən çox qeyri-müəyyən şəkildə yazılır. Beləliklə, son nöqtə cihazın bir hissəsidir USB, özünəməxsus identifikatoru var. Hər bir cihaz USBçoxlu son nöqtələri ola bilər. Ümumiyyətlə, son nöqtə sadəcə yaddaş sahəsidir USB hər hansı bir məlumatın saxlanıla biləcəyi cihaz (məlumat buferi). Və sonda bunu əldə edirik - hər bir cihazın avtobusda özünəməxsus ünvanı var USB, və bu cihazın hər bir son nöqtəsinin öz nömrəsi var. bu kimi)

Gəlin bir az kənara çıxaq və interfeysin “hardware” hissəsi haqqında danışaq.

İki növ bağlayıcı var - Tip A və Tip B.

Artıq şəkildən aydın olduğu kimi A növü həmişə ev sahibi ilə qarşılaşır. Bunlar kompüterlərdə və noutbuklarda gördüyümüz bağlayıcılardır. Bağlayıcılar B növü həmişə qoşulmuş USB cihazlarına baxın. USB kabel müxtəlif rəngli 4 naqildən ibarətdir. Əslində, qırmızı güc (+5 V), qara torpaq, ağ və yaşıl məlumat ötürülməsi üçündür.

Şəkildə göstərilənlərə əlavə olaraq, USB konnektorları üçün digər variantlar da var, məsələn, mini-USB və digərləri, yaxşı, siz artıq bilirsiniz 😉

Yəqin ki, məlumatların ötürülməsi üsuluna bir az toxunmağa dəyər, lakin biz buna daha dərindən getməyəcəyik) Beləliklə, məlumatı avtobusla ötürərkən USB kodlaşdırma prinsipindən istifadə edilir NRZİ(inversiya ilə sıfıra qayıtmaq yoxdur). Məntiqi “1” ötürmək üçün D+ xəttinin səviyyəsini +2,8 V-dan yuxarı qaldırmaq, D- xəttinin səviyyəsini isə +0,3 V-dan aşağı endirmək lazımdır. Sıfır ötürmək üçün vəziyyət əksinədir - ( D- > 2.8 V) və (D+< 0.3 В).

Cihazların enerji təchizatını da müzakirə etməliyik USB. Və burada da bir neçə variant mümkündür.

Birincisi, qurğular avtobusdan qidalana bilər, sonra onları iki sinfə bölmək olar:

  • Aşağı güc
  • Yüksək güc

Burada fərq ondadır aşağı güc cihazlar daha çox istehlak edə bilməz 100 mA. A cihazlar yüksək güc artıq istehlak etməməlidir 100 mA yalnız konfiqurasiya mərhələsində. Ev sahibi tərəfindən konfiqurasiya edildikdən sonra onların istehlakı qədər ola bilər 500 mA.

Bundan əlavə, cihazların öz enerji təchizatı ola bilər. Bu halda, onlar qədər ala bilərlər 100 mA avtobusdan və hər şeyi mənbəyinizdən götürün)

Hamısı belə görünür, yavaş-yavaş ötürülən məlumatların strukturuna keçək. Yenə də bizim üçün ən çox bu maraqlıdır 😉

Bütün məlumatlar ötürülür kadr, müntəzəm olaraq göndərilir. Öz növbəsində, hər bir çərçivə ibarətdir əməliyyatlar. Bəlkə də bu şəkildə daha aydın olacaq:

Hər çərçivəyə bir paket daxildir , sonra müxtəlif son nöqtələr üçün əməliyyatlar izlənilir və hamısı paketlə başa çatır EOF (Çərçivənin Sonu). Tam dəqiq desək, onda EOF- bu, sözün adi mənasında tam paket deyil - bu, məlumat mübadiləsinin qadağan olunduğu vaxt intervalıdır.

Hər bir əməliyyat aşağıdakı formaya malikdir:

İlk paket (adlanır Token plastik torba) cihazın ünvanı haqqında məlumatı ehtiva edir USB, həmçinin bu əməliyyatın nəzərdə tutulduğu son nöqtənin nömrəsi. Bundan əlavə, bu paketdə əməliyyatın növü haqqında məlumat saxlanılır (hansı növlərin olduğunu müzakirə edəcəyik, lakin bir az sonra =)). – onunla hər şey aydındır, bu ev sahibi və ya son nöqtə tərəfindən ötürülən məlumatlardır (əməliyyat növündən asılı olaraq). Son paket - Vəziyyət

“Paket” sözü interfeysə münasibətdə dəfələrlə eşidilib. USB, buna görə də bunun nə olduğunu anlamaq vaxtıdır. Paketdən başlayaq Token:

Paketlər Tokenüç növ var:

  • Quraşdırma

Ona görə bunu dedim..) Paketin növündən asılı olaraq sahə dəyəri PID V Token paket aşağıdakı dəyərləri qəbul edə bilər:

  • Token paket növü OUT – PID=0001
  • Token paketinin növü IN – PID = 1001
  • Token paket növü SETUP – PID = 1101
  • Token paket növü SOF – PID=0101

Gəlin paketin növbəti komponentinə keçək Token- sahələr ÜnvanSon nöqtə- ehtiva edir USB cihazının ünvanı və son nöqtə nömrəsi, nəzərdə tutulmuşdur əməliyyat.

Nə sahədir CRC– bu yoxlama məbləğidir, bu aydındır.

Burada başqa bir mühüm məqam da var. PID 4 bit daxildir, lakin ötürülmə zamanı onlar ilk 4 bitin çevrilməsi ilə əldə edilən daha 4 bitlə tamamlanır.

Beləliklə, növbəti sırada - yəni məlumat paketi.

Burada hər şey paketdəki kimidir Token, yalnız cihazın ünvanı və son nöqtə nömrəsi əvəzinə, burada ötürülən məlumatımız var.

Bizə fikir vermək qalır – onunla hər şey aydındır, bu ev sahibi və ya son nöqtə tərəfindən ötürülən məlumatlardır (əməliyyat növündən asılı olaraq). Son paket - paketlər və SOF paketləri:

Budur PID yalnız iki dəyər qəbul edə bilər:

  • Paket düzgün qəbul edildi - PID=0010
  • Paket qəbul edərkən xəta - PID = 1010

Və nəhayət paketlər:

Burada yeni bir sahə görürük Çərçivə– o, ötürülən çərçivənin nömrəsini ehtiva edir.

Nümunə olaraq USB cihazına məlumatların yazılması prosesinə baxaq. Yəni, qeyd çərçivəsinin strukturunun bir nümunəsini nəzərdən keçirin.

Çərçivə, xatırladığınız kimi, əməliyyatlardan ibarətdir və aşağıdakı formaya malikdir:

Bütün bu əməliyyatlar nədir? Gəlin bunu indi anlayaq! Əməliyyat QURULUM:

Əməliyyat OUT:

Eynilə, USB cihazından məlumatları oxuyarkən çərçivə belə görünür:

Əməliyyat QURULUM artıq gördük, əməliyyata baxaq IN 😉

Gördüyünüz kimi, bütün bu əməliyyatlar yuxarıda müzakirə etdiyimiz kimi eyni quruluşa malikdir)

Ümumiyyətlə, düşünürəm ki, bu gün üçün kifayətdir 😉 Bu kifayət qədər uzun məqalədir, ümid edirəm ki, USB interfeysini yaxın gələcəkdə praktikada tətbiq etməyə çalışacağıq!