Typy sdh multiplexerov. SDH multiplexory. "Digitálne transportné siete SDH"

  • 31.10.2019

Zdroj údajov - alebo ovládač alebo zariadenie v závislosti od smeru - potom sa odošle dátový paket. Vo väčšine prípadov sa operácia končí cieľom odoslania dát. Pakety ACK označujú prijaté dáta, HAC znamená, že dáta neboli prijaté, alebo STALL, čo znamená, že koncový bod je zablokovaný.

Pohyb ďalej USB je regulovaná jednotkou času snímky. Dĺžka každého rámca určuje čas a beží pri 1 kHz, takže existuje 1 000 snímok za sekundu: jedna za milisekundu. Na začiatku každého rámca začiatku rámca (SOF) sa po zbernici odošle paket, ktorý umožňuje izochrónnym zariadeniam synchronizovať sa s komunikačným spojením.
Koncept rámcov je kľúčom k zaisteniu toho, že komunikačný kanál má šírku pásma zbernice medzi rôznymi konkurenčnými zariadeniami. USB vývojári uvážiť, že by nebolo možné udržiavať viacero simultánnych prúdov izochrónnej komunikácie pri vysokej vzorkovacej frekvencii so systémom, v ktorom každé zariadenie musí prerušiť hostiteľa pre každú vzorku údajov, ktorá sa má preniesť. Preto navrhli systém tak, aby izochrónne zariadenia mali zaručenú šírku pásma tým, že im v každom rámci pridelili zlomok času.
Najmenej 10 percent z každého rámca je vyhradených na použitie v riadiacich prenosoch. Tento zlomok môže byť zvýšený systémovým softvérom, ak sa výkon považuje za malý, riadením paketov, ktoré sú nadmerne oneskorené. Maximálna nepretržitá priepustnosť nad rýchlosťou USB musí byť nižšia ako 90 percent prenosovej rýchlosti.
Časť alebo celý zostávajúci čas v každom rámci môže byť prenášaný cez komunikačné kanály izochrónnych zariadení. Skutočný podiel pridelený každému komunikačnému kanálu je vopred dohodnutý pri vytvorení komunikačného kanála. To zaisťuje, že každú milisekundu je možné preniesť určité množstvo údajov. Akákoľvek zostávajúca šírka pásma je k dispozícii pre iné typy prenosu.
Izochrónne zariadenia musia mať dátovú vyrovnávaciu pamäť a jeden rámec a schopnosť odoslať každý blok na zbernici ako jednu transakciu. Na prijímacom konci sú dáta bez vyrovnávacej pamäte obnovené v reálnom čase. Napríklad zvukové zariadenie pracujúce v kvalite CD a vzorkovacej frekvencii 44,1 kHz odošle deväť snímok so 44 vzorkami na snímku, po ktorých bude nasledovať jedna snímka so 45 vzorkami. Po uložení do vyrovnávacej pamäte zdroja a zrušení vyrovnávacej pamäte v cieli bude pri poskytovaní údajov niekoľko milisekúnd latencia, ale rýchlosť doručenia - ktorá je dôležitá pre udržanie kvality - zostane zachovaná.
Prerušenie prekladu má tiež do určitej miery kritický čas. Keď sú prepojenia vytvorené na prerušenie koncového bodu, nie je špecifikovaná požadovaná doba prístupu k zbernici od 1 do 255 ms (10 a 255 ms v prípade zariadení s nízkou rýchlosťou). Systémový softvér sa pýta na koncový bod prerušenia v intervale, ktorý zaisťuje, že ak sa operácia prerušenia ešte neskončila, berie sa do úvahy na požadované časové obdobie.
Chyba pri spracovaní
Boli zabudované významné funkcie kontroly chýb a spracovania chýb USB aby ste sa uistili, že ide o spoľahlivý spôsob pripojenia periférnych zariadení k vášmu počítaču. Integrita údajov musí byť porovnateľná s internou rozširujúcou zbernicou.
Imunita proti poškodeniu dát v dôsledku šumu bola zabezpečená použitím diferenciálnej logiky komunikačných kanálov a tienených káblov. Ak sa vyskytnú chyby, vykoná sa cyklická kontrola redundancie (kontrolné súčty) oddelene pre každé kontrolné pole paketových dát a umožňuje 100-percentnú obnovu jednobitových aj dvojbitových chýb. Závažné chyby možno odhaliť s vysokou mierou istoty.
V protokole správ je zabudovaný samoopravný mechanizmus s časovým limitom pre stratené a neplatné pakety. Niektoré chyby sú zabudované do hardvéru. Hostiteľský radič odošle transakcie zlyhania trikrát, kým nahlási chybu klientskemu softvéru.
Prerušenie a prenos dát sa spoja do paketu, ktorý poskytne potvrdenie, že dáta boli prijaté, alebo ak nie, vyžiadajú si ich opätovné odoslanie. Týmto spôsobom je zaručené doručenie týchto údajov, aj keď je čas potrebný na doručenie kratší.
Pri izochrónnych údajoch nie je možné opakovať neúspešný prenos údajov. Pretože počas každého rámca je v komunikačnom kanáli pridelený iba jeden "Slot", opätovné odoslanie údajov oneskorí prenos následných vzoriek údajov, čím sa naruší načasovanie prvkov prenosu údajov. Preto sa neposiela paket, ale dáta, ktoré musia byť prijaté „tak, ako sú“.
Záver
Univerzálna sériová zbernica poskytuje všestranný a flexibilný spôsob pripojenia širokej škály periférnych zariadení nízkej a strednej rýchlosti k vášmu počítaču za relatívne nízku cenu. Jeho inštalácia, pripojenie a konfigurácia znamená, že je oveľa jednoduchšie inštalovať a udržiavať periférne zariadenia ako zariadenia využívajúce sériové, paralelné alebo proprietárne rozhrania.

USB (Universal Serial Bus) je štandardné rozšírenie počítačovej architektúry zamerané na integráciu s telefónmi a zariadeniami spotrebnej elektroniky.

Výhody autobusu:

  • USB zariadenie je možné pripojiť k počítaču kedykoľvek, aj keď je zapnuté;
  • keď počítač zistí pripojené USB zariadenie, automaticky sa ho opýta, aby zistil jeho možnosti a požiadavky;
  • načíta ovládač a keď sa zariadenie odpojí, ovládač sa automaticky vyloží;
  • USB zariadenie nepoužíva prepojky, DIP prepínače, nikdy nespôsobuje konflikty prerušení, DMA, pamäte;
  • rozširujúce USB huby umožňujú pripojenie veľkého počtu zariadení (až 127 zariadení) na jednu zbernicu;
  • nízke náklady na USB zariadenia.

Príchod USB umožnil USB flash disk.

História vzniku a vývoja rozhrania USB

Prvá verzia rozhrania USB počítača sa objavila 15. januára 1996. Projekt iniciovala aliancia 7 veľkých výrobných spoločností Intel, DEC, IBM, Northen Telecom, Compaq.

Dôvodom pre vznik nového štandardu na prenos informácií bola túžba zjednodušiť prepojenie PC s periférnymi zariadeniami. Hlavným cieľom štandardu bolo vytvoriť pre používateľov možnosť využívať také rozhranie, ktoré by malo maximálnu jednoduchosť, univerzálnosť a využívalo princíp Plug & Play alebo hot-plugging.

To by umožnilo za prevádzky pripojiť k PC rôzne vstupno-výstupné zariadenia s podmienkou okamžitého automatického rozpoznania typu a modelu pripojeného zariadenia. Tiež bol stanovený cieľ - zbaviť sa problému s nedostatkom vnútorných zdrojov prerušení na systémovej zbernici.

Všetky tieto úlohy boli úspešne vyriešené do konca roku 1996 a na jar 1997 sa začali objavovať prvé počítače vybavené USB konektormi. Plná podpora pre USB zariadenia bola realizovaná až koncom roku 1998 v operačnom systéme Windows98 a až od tejto etapy sa začal mimoriadne rýchly vývoj a uvádzanie periférnych zariadení vybavených týmto rozhraním.

Skutočná masová adopcia USB začala rozšíreným prijatím ATX skríň a základných dosiek okolo roku 1997-1998. Apple si nenechal ujsť príležitosť využiť dosiahnutý pokrok a 6. mája 1998 predstavil svoj prvý iMac vybavený aj podporou USB.

Tento štandard sa zrodil v čase, keď už existovalo podobné rozhranie na sériový prenos dát vyvinuté spoločnosťou Apple Computer a nazývalo sa FireWare alebo IEE1394. Rozhranie USB bolo vytvorené ako alternatíva k IEE1394 a nemalo ho nahradiť, ale existovať paralelne s už existujúcim typom pripojenia.

Prvá verzia USB mala nejaké problémy s kompatibilitou a niekoľko chýb v implementácii. Výsledkom bolo, že v novembri 1998 vyšla špecifikácia USB 1.1.

Špecifikácia USB 2.0 bola predstavená v apríli 2000. Uplynul však viac ako rok, kým bol prijatý ako štandard. Potom sa začalo masívne predstavenie druhej verzie univerzálneho sériového autobusu. Jeho hlavnou výhodou bolo 40-násobné zvýšenie rýchlosti prenosu dát. Ale okrem toho tu boli aj iné inovácie. Takto sa objavili nové typy konektorov Mini-B a Micro-USB, bola pridaná podpora technológie USB On-The-Go (umožňuje zariadeniam USB vymieňať si údaje medzi sebou bez účasti hostiteľa USB), bolo možné na nabíjanie pripojených zariadení použite napätie dodávané cez USB.

Ako funguje zbernica USB

USB umožňuje výmenu údajov medzi hostiteľským počítačom a rôznymi periférnymi zariadeniami (CP). Podľa špecifikácie USB môžu byť zariadeniami (zariadeniami) rozbočovače, funkcie alebo kombinácia oboch. Rozbočovač poskytuje iba ďalšie body na pripojenie zariadení k zbernici. Funkčné zariadenie USB poskytuje systému ďalšie funkcie, ako je pripojenie ISDN, digitálny joystick, reproduktory s digitálnym rozhraním atď. Zložené zariadenie, ktoré implementuje niekoľko funkcií, sa javí ako rozbočovač s niekoľkými zariadeniami.

Celý USB systém je riadený hostiteľským radičom, čo je hardvérový a softvérový podsystém počítača. Zbernica vám umožňuje pripájať, konfigurovať, používať a odpájať zariadenia, zatiaľ čo hostiteľ a samotné zariadenia bežia.

USB zbernica je zameraná na hostiteľa: jediný master, ktorý riadi výmenu, je hostiteľský počítač a všetky periférne zariadenia, ktoré sú k nemu pripojené, sú výlučne podriadené. Fyzická topológia zbernice USB je viacvrstvová hviezda. V jeho hornej časti je hostiteľský radič kombinovaný s koreňovým rozbočovačom. Hub je rozdeľovacie zariadenie, navyše môže byť zdrojom energie pre zariadenia, ktoré sú k nemu pripojené. Každý port rozbočovača môže byť priamo pripojený k periférnemu zariadeniu alebo medziľahlému rozbočovaču; zbernica umožňuje až 5 úrovní kaskádovania rozbočovačov (nepočítajúc root). Každý medziľahlý rozbočovač má viacero výstupných portov na pripojenie periférnych zariadení (alebo výstupných rozbočovačov) a jeden vstupný port na pripojenie ku koreňovému rozbočovaču alebo výstupnému portu upstream rozbočovača.

Dáta z pripojených zariadení sa zbiehajú do USB hostiteľa a tiež zabezpečuje interakciu s počítačom. Všetky zariadenia sú zapojené do hviezdicovej topológie. Na zvýšenie počtu aktívnych USB portov môžete použiť rozbočovače USB. Takto získate analóg logickej štruktúry "strom". Takýto strom môže mať až 127 vetiev na hostiteľský radič a úroveň vnorenia rozbočovačov USB by nemala presiahnuť päť. Okrem toho môže mať jeden hostiteľ USB viacero hostiteľských radičov, čo úmerne zvyšuje maximálny počet pripojených zariadení.

Náboje sú dvoch typov. Niektoré jednoducho zvyšujú počet USB portov v jednom počítači, zatiaľ čo iné umožňujú pripojenie viacerých počítačov. Druhá možnosť umožňuje viacerým systémom používať rovnaké zariadenia. V závislosti od rozbočovača je možné prepínanie vykonať manuálne alebo automaticky.

Jedno fyzické zariadenie pripojené cez USB možno logicky rozdeliť na „podzariadenia“, ktoré vykonávajú určité špecifické funkcie. Napríklad webová kamera môže mať vstavaný mikrofón - ukázalo sa, že má dve podzariadenia: na prenos zvuku a videa.

Prenos údajov prebieha cez špeciálne logické kanály. Každému USB zariadeniu je možné priradiť až 32 kanálov (16 prijímacích a 16 vysielacích). Každý kanál sa pripája ku konvenčne nazývanému „koncový bod“. Koncový bod môže prijímať údaje alebo ich prenášať, ale nemôže to robiť súčasne. Skupina koncových bodov potrebných na fungovanie funkcie sa nazýva rozhranie. Výnimkou je „nulový“ koncový bod, ktorý slúži na konfiguráciu zariadenia.

Keď sa k hostiteľovi USB pripojí nové zariadenie, začne sa proces priraďovania identifikátora. Najprv sa do zariadenia odošle resetovací signál. Súčasne dochádza k určeniu rýchlosti, s akou môže byť uskutočnená výmena dát. Potom sa zo zariadenia načítajú konfiguračné informácie a priradí sa mu jedinečná sedembitová adresa. Ak je zariadenie podporované hostiteľom, načítajú sa všetky potrebné ovládače na prácu s ním, po čom je proces dokončený. Reštartovaním USB hostiteľa sa vždy priradia ID a adresy všetkým pripojeným zariadeniam.

Na rozdiel od rozširujúcich zberníc (ISA/EISA, PCI, PC Card), kde program interaguje so zariadeniami prístupom k fyzickým adresám pamäťových buniek, I/O portom, prerušeniam a DMA kanálom, aplikácie interagujú s USB zariadeniami iba cez programové rozhranie. Toto rozhranie nezávislé od zariadenia poskytuje systémový softvér ovládača USB.

Na pripojenie periférnych zariadení k USB zbernici sa používa štvoržilový kábel, pričom dva vodiče (krútený pár) v diferenciálnom zapojení slúžia na príjem a prenos dát a dva vodiče na napájanie periférneho zariadenia. Vďaka zabudovanému napájaciemu vedeniu umožňuje USB zbernica pripojiť periférne zariadenia bez vlastného zdroja napájania (maximálny prúd spotrebovaný zariadením cez napájacie vedenia USB zbernice by nemal presiahnuť 500 mA).

Kódovanie údajov

Zbernica využíva diferenciálnu metódu prenosu D + a D- signálov cez dva vodiče. Všetky dáta sú zakódované pomocou metódy nazývanej NRZI s bitovým plnením (NRZI - Non Return to Zero Invert).

Namiesto kódovania logických úrovní ako úrovní napätia, USB definuje logickú 0 ako zmenu napätia a logickú 1 ako konštantné napätie. Táto metóda je modifikáciou metódy kódovania normálneho potenciálu NRZ (Non Return to Zero), kde sa na reprezentáciu 1 a 0 používajú potenciály dvoch úrovní, ale v metóde NRZI potenciál použitý na zakódovanie aktuálneho bitu závisí od potenciálu, ktorý bol použitý na zakódovanie predchádzajúceho bitu. Ak je aktuálny bit 0, potom je aktuálny potenciál prevrátenou hodnotou potenciálu predchádzajúceho bitu, bez ohľadu na jeho hodnotu. Ak má aktuálny bit hodnotu 1, potom aktuálny potenciál zopakuje predchádzajúci. Je zrejmé, že ak údaje obsahujú nuly, potom je pre prijímač a vysielač celkom jednoduché udržiavať synchronizáciu - úroveň signálu sa bude neustále meniť. Ak však údaje obsahujú dlhú sekvenciu jednotiek, úroveň signálu sa zmení a desynchronizácia je možná. Pre spoľahlivý prenos dát je preto potrebné z kódov vylúčiť príliš dlhé sekvencie jedničok. Táto akcia sa nazýva plnenie bitov: po každých šiestich jednotkách sa automaticky pridá 0.

Existujú iba tri možné bajty so šiestimi po sebe nasledujúcimi: 00111111, 01111110, 111111100.

Plnenie môže zvýšiť počet prenášaných bitov až o 17%, ale v praxi je táto hodnota oveľa menšia. Pre zariadenia pripojené k USB zbernici je kódovanie transparentné: USB radiče vykonávajú kódovanie a dekódovanie automaticky.

Autobusové režimy

  • Pomalá rychlosť podporované štandardmi 1.1 a 2.0. Špičková rýchlosť prenosu dát - 1,5 Mbit / s (187,5 Kb / s). Najčastejšie sa používa pre HID zariadenia (klávesnice, myši, joysticky).
  • Plná rýchlosť podporované štandardmi 1.1 a 2.0. Špičková rýchlosť prenosu dát - 12 Mbps (1,5 Mbps). Pred vydaním bol USB 2.0 najrýchlejším operačným režimom.
  • Vysoká rýchlosť podporované štandardom 2.0 a 3.0. Špičková rýchlosť prenosu dát - 480 Mbps (60 Mbps).
  • Super rýchlosť podporované štandardom 3.0. Špičková rýchlosť prenosu dát - 4,8 Gb / s (600 MB / s).

Prenos dát

Mechanizmus prenosu údajov je asynchrónny a založený na blokoch. Blok prenášaných dát sa nazýva USB rámec alebo USB rámec a prenáša sa v pevnom časovom intervale. Operácie s príkazmi a dátovými blokmi sa realizujú pomocou logickej abstrakcie nazývanej kanál. Externé zariadenie je tiež rozdelené do logických abstrakcií nazývaných koncové body. Kanál je teda logickým spojením medzi hostiteľským radičom a koncovým bodom externého zariadenia. Kanál možno prirovnať k otvorenému súboru.

Predvolený kanál sa používa na prenos príkazov (a údajov zahrnutých v príkazoch) a na prenos údajov sa otvárajú buď streamingové kanály alebo kanály správ.

Informácie o kanáli sa prenášajú vo forme paketov (Packet). Každý paket začína poľom SYNC (SYNChronization), za ktorým nasleduje PID (Packet IDentifier).

USB systém by mal byť rozdelený do troch logických úrovní so špecifickými pravidlami pre interakciu. USB zariadenie obsahuje rozhranie, logické a funkčné časti. Hostiteľ je tiež rozdelený na tri časti – rozhranie, systém a softvér. Každá časť je zodpovedná len za určitý rozsah úloh.

Operácia výmeny dát medzi aplikačným programom a zbernicou USB sa vykonáva prenosom vyrovnávacej pamäte cez nasledujúce úrovne: Úroveň klientskeho softvéru v hostiteľovi:

  • zvyčajne reprezentovaný ovládačom zariadenia USB;
  • poskytuje interakciu používateľa s operačným systémom na jednej strane a systémovým ovládačom na strane druhej.

Úroveň hostiteľského systému USB (USBD, ovládač univerzálnej sériovej zbernice):

  • riadi číslovanie zariadení na zbernici;
  • riadi distribúciu šírky pásma zbernice a napájania;
  • spracováva vlastné požiadavky ovládačov.

Hostiteľský radič rozhrania zbernice USB(HCD, ovládač hostiteľského radiča):

  • transformuje I/O požiadavky na dátové štruktúry, na ktorých hostiteľský radič vykonáva fyzické transakcie;
  • pracuje s registrami hostiteľského radiča.

Vrstva klientskeho softvéru určuje typ prenosu údajov požadovaný na vykonanie operácie požadovanej aplikáciou. Po určení typu prenosu dát táto vrstva prenesie do systémovej vrstvy:

  • pamäťová vyrovnávacia pamäť nazývaná vyrovnávacia pamäť klienta;
  • paket požiadavky na vstup/výstup (IRP) označujúci typ požadovanej operácie.
  • IRP obsahuje iba informácie o požiadavke (adresa a dĺžka vyrovnávacej pamäte v RAM). Systémový ovládač USB spracuje požiadavku priamo.

Na správu prostriedkov USB je potrebná vrstva systémového ovládača USB. Je zodpovedný za to, že:

  • pridelenie šírky pásma zbernice USB;
  • priraďovanie adries logických zariadení každému fyzickému zariadeniu USB;
  • plánovanie transakcií.

Prenos dát medzi koncovým bodom a softvérom sa logicky uskutočňuje pridelením kanála a výmenou údajov cez tento kanál.Klientský softvér posiela požiadavky IPR do vrstvy USBD. Ovládač USBD rozdeľuje požiadavky na transakcie podľa nasledujúcich pravidiel:

  • vykonanie žiadosti sa považuje za dokončené, keď boli úspešne dokončené všetky transakcie, ktoré ju tvoria;
  • všetky podrobnosti o spracovaní transakcie (ako je čakanie na pripravenosť, opakovaná transakcia v prípade chyby, nedostupnosť príjemcu atď.) nie sú oznámené klientskemu softvéru;
  • Softvér môže iba spustiť požiadavku a čakať buď na dokončenie požiadavky, alebo na jej vypršanie;
  • zariadenie môže signalizovať závažné chyby, čo má za následok abnormálne ukončenie požiadavky, na čo je upozornený pôvodca požiadavky.

Ovládač hostiteľského radiča prijíma zoznam transakcií od ovládača zbernicového systému a vykonáva nasledujúce akcie:

  • naplánuje vykonanie prijatých transakcií ich pridaním do zoznamu transakcií;
  • získa ďalšiu transakciu zo zoznamu a prenesie ju do vrstvy hostiteľského radiča rozhrania USB zbernice;
  • sleduje stav každej transakcie až do jej dokončenia.

Hostiteľský radič rozhrania zbernice USB vykresľuje snímky. Rámce sa prenášajú sériovým bitovým prenosom metódou NRZI.

takto:

  • každý rámec pozostáva zo správ s najvyššou prioritou, ktorých zloženie tvorí hostiteľský ovládač;
  • každý prevod pozostáva z jednej alebo viacerých transakcií;
  • každá transakcia pozostáva z dávok;
  • každý paket pozostáva z ID paketu, údajov (ak existujú) a kontrolného súčtu.


Typy prenosu dát

Špecifikácia zbernice definuje štyri rôzne typy prenosu pre koncové body.

Kontrolné prevody- sú používané hostiteľom na konfiguráciu zariadenia počas pripojenia, na ovládanie zariadenia a získavanie informácií o stave počas prevádzky. Protokol zabezpečuje garantované doručenie takýchto balíkov. Dĺžka dátového poľa riadiacej správy nemôže presiahnuť 64 bajtov pri plnej rýchlosti a 8 bajtov pri nízkej rýchlosti. Pre takéto balíky je hostiteľovi zaručené, že pridelí 10 % šírky pásma.

Hromadné prenosy dát- používajú sa vtedy, keď je potrebné zabezpečiť garantované doručenie dát od hostiteľa k funkcii alebo od funkcie k hostiteľovi, avšak doba doručenia nie je obmedzená. Tento prenos zaberá celú dostupnú šírku pásma zbernice. Pakety majú dátové pole 8, 16, 32 alebo 64 bajtov. Tieto prevody majú najnižšiu prioritu, pri veľkom zaťažení autobusu môžu byť zavesené. Povolené len pri plnej prenosovej rýchlosti. Takéto obaly využívajú napríklad tlačiarne alebo skenery.

Prerušenie prenosov- sa používajú, keď je potrebné prenášať jednotlivé malé dátové pakety. Každý paket je potrebné preniesť v obmedzenom čase. Prenosy sú spontánne a nemali by sa vykonávať pomalšie, ako si zariadenie vyžaduje. Dátové pole môže mať až 64 bajtov pri plnej rýchlosti a až 8 bajtov pri nízkej rýchlosti. Časový limit služby je nastavený v rozsahu 1-255 ms pre plnú rýchlosť a 10-255 ms pre nízku rýchlosť. Takéto prenosy sa používajú vo vstupných zariadeniach, ako je myš a klávesnica.

Izochrónne prevody- používajú sa na výmenu dát v "reálnom čase", kedy je potrebné v každom časovom intervale preniesť presne definované množstvo dát, ale nie je zaručené doručenie informácií (prenos dát prebieha bez opakovania v prípade výpadkov, straty paketov je dovolené). Takéto prenosy zaberajú vopred dohodnutú časť šírky pásma zbernice a majú vopred určené oneskorenie doručenia. Izochrónne prenosy sa bežne používajú v multimediálnych zariadeniach na prenos zvukových a obrazových údajov, ako je napríklad digitálny prenos hlasu. Izochrónne prenosy sú oddelené tak, že koncové body – zdroje alebo príjemcovia údajov – sú synchronizované so systémom. Rozlišujte medzi asynchrónnymi, synchrónnymi a adaptívnymi triedami zariadení, z ktorých každá zodpovedá vlastnému typu USB kanála.

Všetky operácie prenosu údajov spúšťa iba hostiteľ, bez ohľadu na to, či prijíma údaje alebo ich odosiela na periférne zariadenie. Všetky neuhradené transakcie sú uložené v štyroch zoznamoch podľa typu prevodu. Zoznamy sa neustále aktualizujú o nové požiadavky. Plánovanie operácií prenosu informácií v súlade s požiadavkami usporiadanými vo forme zoznamov vykonáva hostiteľ v intervale jedného rámca. Doručovanie žiadostí sa vykonáva v súlade s nasledujúcimi pravidlami:

  • Izochrónne prenosy majú najvyššiu prioritu;
  • po spracovaní všetkých izochrónnych prenosov systém pokračuje v údržbe prenosov s prerušením;
  • v poslednom kole sú obsluhované požiadavky na prenos dátových polí;
  • po uplynutí 90 % zadaného intervalu sa hostiteľ automaticky prepne na obsluhu požiadaviek na prenos riadiacich príkazov bez ohľadu na to, či sa mu podarilo plne obslúžiť ostatné tri zoznamy alebo nie.

Súlad s týmito pravidlami zabezpečuje, že aspoň 10 % šírky pásma zbernice USB je vždy pridelených na riadenie prenosov. Ak je prenos všetkých riadiacich paketov dokončený pred uplynutím ich pridelenej časti plánovacieho intervalu, zostávajúci čas použije hostiteľ na dátové prenosy.

Verzie špecifikácií

Vývoj špecifikácií pre USB zbernicu prebieha v rámci medzinárodnej neziskovej organizácie USB Implementers Forum (USB-IF), ktorá združuje vývojárov a výrobcov zariadení s USB zbernicou.

Od polovice roku 1996 sa počítače vyrábajú s integrovaným radičom USB implementovaným čipovou sadou základnej dosky.

Prvá verzia špecifikácie USB 1.0 podporuje dva režimy prenosovej rýchlosti medzi zariadením a počítačom:

  • Nízka rýchlosť (1,5 Mbit/s) pre zariadenia, ako sú myši, klávesnice a joysticky;
  • Plná rýchlosť (12 Mbit/s), pre modemy a skenery.

Na jeseň roku 1998 vyšla verzia 1.1 - opravila objavené problémy prvého vydania.

Hlavné technické vlastnosti USB 1.1:

  • Dostatočne vysoký maximálny výmenný kurz - až 12 Mbit / s.
  • Maximálna dĺžka kábla pre vysokú prenosovú rýchlosť je 4,5 m.
  • Maximálny počet pripojených zariadení (vrátane multiplikátorov) je až 127.
  • Je možné pripojiť zariadenia s rôznymi výmennými kurzami.
  • Použitie ďalších zariadení a terminátorov nie je potrebné.
  • Napájacie napätie pre periférne zariadenia je 5 V.
  • Maximálny odber prúdu na jedno zariadenie je 500 mA.

Na jar roku 2000 bola zverejnená špecifikácia USB 2.0, ktorá poskytuje 40-násobné zvýšenie šírky pásma zbernice (až 480 Mbps vo vysokorýchlostnom režime). Zariadenia USB 2.0 sa však dostali do hlavného prúdu v roku 2002, keď sa nové rozhranie konečne uchytilo.

Druhá verzia špecifikácie USB 2.0 vám umožňuje použiť ďalší vysokorýchlostný režim (480 Mbit / s) pre zariadenia, ako sú pevné disky, CD-ROM, digitálne fotoaparáty. Šírka pásma 480 Mbps je dostatočná pre externé disky, MP3 prehrávače, smartfóny a digitálne fotoaparáty, ktoré potrebovali prenášať veľké množstvo dát. Špecifikácia USB 2.0 tiež plne podporuje zariadenia vyvinuté pre prvú verziu. Ovládače a rozbočovače automaticky zisťujú verziu špecifikácie podporovanú zariadením. Zbernica umožňuje pripojiť až 127 zariadení vzdialených od počítača na vzdialenosť až 25 m (pomocou medziľahlých rozbočovačov).

Od svojho širokého prijatia sa USB 2.0 podarilo úplne nahradiť sériové a paralelné rozhrania.

V súčasnosti sú široko používané zariadenia vyrobené v súlade so špecifikáciou USB 2.0.

USB 3.0

USB 3.0 podporuje maximálnu prenosovú rýchlosť 5 Gbps.

Konektor USB 3.0 typu A

Zatiaľ čo hlavným cieľom USB 3.0 je zvýšiť dostupnú šírku pásma, nový štandard efektívne optimalizuje spotrebu energie. USB 3.0 má štyri stavy pripojenia označené ako U0-U3. Stav pripojenia U0 zodpovedá aktívnemu prenosu dát a U3 uspí zariadenie. Ak je pripojenie nečinné, potom v stave U1 budú možnosti prijímania a prenosu údajov deaktivované. Stav U2 ide ešte o krok ďalej deaktiváciou interných hodín.

Konektor USB 3.0 typu B

V dôsledku toho môžu pripojené zariadenia prejsť do stavu U1 ihneď po dokončení prenosu údajov, čo by malo poskytnúť hmatateľné výhody v spotrebe energie v porovnaní s USB 2.0.

Okrem rôznych stavov napájania sa štandard USB 3.0 líši od USB 2.0 vyšším podporovaným prúdom. Ak verzia USB 2.0 poskytovala prúdový prah 500 mA, tak v prípade nového štandardu sa obmedzenie posunulo na hranicu 900 mA. Prúd pri inicializácii pripojenia sa zvýšil zo 100 mA pre USB 2.0 na 150 mA pre USB 3.0. Oba parametre sú veľmi dôležité pre prenosné pevné disky, ktoré zvyčajne vyžadujú mierne vyššie prúdy. Predtým bol problém vyriešený použitím prídavného USB konektora, ktorý sa napájal z dvoch portov, no na prenos dát sa používal iba jeden.

USB káble a konektory

Na rozdiel od objemných, drahých káblov paralelnej zbernice ATA a najmä zbernice SCSI s rôznymi konektormi a zložitými pravidlami pripojenia je kabeláž USB jednoduchá a elegantná.

existuje päť druhov USB konektorov:

Zľava doprava: micro USB, mini USB, typ B, konektor typu A, konektor typu A

  • micro USB- používané v najmenších zariadeniach, ako sú prehrávače a mobilné telefóny;
  • mini USB- často sa vyskytuje aj na prehrávačoch, mobilných telefónoch a súčasne na digitálnych fotoaparátoch, PDA a podobných zariadeniach;
  • B-typ- konektor plnej veľkosti, inštalovaný v tlačiarňach, skeneroch a iných zariadeniach, kde veľkosť nie je veľmi dôležitá;
  • Typ A (prijímač)- konektor inštalovaný v počítačoch (alebo na USB extenderoch), kde je pripojený konektor typu A;
  • Typ A (zástrčka)- konektor zapojený priamo do počítača do príslušného konektora.

Systém káblov a USB konektorov vám nedovolí robiť chyby pri pripájaní zariadení. Zásuvky typu „A“ sa hodia iba do portov rozbočovača, zástrčky typu „A“ na káble periférneho rozbočovača alebo rozbočovača. Zásuvky a zástrčky typu B sa používajú iba pre káble, ktoré sú odpojené od periférnych zariadení a predradených portov rozbočovačov (z „malých“ zariadení - myši, klávesnice atď. sa káble zvyčajne neodpájajú). Rozbočovače a zariadenia poskytujú možnosti pripojenia a odpojenia za chodu.

Maximálna dĺžka USB kábla môže byť 5 metrov. Toto obmedzenie bolo zavedené s cieľom skrátiť čas odozvy zariadenia. Hostiteľský radič čaká na príchod údajov počas obmedzeného času a ak sa oneskorí, spojenie sa môže stratiť.

Kábel na podporu plnorýchlostnej zbernice je krútený pár, tienený a možno ho použiť aj na nízkorýchlostnú prevádzku. Kábel na prevádzku len pri minimálnej rýchlosti (napríklad na pripojenie myši) môže byť ľubovoľný a môže byť odtienený.

Literatúra

  1. A. Kostsov, V. Kostsov, PC Iron. Užívateľská príručka. - M .: Martin, 2006 .-- 480 s.

Dnešný článok bude venovaný, ako už názov napovedá, diskusii o základoch USB rozhranie... Uvažujme nad základnými konceptmi, štruktúrou rozhrania, prídeme na to, ako prebieha prenos dát a v blízkej budúcnosti to všetko zavedieme do praxe 😉 Skrátka, začnime!

Existuje množstvo rôznych špecifikácií USB... Všetko to začalo tým USB 1.0 a USB 1.1, potom sa rozhranie vyvinulo do USB 2.0, konečná špecifikácia sa objavila pomerne nedávno USB 3.0... Ale v súčasnosti je najbežnejšia implementácia USB 2. 0.

No, na začiatok, hlavné body a charakteristiky. USB 2.0 podporuje tri režimy prevádzky:

  • Vysoká rýchlosť- až 480 Mb/s
  • Plná rýchlosť- až 12 Mb/s
  • Pomalá rychlosť- až 1,5 Mb/s

Veliteľ autobusu USB hostiteľ(napr. PC), ku ktorému môžete pripojiť až 127 rôznych zariadení. Ak to nestačí, musíte pridať ešte jedného hostiteľa. Okrem toho je dôležité, aby samotné zariadenie nemohlo odosielať / prijímať dáta do / z hostiteľa, je potrebné, aby hostiteľ sám oslovoval zariadenie.

Takmer vo všetkých článkoch o USB ktorý som videl používať výraz „ koncový bod“, Ale to, čo to je, je zvyčajne napísané dosť nejasne. Koncový bod je teda súčasťou zariadenia USB s vlastným jedinečným identifikátorom. Každé zariadenie USB môže mať viacero koncových bodov. Celkovo vzaté - koncový bod je len oblasťou pamäte USB zariadenie, v ktorom je možné ukladať akékoľvek dáta (dátová vyrovnávacia pamäť). A nakoniec dostaneme toto – každé zariadenie má svoju jedinečnú adresu na zbernici USB a každý koncový bod tohto zariadenia má svoje vlastné číslo. tak to je ono)

Trochu odbočíme a povieme si niečo o „železnej časti“ rozhrania.

Existujú dva typy konektorov - Typ A a typ B.

Ako je už zrejmé z obrázku Typ A vždy odkazuje na hostiteľa. Toto sú konektory, ktoré vidíme na počítačoch a notebookoch. Konektory Typ B vždy si pozrite pripojiteľné USB zariadenia. USB kábel pozostáva zo 4 vodičov rôznych farieb. No vlastne, červená je napájanie (+5 V), čierna je uzemnená, biela a zelená je na prenos dát.

Okrem tých, ktoré sú znázornené na obrázku, existujú aj iné verzie konektorov USB, napríklad mini-USB a iné, veď to už viete 😉

Pravdepodobne stojí za to sa trochu dotknúť spôsobu prenosu údajov, ale nebudeme sa do toho ponoriť) Takže pri prenose údajov cez zbernicu USB využíva sa princíp kódovania NRZI(bez návratu na nulu s inverziou). Na prenos logickej „1“ je potrebné zvýšiť úroveň vedenia D + nad +2,8 V a úroveň vedenia D- znížiť pod +0,3 V. Pre prenos nuly je situácia naopak - (D-> 2,8 V) a (D +< 0.3 В).

Samostatne stojí za to diskutovať o sile zariadení. USB... A tu je tiež niekoľko možností.

Po prvé, zariadenia môžu byť napájané zo zbernice, potom ich možno rozdeliť do dvoch tried:

  • Slaby prud
  • Veľká sila

Rozdiel je v tom slaby prud zariadenia nemôžu spotrebovať viac ako 100 mA... A zariadenia veľká sila by už nemali konzumovať 100 mA len vo fáze konfigurácie. Po nakonfigurovaní hostiteľom môže byť ich spotreba až 500 mA.

Okrem toho môžu mať zariadenia vlastné napájanie. V tomto prípade môžu dostať až 100 mA z autobusu a všetko ostatné si vezmite zo svojho zdroja)

Zdá sa, že toto je všetko, prejdime k štruktúre prenášaných dát. Napriek tomu nás toto zaujíma najviac 😉

Všetky informácie sa prenášajú personál ktoré sa odosielajú v pravidelných intervaloch. Na druhej strane sa každý rám skladá z transakcií... Tu to bude možno jasnejšie:

Súčasťou každého rámu je balenie , potom nasledujú transakcie pre rôzne koncové body, no a všetko končí dávkou EOF (End Of Frame). Teda presnejšie EOF- toto nie je celkom paket v obvyklom zmysle slova - toto je časový interval, počas ktorého je zakázaná výmena dát.

Každá transakcia vyzerá takto:

Prvý balík (tzv Token plastový sáčok) obsahuje informácie o adrese zariadenia USB a tiež číslo koncového bodu, ktorému je táto transakcia určená. Okrem toho tento balík uchováva informácie o type transakcie (o ktorých typoch sa budeme rozprávať, ale o niečo neskôr =)). - s ním je všetko jasné, ide o údaje, ktoré prenáša hostiteľ alebo koncový bod (v závislosti od typu transakcie). Posledný balík je Postavenie- určené na kontrolu úspešnosti prijímania údajov.

Už veľakrát bolo v súvislosti s rozhraním vyslovené slovo „balík“. USB, takže je čas zistiť, čo to je. Začnime s balíčkom Token:

Balíčky Token sú troch typov:

  • Nastaviť

To je to, o čom som vám hovoril ..) V závislosti od typu balíka, hodnoty poľa PID v Token balík môže mať nasledujúce hodnoty:

  • Tokenový paket typu OUT - PID = 0001
  • Tokenový paket typu IN - PID = 1001
  • Tokenový balík typu SETUP - PID = 1101
  • Tokenový balík typu SOF - PID = 0101

Prechod na ďalšiu časť balenia Token- polia Adresa a Koncový bod- obsahujú Adresa USB zariadenia a číslo koncového bodu ktorý je určený transakcie.

No, pole CRC- toto je kontrolný súčet, s týmto je to jasné.

Je tu ešte jeden dôležitý bod. PID obsahuje 4 bity, no pri prenose sú doplnené o ďalšie 4 bity, ktoré sa získajú invertovaním prvých 4 bitov.

Takže ďalší v poradí - teda dátový paket.

Všetko je tu v podstate rovnaké ako v balení Token, len namiesto adresy zariadenia a čísla koncového bodu tu máme prenášané dáta.

Zostáva nám to zvážiť Postavenie balíky a SOF balíky:

Tu PID môže nadobúdať iba dve hodnoty:

  • Balík bol prijatý správne - PID = 0010
  • Chyba pri prijímaní paketu - PID = 1010

A nakoniec balíky:

Tu vidíme nové pole Rám- obsahuje číslo prenášaného rámca.

Pozrime sa ako príklad na proces zápisu dát do USB zariadenia. To znamená, zvážte príklad štruktúry záznamového rámca.

Rám, ako si pamätáte, pozostáva z transakcií a vyzerá takto:

Aké sú všetky tieto transakcie? Poďme na to teraz! Transakcia NASTAVIŤ:

Transakcia VON:

Podobne pri čítaní údajov z USB zariadenia rám vyzerá takto:

Transakcia NASTAVIŤ už sme videli, pozrime sa na transakciu IN 😉

Ako vidíte, všetky tieto transakcie majú rovnakú štruktúru, ako sme diskutovali vyššie)

Vo všeobecnosti si myslím, že na dnes stačí 😉 Vyšiel z toho celkom dlhý článok, dúfam, že sa v blízkej budúcnosti pokúsime implementovať rozhranie USB do praxe!

Začnime s minimom:
vrátane 18f2455 - knižnica pre použitý MK
--
enable_digital_io () - prepnutie všetkých vstupov do digitálneho režimu
--
alias Tlačidlo je pin_B7 - keďže máme tlačidlo pripojené, deklarujeme to
pin_B7_direction = vstup - tlačidlo nám slúži na vstup
--
- jeden riadok - a máme všetko, čo potrebujete na prácu s USB CDC
include usb_serial - knižnica pre prácu s usb
--
usb_serial_init () --inicializácia USB CDC
navždy slučka- hlavný cyklus, vykonáva sa neustále
usb_serial_flush () - usb aktualizácia. Tento postup vykonáva všetko potrebné
- akcie na udržanie spojenia s PC
koncová slučka

Kompiláciou tohto kódu, zapísaním výsledného HEX súboru do MK pomocou bootloadera a spustením zariadenia môžete sledovať, ako je v systéme definované nové zariadenie: Virtuálny com-port.

Teraz, keď už zariadenie funguje, naučíme ho komunikovať.

Na čítanie prijatého bajtu existuje funkcia usb_serial_read ( byte ) : boolovská hodnota. Ak existuje prijatý bajt, uloží ho do zadanej premennej a vráti pravda, inak sa vráti falošné.

Existuje postup na odoslanie bajtu usb_serial_data... Je maskovaný ako premenná, takže na odoslanie bajtu mu stačí priradiť hodnotu odosielaného bajtu.

Pred hlavnou slučkou deklarujme premennú o veľkosti bajtov, v hlavnej slučke skontrolujeme prítomnosť prijatých bajtov, a ak existujú, pošleme ich späť.

vrátane 18f2455
--
enable_digital_io ()
--
alias Tlačidlo je pin_B7
pin_B7_direction = vstup
--
--
vrátane usb_serial
--
usb_serial_init ()
var bajt ch - deklarujeme premennú
navždy slučka- hlavná slučka
usb_serial_flush ()
ak(usb_serial_read (ch)) potom- ak je prijatý bajt, zapíše sa do ch
usb_serial_data = ch - poslať prijatý bajt späť
koniec Ak
koncová slučka

Kompilujeme, držíme tlačidlo, žonglujeme so zdrojom, spúšťame bootloader, meníme firmvér, spúšťame.
Zariadenie bolo v systéme opäť detekované, teraz potrebujeme softvér, aby sme mohli otestovať fungovanie zariadenia.

Zatiaľ čo nemáme vlastný, používame hotový terminál: Použil som program RealTerm.
Otvoríme port s požadovaným číslom a odošleme údaje.


A dostaneme späť, čo sme poslali. Takže všetko funguje ako má.

softvér

Náš mikrokontrolér je teda schopný prijímať bajty a okamžite ich posielať späť. Teraz si napíšme vlastný softvér na komunikáciu s ním (použijem Delphi).

Vytvoríme nový projekt, rozložíme potrebné komponenty vo forme:
SpinEdit1 - na zadanie čísla portu
Tlačidlo 1 - na vytvorenie spojenia
Tlačidlo 2 - na odpojenie spojenia
SpinEdit2 - pre desiatkový bajtový vstup
Tlačidlo 3 - na odoslanie bajtu
Memo1 - zobrazenie prijatých informácií.

Ako už bolo spomenuté vyššie, s com-portom musíte pracovať rovnako ako s bežným textovým súborom: pomocou funkcií CreateFile, WriteFile a ReadFile.

Aby sme nezachádzali do detailov, zoberme si hotovú knižnicu pre prácu s com-portom: ComPort.

Na každé tlačidlo zavesíme potrebnú úlohu a získame konečný kód:

jednotka Unit1;

rozhranie

Používa
Windows, Správy, SysUtils, Varianty, Triedy, Grafika, Ovládacie prvky, Formuláre,
Dialógové okná, StdCtrls, Spin, ComPort;

Typ
TForm1 = trieda (TForm)
SpinEdit1: TSpinEdit;
Button1: TButton;
Button2: TButton;
SpinEdit2: TSpinEdit;
Tlačidlo 3: TButton;
Memo1: TMemo;
procedure OnRead (Sender: TObject; ReadBytes: pole Byte);
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure FormDestroy (Sender: TObject);
procedure Button3Click (Sender: TObject);
súkromné
(súkromné ​​vyhlásenia)
Port: TComPort;
verejnosti
(Verejné vyhlásenia)
koniec;

var
Form1: TForm1;
num: celé číslo;
implementáciu

Procedure TForm1.Button1Click (Sender: TObject);
začať
Port: = TComPort.Create (SpinEdit1.Value, br115200); // vytvorte spojenie
Port.OnRead: = OnRead; // vytvorte stream na čítanie prijatých údajov
Button2.Enabled: = true; // aktivácia tlačidla na ukončenie spojenia
koniec;

Procedure TForm1.Button2Click (Sender: TObject);
začať
Port.Free; // zatvorte spojenie
Button2.Enabled: = false; // deaktivovať tlačidlo
koniec;

Procedure TForm1.Button3Click (Sender: TObject);
začať
if Button2.Enabled then Port.Write ();
koniec;

Procedure TForm1.FormDestroy (Sender: TObject);
začať
ak Button2.Enabled then
Port.Free;
koniec;

Procedure TForm1.OnRead (Sender: TObject; ReadBytes: pole Byte);
var
i: celé číslo;
začať
for i: = Low (ReadBytes) až High (ReadBytes) do // prejsť cez pole prijatých bajtov
začať
Memo1.Text: = Memo1.Text + "." + InttoHex (ReadBytes [i], 2); // pridajte do okna svoju HEX hodnotu
inc (počet); // spočítajte počet prijatých bajtov
koniec;
ak num> 10 tak začnite
Memo1.Lines.Add (""); // zalomenie riadku
číslo: = 0;
koniec;
koniec;

Spustíme, vytvoríme spojenie, pošleme bajty:

Náš najjednoduchší terminál je teda pripravený na prácu s najjednoduchším zariadením USB.

Ako vidíte, čítanie a zápis sa vykonáva pomocou dynamických bajtových polí.

Spracovaním prijatých informácií je možné zostaviť potrebný výmenný protokol vhodný pre aktuálnu úlohu.

vrátane 18f2455
--
enable_digital_io ()
--
alias Tlačidlo je pin_B7
pin_B7_direction = vstup
--
--
vrátane usb_serial
--
usb_serial_init ()
var bajt ch
var bajt i - deklarujeme druhú premennú
navždy slučka- hlavná slučka
usb_serial_flush ()
ak(usb_serial_read (ch)) potom- ak je prijatý bajt, vykonáme potrebné akcie
prípad ch z - iterovať cez číslo bajtu
0: usb_serial_data = 0xff
1: usb_serial_data = tlačidlo - stav tlačidla odosielania
INAK blokovať- ak sa dostane niečo iné
pre 16 použitím i slučka- poslať 10 bajtov s dátami
usb_serial_data = ch + i - ch až ch + 15
koncová slučka
koncový blok
koncový prípad
koniec Ak
koncová slučka

Pridané vlastnosti

Ak sa pri tomto zastavíte, dostanete bežný článok s podrobným popisom príkladu využitia knižnice, ktorých je na internete dostatok. Preto doplním trochu hlbšie informácie.

Zjednodušenie odosielania údajov

Posielanie informácií po jednom bajte nie je vždy pohodlné. Knižnica môže často prísť vhod vytlačiť... Obsahuje procedúry na odosielanie dát všetkých možných dĺžok vo všetkých možných formátoch: byte, hex, dec, bin, boolean, čo môže zjednodušiť výstup dát v programe.
> zahrnúť tlač
...
var dwordúdajov
print_dword_hex (usb_serial_data, data)

Názvy všetkých príkazov nájdete v súbore knižnice.

Čaká sa na pripojenie k PC

Ak je pred spustením hlavného cyklu mikrokontroléra potrebné najprv nadviazať spojenie s PC, môžete pred neho pridať riadky
zatiaľ čo(usb_cdc_line_status () == 0x00) slučka
koncová slučka

Spojte číslo portu so zariadením

Ak všetko necháte tak, ako je, systém pridelí prvé voľné číslo portu pri každom novom pripojení. To znamená, že ho budete musieť neustále sledovať.
Aby sa tomu zabránilo, pred pripojením USB knižnice musí byť zariadeniu pridelená jedinečná hodnota sériového čísla:
Číslo môže mať ľubovoľnú dĺžku a môže obsahovať rôzne znaky.
konštantný bajt USB_STRING3 =
{
24 , - dĺžka poľa
0x03, - bDescriptorType
"0" , 0x00,
"1" , 0x00,
"2" , 0x00,
"3" , 0x00,
"4" , 0x00,
"5" , 0x00,
"6" , 0x00,
"7" , 0x00,
"8" , 0x00,
"9" , 0x00,
"X" 0x00
}

Zmeňte názov zariadenia na svoj vlastný

Pred inštaláciou ovládačov môžete zmeniť názov zariadenia viditeľný v systéme deklarovaním poľa s názvom, ako je sériové číslo, čo je potrebné urobiť pred pripojením knižnice USB.
konštantný bajt USB_STRING2 =
{
28 , --
0x03, - bDescriptorType
"D", 0x00,
"e", 0x00,
"m", 0x00,
"o", 0x00,
" " , 0x00,
"B", 0x00,
"o", 0x00,
"a", 0x00,
"r", 0x00,
"d", 0x00,
" " , 0x00,
"=" , 0x00,
")" 0x00
}

Ale bohužiaľ, po nainštalovaní ovládačov zariadenie zmení názov na ten, ktorý je uvedený v súbore .inf, takže názov zmeníme aj tam.


DESCRIPTION = "Demo CDC"

Organizujeme automatické pripojenie zariadenia

Bohužiaľ, neexistujú žiadne priame spôsoby, ako túto úlohu splniť, takže musíte vymýšľať.

Najprv musíte svojmu zariadeniu priradiť jedinečného výrobcu a hodnotu produktu, aby ste ho mohli ľahko identifikovať medzi stovkami iných štandardných firmvérov CDC.
VID a PID sa vydávajú za peniaze, tak poďme cestou Číňanov: potichu si vezmeme pre seba evidentne slobodné hodnoty.

Firmvér:
Pred pripojením USB knižnice musia byť vo firmvéri deklarované dve premenné

konštantné slovo USB_SERIAL_PRODUCT_ID = 0xFF10
konštantné slovo USB_SERIAL_VENDOR_ID = 0xFF10

Namiesto FF10 môžete vložiť ľubovoľné dve slová (2 bajty). Konečný výsledok je uvedený v priloženom archíve.

Ovládače:
Keďže ovládače nie sú určené pre našu kombináciu VID a PID, pridajte naše hodnoty do súboru .inf ručne:


% DESCRIPTION % = Inštalácia ovládača, USB \ VID_FF10 & PID_FF10


% DESCRIPTION % = Inštalácia ovládača, USB \ VID_FF10 & PID_FF10

softvér:
Ak chcete zachytiť udalosti pripojenia / odpojenia zariadenia, pripojte knižnicu ComponentUSB. Nepovažujem za potrebné vysvetľovať každý riadok: všetky zmeny je možné vidieť v priloženom projekte.

Výsledok

Na screenshote je to zle vidieť, no tlačidlo odoslať je aktívne len vtedy, keď je pripojené zariadenie, pričom každých 50 ms program odošle požiadavku na prijatie stavu tlačidla (čo je však nesprávne, pretože stlačenie tlačidla musia byť spracované na MC).

Ako vidíte, organizácia výmeny dát medzi MK a PC cez USB nie je najťažšia úloha. Výsledné spojenie môže byť použité nielen na konečné účely: je tiež vhodné na ladenie programu. Odoslanie výsledkov výpočtov, aktuálnych stavov registrov a premenných do počítača je totiž oveľa prehľadnejšie ako blikanie dvojice LED v morzeovke.

A na záver: radím vám pozrieť sa do zdrojového kódu náladovej lampy. Tam nájdete celkom dobrú možnosť na spracovanie prijatých údajov na usporiadanie pohodlného protokolu výmeny.