Werkingsprincipe van de USB-interface. Hoe het werkt: USB. USB fysieke en logische architectuur

Laten we beginnen met een minimum:
inclusief 18f2455 - bibliotheek voor de gebruikte MK
--
enable_digital_io () - alle ingangen naar digitale modus schakelen
--
alias Knop is pin_B7 - aangezien we een knop hebben aangesloten, zullen we deze declareren
pin_B7_direction = invoer - de knop werkt voor ons om binnen te komen
--
- één regel - en we hebben alles wat je nodig hebt om met USB CDC te werken
include usb_serial - bibliotheek voor het werken met usb
--
usb_serial_init () - --initialiseer USB CDC
voor altijd lus- de hoofdcyclus wordt constant uitgevoerd
usb_serial_flush () - usb-update. Deze procedure voert alle noodzakelijke
- acties om een ​​verbinding met een pc te behouden
eindlus

Door deze code te compileren, het resulterende HEX-bestand met een bootloader naar de MK te schrijven en het apparaat te starten, kunt u zien hoe een nieuw apparaat in het systeem wordt gedefinieerd: Virtuele com-poort.

Nu het apparaat al werkt, gaan we het leren communiceren.

Om de ontvangen byte te lezen is er een functie: usb_serial_read ( byte ) : booleaans. Als er een ontvangen byte is, wordt deze opgeslagen in de opgegeven variabele en wordt geretourneerd waar, anders keert het terug vals.

Er is een procedure om een ​​byte te verzenden usb_serial_data... Het is vermomd als een variabele, dus om een ​​byte te verzenden, volstaat het om het de waarde van de verzonden byte toe te wijzen.

Laten we een variabele ter grootte van een byte declareren vóór de hoofdlus, in de hoofdlus zullen we controleren op de aanwezigheid van ontvangen bytes en, indien aanwezig, deze terugsturen.

inclusief 18f2455
--
enable_digital_io ()
--
alias Knop is pin_B7
pin_B7_direction = invoer
--
--
inclusief usb_serial
--
usb_serial_init ()
var byte ch - we declareren een variabele
voor altijd lus- Hoofdlus
usb_serial_flush ()
als(usb_serial_read (ch)) dan- als een byte wordt ontvangen, wordt deze naar ch geschreven
usb_serial_data = ch - stuur de ontvangen byte terug
stop als
eindlus

We compileren, houden de knop ingedrukt, jongleren met de voeding, starten de bootloader, wijzigen de firmware en voeren het uit.
Het apparaat is weer gedetecteerd in het systeem, nu hebben we software nodig om de werking van het apparaat te testen.

Hoewel we die niet hebben, gebruiken we een kant-en-klare terminal: ik gebruikte het RealTerm-programma.
Wij openen de poort met het gewenste nummer en versturen de gegevens.


En we krijgen terug wat we hebben gestuurd. Dus alles werkt zoals het hoort.

Software

Onze microcontroller kan dus bytes ontvangen en deze onmiddellijk terugsturen. Laten we nu onze eigen software schrijven om met hem te communiceren (ik zal Delphi gebruiken).

We maken een nieuw project, strooien de benodigde componenten in de vorm:
SpinEdit1 - voor het specificeren van het poortnummer
Knop1 - om een ​​verbinding tot stand te brengen
Knop2 - om de verbinding te verbreken
SpinEdit2 - voor invoer van decimale bytes
Button3 - om een ​​byte te verzenden
Memo1 - om de ontvangen informatie weer te geven.

Zoals hierboven vermeld, moet u met de com-poort op dezelfde manier werken als met een gewoon tekstbestand: met behulp van de functies CreateFile, WriteFile en ReadFile.

Laten we, om niet in details te treden, een kant-en-klare bibliotheek nemen om met een com-poort te werken: ComPort.

We hangen de benodigde taak aan elke knop en krijgen de definitieve code:

eenheid Eenheid1;

koppel

Toepassingen
Windows, Berichten, SysUtils, Varianten, Classes, Graphics, Controls, Forms,
Dialogen, StdCtrls, Spin, ComPort;

Type
TForm1 = klasse (TForm)
SpinEdit1: TSpinEdit;
Knop1: TKnop;
Knop2: TKnop;
SpinEdit2: TSpinEdit;
Knop3: TKnop;
Memo1: TMemo;
procedure OnRead (Afzender: TObject; ReadBytes: array van Byte);
procedure Button1Click (Afzender: TObject);
procedure Button2Click (Afzender: TObject);
procedure FormDestroy (Afzender: TObject);
procedure Button3Click (Afzender: TObject);
privaat
(Privé aangiften)
Poort: TComPort;
openbaar
(Openbare verklaringen)
einde;

var
Form1: TForm1;
aantal: geheel getal;
implementatie

Procedure TForm1.Button1Click (Afzender: TObject);
beginnen
Poort: = TComPort.Create (SpinEdit1.Value, br115200); // maak een verbinding
Port.OnRead: = OnRead; // maak een stream om de ontvangen gegevens te lezen
Button2.Enabled: = waar; // activeer de knop om de verbinding te sluiten
einde;

Procedure TForm1.Button2Click (Afzender: TObject);
beginnen
Poort.Gratis; // sluit de verbinding
Button2.Ingeschakeld: = false; // schakel de knop uit
einde;

Procedure TForm1.Button3Click (Afzender: TObject);
beginnen
indien Button2.Enabled dan Port.Write ();
einde;

Procedure TForm1.FormDestroy (Afzender: TObject);
beginnen
als Button2.Enabled dan
Poort.Gratis;
einde;

Procedure TForm1.OnRead (Afzender: TObject; ReadBytes: array van byte);
var
ik: geheel getal;
beginnen
voor i: = Laag (ReadBytes) naar Hoog (ReadBytes) do // doorloop de array van ontvangen bytes
beginnen
Memo1.Text: = Memo1.Text + "." + InttoHex (ReadBytes [i], 2); // voeg de HEX-waarde toe aan het venster
inc (getal); // tel het aantal ontvangen bytes
einde;
als aantal> 10 begin dan
Memo1.Regels.Toevoegen (""); // wikkel de lijn
aantal: = 0;
einde;
einde;

We starten, maken verbinding, sturen bytes:

Dus onze eenvoudigste terminal is klaar om te werken met het eenvoudigste USB-apparaat.

Zoals u kunt zien, wordt lezen en schrijven gedaan met dynamische byte-arrays.

Door de ontvangen informatie te verwerken, is het mogelijk om het benodigde uitwisselingsprotocol samen te stellen dat geschikt is voor de huidige taak.

inclusief 18f2455
--
enable_digital_io ()
--
alias Knop is pin_B7
pin_B7_direction = invoer
--
--
inclusief usb_serial
--
usb_serial_init ()
var byte ch
var byte I - we declareren de tweede variabele
voor altijd lus- Hoofdlus
usb_serial_flush ()
als(usb_serial_read (ch)) dan- als een byte wordt ontvangen, voeren we de nodige acties uit
geval ch van - herhaal het bytenummer
0: usb_serial_data = 0xff
1: usb_serial_data = knop - status van de verzendknop
ANDERS blok- als er iets anders wordt ontvangen
voor 16 gebruik makend van I lus- stuur 10 bytes met gegevens
usb_serial_data = ch + i - ch naar ch + 15
eindlus
eindblok
eindgeval
stop als
eindlus

Extra functies

Als je hiermee stopt, krijg je een regelmatig artikel met een uitgebreide beschrijving van een voorbeeld van het gebruik van de bibliotheek, waarvan er genoeg op internet staan. Daarom zal ik wat meer diepgaande informatie toevoegen.

Verzendgegevens vereenvoudigen

Het is niet altijd handig om informatie één byte tegelijk te verzenden. Een bibliotheek kan vaak van pas komen afdrukken... Het bevat procedures voor het verzenden van gegevens van alle mogelijke lengtes in alle mogelijke formaten: byte, hex, dec, bin, boolean, wat de uitvoer van gegevens in een programma kan vereenvoudigen.
> inclusief print
...
var dword gegevens
print_dword_hex (usb_serial_data, data)

De naam van alle commando's vindt u in het bibliotheekbestand.

Wachten op verbinding met pc

Als het vóór het starten van de hoofdcyclus van de microcontroller nodig is om eerst een verbinding met de pc tot stand te brengen, dan kunt u er regels voor toevoegen
terwijl(usb_cdc_line_status () == 0x00) lus
eindlus

Bind het poortnummer aan het apparaat

Als u alles laat zoals het is, wijst het systeem bij elke nieuwe verbinding het eerste vrije poortnummer toe. Dit betekent dat u hem altijd in de gaten zult moeten houden.
Om dit te voorkomen, moet het apparaat een unieke waarde voor het serienummer krijgen voordat de usb-bibliotheek wordt aangesloten:
Het nummer kan elke lengte hebben en verschillende tekens bevatten.
const-byte USB_STRING3 =
{
24 , - arraylengte
0x03, - bDescriptorType
"0" , 0x00,
"1" , 0x00,
"2" , 0x00,
"3" , 0x00,
"4" , 0x00,
"5" , 0x00,
"6" , 0x00,
"7" , 0x00,
"8" , 0x00,
"9" , 0x00,
"X".0x00
}

Verander de apparaatnaam in die van jou

U kunt de apparaatnaam die zichtbaar is in het systeem wijzigen voordat u de stuurprogramma's installeert door een array aan te geven met een naam zoals het serienummer. Dit moet worden gedaan voordat u de USB-bibliotheek aansluit.
const-byte USB_STRING2 =
{
28 , --
0x03, - bDescriptorType
"D", 0x00,
"e", 0x00,
"m", 0x00,
"O", 0x00,
" " , 0x00,
"B", 0x00,
"O", 0x00,
"een", 0x00,
"R", 0x00,
"D", 0x00,
" " , 0x00,
"=" , 0x00,
")" .0x00
}

Maar helaas, na het installeren van de stuurprogramma's, zal het apparaat de naam wijzigen in de naam die is opgegeven in het .inf-bestand, dus we zullen de naam daar ook wijzigen.


BESCHRIJVING = "Demo CDC"

We organiseren automatische apparaatverbinding

Helaas zijn er geen directe manieren om deze taak te volbrengen, dus je moet het bedenken.

Allereerst moet u uw apparaat een unieke fabrikant- en productwaarde toewijzen om het gemakkelijk te kunnen identificeren tussen honderden andere standaard CDC-firmwares.
VID en PID worden uitgegeven voor geld, dus laten we het pad van de Chinezen volgen: we zullen stilletjes voor onszelf uiteraard gratis waarden nemen.

Firmware:
Er moeten twee variabelen in de firmware worden gedeclareerd voordat de USB-bibliotheek wordt aangesloten

const woord USB_SERIAL_PRODUCT_ID = 0xFF10
const woord USB_SERIAL_VENDOR_ID = 0xFF10

In plaats van FF10 kunt u twee willekeurige woorden (2 bytes) invoegen. Het eindresultaat is te vinden in het bijgevoegde archief.

chauffeurs:
Aangezien de stuurprogramma's niet bedoeld zijn voor onze combinatie van VID en PID, laten we onze waarden handmatig aan het .inf-bestand toevoegen:


% DESCRIPTION% = DriverInstall, USB \ VID_FF10 & PID_FF10


% DESCRIPTION% = DriverInstall, USB \ VID_FF10 & PID_FF10

Software:
Sluit de ComponentUSB-bibliotheek aan om de gebeurtenissen van het aansluiten/loskoppelen van een apparaat op te vangen. Ik vind het niet nodig om elke regel uit te leggen: alle wijzigingen zijn te zien in het bijgevoegde project.

Resultaat

Het is moeilijk te zien in de schermafbeelding, maar de verzendknop is alleen actief als er een aangesloten apparaat is, terwijl het programma elke 50 ms een verzoek verzendt om de status van de knop te ontvangen (wat echter verkeerd is, omdat het indrukken van de knop moet op het MC worden verwerkt).

Zoals je kunt zien, is het organiseren van gegevensuitwisseling tussen MK en pc via USB niet de moeilijkste taak. De resulterende verbinding kan niet alleen voor eindige doeleinden worden gebruikt: het is ook geschikt voor het debuggen van een programma. Het verzenden van de resultaten van berekeningen, de huidige toestanden van registers en variabelen naar een computer is immers veel duidelijker dan het knipperen van een paar LED's in morsecode.

En tot slot: ik raad je aan om in de broncode van de sfeerlamp te kijken. Daar vindt u een redelijk goede optie voor het verwerken van de ontvangen gegevens voor het organiseren van een handig uitwisselingsprotocol.

Koppel USB (Universal Serial Bus - Universal Serial Interface) is ontworpen om randapparatuur op een pc aan te sluiten. Maakt het mogelijk om op drie snelheden informatie uit te wisselen met randapparatuur (specificatie USB 2.0):

  • Lage snelheid ( Lage snelheid- LS) - 1,5 Mbit/s;
  • Volle snelheid ( Volle snelheid- FS) - 12 Mbps;
  • Hoge snelheid ( Hoge snelheid- HS) - 480 Mbps.
Een 4-aderige kabel wordt gebruikt om randapparatuur aan te sluiten: +5 V voeding, signaaldraden D + en D-, gemeenschappelijke draad.
USB-interface maakt verbinding met elkaar gastheer (gastheer) en apparaat. De host bevindt zich in de personal computer en regelt de werking van de gehele interface. Als u meer dan één apparaat op één USB-poort wilt aansluiten, past u naven (middelpunt- een apparaat dat verbinding biedt met de interface van andere apparaten). Root hub (root hub) bevindt zich in de computer en is rechtstreeks verbonden met de host. De USB-interface gebruikt een speciale term: "functie" is een logisch compleet apparaat dat een specifieke functie vervult. De USB-interfacetopologie is een set van 7 lagen ( laag): het eerste niveau bevat de host en root-hub, en het laatste bevat alleen functies. Een apparaat dat een hub en een of meer functies bevat, wordt genoemd composiet (Compound-apparaat:).
Een hub of feature-poort die verbinding maakt met een hub op een hoger niveau, wordt een upstream-poort genoemd ( stroomopwaartse poort), en een hub-poort die verbinding maakt met een hub of functie op een lager niveau, wordt een downstream-poort genoemd ( stroomafwaartse poort).
Alle gegevensoverdrachten op de interface worden geïnitieerd door de host. Gegevens worden verzonden als pakketten. De USB-interface gebruikt verschillende soorten pakketten:
  • tag pakket (symbolisch pakket) beschrijft het type en de richting van de gegevensoverdracht, het apparaatadres en het serienummer van het eindpunt (CT is het adresseerbare deel van het USB-apparaat); pakkettags zijn van verschillende typen: IN, UIT, SOF, OPSTELLING;
  • datapakket (datapakket) bevat de verzonden gegevens;
  • goedkeuringspakket: (handdruk pakket) is bedoeld voor het rapporteren van de resultaten van gegevensoverdracht; er zijn verschillende soorten kortingspakketten: ACK, NAK, KRAAM.
Elke transactie bestaat dus uit drie fasen: de overdrachtsfase van het tagpakket, de gegevensoverdrachtsfase en de onderhandelingsfase.
De USB-interface maakt gebruik van verschillende soorten informatieoverdracht.
  • Doorsturen bedienen (controle overdracht) wordt gebruikt voor apparaatconfiguratie en voor andere apparaatspecifieke doeleinden.
  • Streamen (bulkoverdracht) wordt gebruikt om relatief veel informatie te verzenden.
  • Doorsturen onderbreken (iterrupte overdracht) wordt gebruikt om een ​​relatief kleine hoeveelheid informatie over te dragen, waarbij tijdige verzending belangrijk is. Heeft een beperkte duur en verhoogde prioriteit boven andere soorten overdrachten.
  • Isochroon doorsturen (isochrone overdracht) wordt ook wel realtime streaming genoemd. De informatie die bij een dergelijke overdracht wordt verzonden, vereist een realtime schaal wanneer deze wordt gemaakt, verzonden en ontvangen.

Overdrachten streamen worden gekenmerkt door een gegarandeerd foutloze gegevensoverdracht tussen de host en de functie door overdrachtsfouten te detecteren en informatie opnieuw op te vragen.
Wanneer de host klaar is om gegevens van de functie te ontvangen, verzendt deze naar de functie in de fase van verzending van het vlagpakket. IN-pakket. Als reactie hierop stuurt de functie, in de fase van gegevensoverdracht, een pakket met gegevens naar de host of, als hij dit niet kan, verzendt NAK- of KRAAM-pakket. NAK- het pakket informeert over de tijdelijke onbeschikbaarheid van de functie om gegevens te verzenden, en KRAAM-pakket informeert over de noodzaak van tussenkomst van de gastheer. Als de host de gegevens met succes heeft ontvangen, verzendt deze functies in de onderhandelingsfase ACK
Wanneer de host klaar is om gegevens te verzenden, verzendt deze functies UIT-pakket gevolgd door een datapakket. Als de functie de gegevens met succes heeft ontvangen, wordt deze naar de host verzonden ACK-pakket, anders verzonden NAK- of KRAAM-pakket.
Controle overdrachten bevatten ten minste twee fasen: Opstellingsfase en status stadium... Tussen hen kan ook worden gevestigd fase van gegevensoverdracht. Opstellingsfase gebruikt om te presteren SETUP transacties, waarbij informatie naar de controle-CT-functie wordt gestuurd. SETUP transactie bevat OPSTELLING-pakket , datapakket en afstemmingspakket. Als het datapakket met succes door de functie is ontvangen, wordt het naar de host verzonden ACK-pakket. Anders eindigt de transactie.
V stadia van gegevensoverdracht controleoverdrachten bevatten een of meer IN- of UIT- transacties waarvan het overdrachtsprincipe hetzelfde is als bij streamingoverdrachten. Alle transacties in het stadium van gegevensoverdracht moeten in dezelfde richting worden uitgevoerd.
V status stadium de laatste transactie wordt gedaan, waarbij dezelfde principes worden gebruikt als bij streaming. De richting van deze transactie is het tegenovergestelde van die in de fase van gegevensoverdracht. De statusfase wordt gebruikt om het resultaat van de SETUP-fase en de gegevensoverdrachtfase te rapporteren. Statusinformatie wordt altijd doorgegeven van functie naar host. Bij controlerecord (Besturing schrijfoverdracht) de statusinformatie wordt verzonden in de fase van gegevensoverdracht van de statusfase van de transactie. Bij controle lezen (Controle Lezen Overdracht) de statusinformatie wordt geretourneerd in de onderhandelingsfase van de statusfase van de transactie, nadat de host een gegevenspakket met lengte nul heeft verzonden in de vorige fase van de gegevensoverdracht.
Overdrachten onderbreken kan bevatten IN- of UIT- doorsturen. Op vertoning van de bon IN-pakketfunctie kan een datapakket retourneren, NAK-pakket of KRAAM-pakket. Als de functie geen informatie heeft waarvoor een onderbreking vereist is, keert de functie terug in de fase van gegevensoverdracht NAK-pakket. Als de werking van CT met onderbreking wordt onderbroken, keert de functie terug KRAAM-pakket. Als onderbreking nodig is, retourneert de functie de benodigde informatie in de fase van gegevensoverdracht. Als de host de gegevens met succes heeft ontvangen, verzendt deze: ACK-pakket. Anders wordt het overeenkomende pakket niet door de host verzonden.
Isochrone transacties bevatten transmissie fase: en fase van gegevensoverdracht maar heb geen onderhandelingsfase:... Host stuurt IN- of UIT-teken, waarna, in de fase van CT-gegevensoverdracht (voor IN-teken) of host (voor UIT-teken) verzendt gegevens. Isochrone transacties ondersteunen de verzoeningsfase niet en verzenden gegevens opnieuw in geval van fouten.

Vanwege het feit dat de USB-interface een complex protocol voor informatie-uitwisseling implementeert, is een microprocessoreenheid vereist in het USB-interface-apparaat om het protocol te ondersteunen. Daarom is de belangrijkste optie bij de ontwikkeling van een interface-apparaat het gebruik van een microcontroller, die ondersteuning zal bieden voor het uitwisselingsprotocol. Momenteel produceren alle grote fabrikanten van microcontrollers producten die een USB-blok bevatten.

Bedrijf fabrikant Naam Beschrijving

Atmel
AT43301 LS/FS-hubcontroller 1-4 met gedeeld downlink-energiebeheer.
AT43312A LS / FS-hubcontroller 1-4 met individueel downlink-energiebeheer.
AT43320A Microcontroller op basis van AVR-kern. Heeft een ingebouwde USB-functie en een hub met 4 externe downstream-poorten die werken in LS / FS-modi, 512 bytes RAM, 32x8 registers voor algemeen gebruik, 32 programmeerbare pinnen, seriële en SPI-interfaces. De functie heeft 3 CT's met 8 byte FIFO's. De stroomafwaartse poorten van de hub worden afzonderlijk van stroom voorzien.
AT43321 Toetsenbordcontroller op basis van AVR-kern. Heeft een ingebouwde USB-functie en een hub met 4 externe downstream-poorten die werken in LS / FS-modi, 512 bytes RAM, 16 kbytes ROM, 32x8 registers voor algemene doeleinden, 20 programmeerbare uitgangen, seriële en SPI-interfaces. De functie heeft 3 CT's. De stroomafwaartse poorten van de hub worden afzonderlijk van stroom voorzien.
AT43324

Microcontroller op basis van AVR-kern. Heeft een ingebouwde USB-functie en een hub met 2 externe downstream-poorten die werken in LS / FS-modi, 512 bytes RAM, 16 kbytes ROM, 32x8 registers voor algemeen gebruik, 34 programmeerbare uitgangen. De toetsenbordmatrix kan 18x8 zijn. De controller heeft 4 uitgangen voor het aansluiten van LED's. De functie heeft 3 CT's. De stroomafwaartse poorten van de hub worden afzonderlijk van stroom voorzien.

AT43355 Microcontroller op basis van AVR-kern. Heeft een ingebouwde USB-functie en een hub met 2 externe downstream-poorten die werken in LS / FS-modi, 1 KB RAM, 24 KB ROM, 32x8 registers voor algemene doeleinden, 27 programmeerbare pinnen, seriële en SPI-interfaces, 12-kanaals 10-bit ADC. De functie heeft 1 controle-CT en 3 programmeerbare CT's met 64/64/8 byte FIFO's.
Fairchild Semiconductor USB100 Controller van manipulatoren (muis, trackball, joystick). Ondersteunt 2D/3D-muis, joystick met drie potentiometers, manipulator met 16 knoppen.

Intel
8x931Ax Microcontroller met MSC-51-architectuur. Heeft een ingebouwde USB-functie die werkt in LS / FS-modi, 256 bytes RAM, 0/8 kbytes ROM, 8x4 algemene registers, 32 programmeerbare uitgangen, een seriële interface, een toetsenbordbesturingsinterface. De functie heeft 3 CT's met 8/16/8 byte FIFO's.
8x931Hx Microcontroller met MSC-51-architectuur. Heeft een ingebouwde USB-functie en een hub met 4 externe downstream-poorten die werken in LS / FS-modi, 256 bytes RAM, 0/8 kB ROM, 8x4 algemene registers, 32 programmeerbare uitgangen, een seriële interface, een toetsenbord controle-interface. De functie heeft 3 CT's met 8/16/8 byte FIFO's.
8x930Ax Microcontroller met MSC-251-architectuur. Heeft een ingebouwde USB-functie die werkt in LS / FS-modi, 1024 bytes RAM, 0/8/16 kbytes ROM, 40 algemene registers, 32 programmeerbare pinnen, een seriële interface. De functie heeft 4 (6) CT's met FIFO's van 16/1024 (256) / 16 (32) / 16 (32) / (32) / (16) bytes.
8x930Hx Microcontroller met MSC-251-architectuur. Heeft een ingebouwde USB-functie en een hub met 4 externe downstream-poorten die werken in LS / FS-modi, 1024 bytes RAM, 0/8/16 kbytes ROM, 40 algemene registers, 32 programmeerbare pinnen, een seriële interface. De functie heeft 4 CT's met 16/1024/16/16 bytes FIFO-buffers.

Microchip
PIC16C745 Microcontroller met PIC-architectuur. Het heeft een ingebouwde USB-functie in LS-modus, 256 bytes RAM, 14336 bytes ROM, 22 programmeerbare pinnen, een seriële interface, een 5-kanaals 8-bit ADC.
PIC16C765 Microcontroller met PIC-architectuur. Het heeft een ingebouwde USB-functie in LS-modus, 256 bytes RAM, 14336 bytes ROM, 33 programmeerbare uitgangen, een seriële interface, een 8-kanaals 8-bit ADC.
PIC18F2450 Microcontroller met PIC-architectuur. Heeft een ingebouwde USB-functie in LS / FS-modus, 1536 bytes RAM, 16384 bytes ROM, 19 programmeerbare pinnen, seriële en SPI-interfaces, 5-kanaals 10-bit ADC. De functie heeft 8 CT's.
PIC18F2550 Microcontroller met PIC-architectuur. Heeft een ingebouwde USB-functie die werkt in LS / FS-modus, 1536 bytes RAM, 32768 bytes ROM, 19 programmeerbare pinnen, seriële, CAN- en SPI-interfaces, 5-kanaals 10-bit ADC. De functie heeft 8 CT's.
PIC18F4450 Microcontroller met PIC-architectuur. Heeft een ingebouwde USB-functie in LS / FS-modus, 1536 bytes RAM, 16384 bytes ROM, 34 programmeerbare pinnen, seriële, CAN- en SPI-interfaces, 8-kanaals 10-bit ADC. De functie heeft 8 CT's.
PIC18F4550 Microcontroller met PIC-architectuur. Het heeft een ingebouwde USB-functie die werkt in LS / FS-modus, 1536 bytes RAM, 32768 bytes ROM, 34 programmeerbare pinnen, seriële, CAN- en SPI-interfaces, 8-kanaals 10-bit ADC. De functie heeft 8 CT's.
Texas Instrumenten TUSB2036 LS / FS hub 1-3 controller met individueel stroombeheer van de stroomafwaartse poort.

Randapparatuur zoals muis, toetsenbord, webcam en printer worden meestal via USB-poorten op de computer aangesloten. In dit geval komt het vaak voor dat een of meerdere poorten niet meer werken. Dat wil zeggen, wanneer een USB-flashstation bijvoorbeeld is aangesloten op een computer, wordt het niet herkend, kan het toetsenbord of de muis vastlopen en reageert de printer mogelijk niet en drukt pagina's af.

Er zijn verschillende mogelijke redenen waarom sommige of alle USB-poorten op uw computer niet werken. Laten we proberen dit probleem te begrijpen en uit te zoeken wat er moet gebeuren om de normale werking van de computer te herstellen.

BIOS-instellingen controleren

Het eerste waar u op moet letten, zijn de BIOS-instellingen van de computer. Om het BIOS te openen, hebt u een functioneel toetsenbord nodig. Als het toetsenbord via USB op de computer is aangesloten en het werkt niet, dan moet je een toetsenbord met een PS/2-connector aansluiten. Anders kun je gewoon niets doen.

We gaan dus naar het BIOS, waarvoor u bij het opstarten van de computer op de enter-toets moet drukken, meestal DEL. Mogelijk is er nog een toets die op het scherm wordt weergegeven en wordt aangegeven in de handleiding van het moederbord. Zoek in het BIOS het gedeelte Geïntegreerde randapparatuur of het gedeelte Geavanceerd. Hier vindt u de subsectie "Configuratie van ingebouwde apparaten". Daarin bevinden zich de parameters die verantwoordelijk zijn voor de werking van USB-controllers: USB-functie of USB 2.0-controller. Deze parameters moeten zijn ingeschakeld. En als een van hen is uitgeschakeld (Uitgeschakeld), beweeg dan de muisaanwijzer erover en druk op Enter, waardoor het wordt ingeschakeld. Om ervoor te zorgen dat de aangebrachte wijzigingen niet opnieuw worden ingesteld, moet u ze opslaan door op F10 te drukken en het opslaan bevestigen door op de Y- of Enter-toets te drukken.

Controleer na het opnieuw opstarten van de computer of de USB-poorten werken. En zo niet, dan moet je de reden ergens anders zoeken.

USB-poorten aan de voorkant van de computer werken niet

Als een speciaal geval werkt alleen de USB op het voorpaneel mogelijk niet voor u. In een dergelijke situatie is het noodzakelijk om te controleren of de benodigde connectoren op het moederbord zijn aangesloten en of de draden niet beschadigd zijn. Open hiervoor de zijklep van de systeemeenheid en let op de connector aan de onderkant van het moederbord. Op het bord zelf staat een inscriptie USB1 of USB2, evenals op het blok zelf. De draden van het blok gaan naar het voorpaneel en als ze op één plek zijn losgekoppeld of gebroken, dan heb je de oorzaak van de storing gevonden. Beschadigde draden moeten worden aangesloten of vervangen. Het is niet overbodig om het contact in de connector op het moederbord te controleren. Let ook op het bord op het voorpaneel. Misschien is er trouwens een kortsluiting, zo'n kortsluiting kan worden veroorzaakt door opgehoopt stof. Zorg er daarom voor dat u de systeemeenheid stofvrij maakt.

Problemen met het apparaat zelf of de kabel

De volgende bron van problemen met USB kan de kabel zijn waarmee bijvoorbeeld de printer is aangesloten. Deze storing is eenvoudig te identificeren en op te lossen. We sluiten de USB-stick aan op de geteste connector. Als het werkt, proberen we andere bekende bruikbare apparatuur aan te sluiten met een verdachte kabel, bijvoorbeeld een USB-hub. Als het ook weigert te werken, dan zit de reden zeker in de kabel en moet deze worden vervangen.

Stroomstoringen

Er zijn situaties waarin er simpelweg niet genoeg stroom is voor alle apparaten. Als u bijvoorbeeld een externe harde schijf aansluit die twee USB-poorten tegelijk gebruikt, kan de printer of het toetsenbord worden uitgeschakeld. In dit geval is het vermogen van de voedingseenheid niet voldoende om alle verbruikers van energie te voorzien. In dit geval treedt het probleem mogelijk niet onmiddellijk op, maar enige tijd na het inschakelen van de computer. Er zijn verschillende manieren om uit de situatie te komen. Als je een voeding met laag vermogen hebt geïnstalleerd, bijvoorbeeld 300 W, dan is het logisch om deze te veranderen in een krachtigere, 450-600 W. U kunt ook een actieve USB-hub gebruiken (extern gevoed). Hiermee kunt u niet alleen het aantal aangesloten USB-apparaten vergroten, maar ze ook van stroom voorzien via een afzonderlijke voedingseenheid.

Een andere reden die de USB-prestaties beïnvloedt, is een lege CMOS-batterij. Maar tegelijkertijd ziet u elke keer dat u de computer aanzet de verloren systeemtijd en -datum. Na het vervangen van de batterij is het probleem verdwenen. Maar dit is niet gebruikelijk, dus u moet controleren op andere mogelijke storingsbronnen.

Ontbrekende of onjuiste installatie van USB-stuurprogramma's

De oorzaken van softwarestoringen in Windows 7/10 kunnen worden geïdentificeerd met Apparaatbeheer. Als je merkt dat een of meerdere apparaten specifiek niet werken, ongeacht de gebruikte poort, dan kan dit erop wijzen dat het probleem in het apparaat zelf zit. Open het Configuratiescherm en ga naar Apparaatbeheer. Alle aangesloten apparaten worden daar weergegeven. Als de lijst items bevat met een geel uitroepteken of een Onbekend apparaat in plaats van een naam, dan zit het probleem in dit apparaat zelf. Er kunnen verschillende opties zijn voor problemen.

Vaak werken de USB-ingangen niet meer na het opnieuw installeren van Windows 7/10. De reden is een onjuiste installatie van de stuurprogramma's of het is mogelijk dat de vereiste stuurprogramma's helemaal niet worden gevonden. U zult de selectie en installatie handmatig moeten uitvoeren.

Vaak vereist het oplossen van problemen eenvoudigweg het bijwerken van het stuurprogramma. Dus als de automatische Windows-update is uitgeschakeld en het systeem zelf lang geleden is geïnstalleerd, gaat de relevantie van de software verloren en kunnen er systeemfouten optreden. Tegelijkertijd begint het apparaat niet meer goed te werken, of werkt het zelfs helemaal niet meer. Om de stuurprogramma's van de USB-controller bij te werken (opnieuw te installeren), kunt u de cd/dvd met het moederbordstuurprogramma gebruiken of de benodigde stuurprogramma's downloaden van de website van de fabrikant van het moederbord.

U kunt energiebesparing voor alle poorten ook uitschakelen met Apparaatbeheer. Vouw de lijst met gebruikte USB-apparaten uit, verborgen in de secties "USB-controllers", "Muis en andere aanwijsapparaten", "Toetsenborden". Dubbelklik op het gewenste apparaat om het eigenschappenvenster te openen. Nu schakelen we over naar het tabblad "Energiebeheer" en schakel het selectievakje "Sta dit apparaat uit om energie te besparen" uit. Zo zal het toestel onder alle omstandigheden altijd gebruikt worden.

Als sommige apparatuur niet wordt herkend, kan er zowel een probleem zijn met de bij ons bekende drivers als een hardwareprobleem bestaande uit een gebrek aan contact, kabelbeschadiging of een storing in de controller. Bovendien is er vaak een situatie waarin, wanneer een defect apparaat is aangesloten, de rest niet meer normaal werkt. Het toetsenbord begint te bevriezen, net als de muis, en de printer stopt met typen. Het probleem is vergelijkbaar met een gebrek aan stroom, dat wil zeggen, het verbruik van alle stroom gaat naar een defect apparaat, waarin zich een gewone kortsluiting of een andere storing kan voordoen.

USB-poorten werken niet vanwege beschadigde controller

Als geen van de bovenstaande stappen heeft geholpen om de USB-poorten te herstellen, moet u de USB-controller op het moederbord controleren, die mogelijk is mislukt. In dit geval moeten hoogwaardige reparaties en diagnose worden toevertrouwd aan de specialisten van het servicecentrum. Probeer als uitweg uit het probleem een ​​uitbreidingskaart te installeren, de zogenaamde USB PC-controller, geïnstalleerd in het PCI-slot op het moederbord. Een dergelijke oplossing is merkbaar goedkoper dan het repareren van een USB-moederbordcontroller, en bij gebruik van een extra USB-hub zal het probleem met een gebrek aan poorten helemaal niet relevant zijn.

Zoals je kunt zien, is het vinden en oplossen van problemen met USB-poorten nogal een gedoe, en dat allemaal omdat er veel redenen kunnen zijn. Opeenvolgend zoeken en elimineren van opzettelijk onjuiste paden stelt u in staat het probleem te identificeren en op te lossen.

Het artikel van vandaag zal, zoals de titel suggereert, gewijd zijn aan een bespreking van de basis USB-interface... Laten we eens kijken naar de basisconcepten, de structuur van de interface, uitzoeken hoe de gegevensoverdracht plaatsvindt, en in de nabije toekomst zullen we dit allemaal in de praktijk implementeren 😉 Kortom, laten we beginnen!

Er zijn een aantal verschillende specificaties USB... Het begon allemaal met USB 1.0 en USB 1.1, toen evolueerde de interface naar USB 2.0, de definitieve specificatie verscheen relatief recent USB 3.0... Maar op dit moment is de meest voorkomende implementatie: USB2. 0.

Welnu, om te beginnen de belangrijkste punten en kenmerken. USB 2.0 ondersteunt drie werkingsmodi:

  • Hoge snelheid- tot 480 Mb/s
  • Volle snelheid- tot 12 Mb/s
  • Lage snelheid- tot 1,5 Mb/s

Buscommandant USB host(bijv. pc) waarop u tot 127 verschillende apparaten kunt aansluiten. Als dit niet genoeg is, moet u nog een host toevoegen. Bovendien is het belangrijk dat het apparaat zelf geen data van/naar de host kan verzenden/ontvangen; het is noodzakelijk dat de host zelf het apparaat adresseert.

In bijna alle artikelen over USB die ik de term heb zien gebruiken " eindpunt“, Maar wat het is, is meestal nogal vaag geschreven. Het eindpunt maakt dus deel uit van het apparaat USB met een eigen unieke identificatiecode. Elk apparaat USB kan meerdere eindpunten hebben. Over het algemeen - het eindpunt is slechts een geheugengebied USB een apparaat waarin alle gegevens kunnen worden opgeslagen (gegevensbuffer). En uiteindelijk krijgen we dit - elk apparaat heeft zijn eigen unieke adres op de bus USB, en elk eindpunt van dit apparaat heeft zijn eigen nummer. Dus dat is het)

Laten we een beetje afdwalen en praten over het "ijzeren deel" van de interface.

Er zijn twee soorten connectoren - Type A en Type B.

Zoals al duidelijk uit de figuur Type A verwijst altijd naar de host. Dit zijn de connectoren die we op computers en laptops zien. Connectoren Type B raadpleeg altijd aansluitbare USB-apparaten. De USB-kabel bestaat uit 4 draden van verschillende kleuren. Nou, eigenlijk is rood stroom (+5 V), zwart is aarde, wit en groen zijn voor datatransmissie.

Naast die in de afbeelding zijn er ook andere versies van USB-connectoren, bijvoorbeeld mini-USB en andere, nou, dat weet je al 😉

Waarschijnlijk is het de moeite waard om de gegevensoverdrachtmethode een beetje aan te raken, maar we zullen er niet op ingaan) Dus bij het overbrengen van gegevens via de bus USB het principe van codering wordt gebruikt NRZI(geen terugkeer naar nul met inversie). Om een ​​logische "1" te verzenden, is het noodzakelijk om het niveau van de D + -lijn te verhogen tot boven +2,8 V en het niveau van de D-lijn te verlagen tot onder +0,3 V. Voor de overdracht van nul is de situatie tegenover - (D-> 2,8 V) en (D +< 0.3 В).

Afzonderlijk is het de moeite waard om de kracht van apparaten te bespreken. USB... En ook hier zijn er meerdere mogelijkheden.

Ten eerste kunnen apparaten busgevoed worden, daarna kunnen ze in twee klassen worden verdeeld:

  • Laag vermogen
  • Hoge spanning

Het verschil hier is dat laag vermogen apparaten mogen niet meer verbruiken dan 100 mA... en apparaten hoge spanning zou niet meer moeten consumeren 100 mA alleen in de configuratiefase. Eenmaal geconfigureerd door de host, kan hun verbruik oplopen tot 500 mA.

Daarnaast kunnen apparaten een eigen stroomvoorziening hebben. In dit geval kunnen ze maximaal 100 mA van de bus, en neem al het andere van uw bron)

Dit lijkt alles te zijn, laten we verder gaan met de structuur van de verzonden gegevens. Toch is dit van het grootste belang voor ons 😉

Alle informatie wordt verzonden personeel die met regelmatige tussenpozen worden verzonden. Elk frame bestaat op zijn beurt uit: transacties... Hier wordt het misschien duidelijker:

Elk frame bevat een pakket! , dan volgen transacties voor verschillende eindpunten, nou ja, en het eindigt allemaal met een batch EOF (einde van frame). Om precies te zijn, dan EOF- dit is niet echt een pakket in de gebruikelijke zin van het woord - dit is het tijdsinterval waarin gegevensuitwisseling verboden is.

Elke transactie ziet er als volgt uit:

Het eerste pakket (genaamd token pakket) bevat informatie over het apparaatadres USB en ook het nummer van het eindpunt waarvoor deze transactie is bedoeld. Bovendien slaat dit pakket informatie op over het type transactie (we zullen bespreken welke soorten er zijn, maar iets later =)). - bij hem is alles duidelijk, dit zijn gegevens die door de host worden doorgegeven, of het eindpunt (afhankelijk van het type transactie). Het laatste pakket is Toestand- ontworpen om het succes van het ontvangen van gegevens te controleren.

Reeds vele malen is het woord "pakket" gesproken in relatie tot de interface USB, dus het is tijd om erachter te komen wat hij is. Laten we beginnen met het pakket token:

Pakketjes token zijn van drie soorten:

  • Opstelling

Dit is waar ik je over vertelde ..) Afhankelijk van het type pakket, de waarde van het veld PID v token pakket kan de volgende waarden aannemen:

  • Tokenpakket van het type OUT - PID = 0001
  • Tokenpakket van het type IN - PID = 1001
  • Tokenpakket van het type SETUP - PID = 1101
  • Tokenpakket van SOF-type - PID = 0101

Door naar het volgende deel van het pakket token- velden Adres en Eindpunt- ze bevatten USB-apparaatadres en eindpuntnummer wat is bedoeld? transactie.

Nou, het veld CRC- dit is een checksum, hiermee is het duidelijk.

Er is hier nog een belangrijk punt. PID bevat 4 bits, maar tijdens verzending worden ze aangevuld met nog 4 bits, die worden verkregen door de eerste 4 bits om te keren.

Dus de volgende in de rij - dat wil zeggen, een datapakket.

Alles is hier in principe hetzelfde als in het pakket token, alleen in plaats van het apparaatadres en het eindpuntnummer hebben we hier de verzonden gegevens.

Het blijft voor ons om te overwegen Toestand pakketten en SOF-pakketten:

Hier PID kan slechts twee waarden aannemen:

  • Het pakket is correct ontvangen - PID = 0010
  • Fout tijdens het ontvangen van pakket - PID = 1010

En tenslotte pakketjes:

Hier zien we een nieuw veld Kader- het bevat het nummer van het verzonden frame.

Laten we als voorbeeld eens kijken naar het proces van het schrijven van gegevens naar een USB-apparaat. Dat wil zeggen, beschouw een voorbeeld van de structuur van een opnameframe.

Het frame, zoals u zich herinnert, bestaat uit transacties en ziet er als volgt uit:

Wat zijn al deze transacties? Laten we het nu uitzoeken! Transactie OPSTELLING:

Transactie UIT:

Evenzo ziet het frame er bij het lezen van gegevens van een USB-apparaat als volgt uit:

Transactie OPSTELLING we hebben al gezien, laten we eens kijken naar de transactie IN 😉

Zoals u kunt zien, hebben al deze transacties dezelfde structuur als we hierboven hebben besproken)

Over het algemeen denk ik dat dit genoeg is voor vandaag 😉 Best een lang artikel geworden, ik hoop dat we in de nabije toekomst zullen proberen de USB-interface in de praktijk te implementeren!

De computerwereld heeft zich eindelijk verzameld rond de oplaadstandaard, na jaren van merkadapters en lelijke muren van vertakte voedingen. Nou ja, een soort van: we zien al wat fragmentatie in termen van de nieuwe USB Type-C-connector die uiteindelijk USB zou kunnen vervangen, evenals wat gelukkig de kortstondige obsessie van Samsung met meerdere USB micro-B-connectoren voor zijn Galaxy blijkt te zijn lijn. Maar buiten dat, en met de voor de hand liggende uitzondering van Apple's Lightning-connector, heeft micro-USB de voorliefde van de industrie voor aangepaste poorten weggevaagd.

Tien jaar geleden moest je er altijd voor zorgen dat je de juiste stroombron had voor elk van je gadgets. In de regel waren voedingen niet eens geëtiketteerd. Tegenwoordig kun je je telefoon opladen bij het huis van je vriend (je kunt een oplader en andere accessoires kopen op de website https://itsell.ua in Oekraïne, hem aansluiten om e-books te lezen op elke computer en foto's uploaden vanaf een digitale camera rechtstreeks naar de tv, allemaal bedankt. In plaats daarvan is er echter een nieuw probleem: USB-stroom. Niet alle USB-laders, connectoren en kabels zijn gelijk gemaakt. Het is u misschien opgevallen dat sommige opladers krachtiger zijn dan andere. Soms is er een USB-connector per laptop schijnbaar krachtiger dan de andere. Op sommige desktops, zelfs als ze zijn uitgeschakeld, kun je je smartphone opladen via de USB-aansluiting. Het blijkt dat er een manier is om al deze waanzin op te lossen - maar eerst moeten we uitleggen hoe USB-voeding werkt.

Er zijn momenteel vier USB-specificaties - USB 1.0, 2.0, 3.0 en 3.1 - naast de nieuwe USB-C-connector. We zullen aangeven waar ze aanzienlijk verschillen, maar voor het grootste deel zullen we ons concentreren op USB 3.0, omdat dit de meest voorkomende is. Op een USB-netwerk is er één host en één apparaat. In bijna alle gevallen is uw computer de master en uw smartphone, tablet of camera het apparaat. De stroom gaat altijd van de host naar het apparaat, hoewel gegevens in beide richtingen kunnen stromen, zoals bij het heen en weer kopiëren van bestanden tussen uw computer en telefoon.

Oké, nu de cijfers. Een USB 1.0- of 2.0-connector heeft vier pinnen en een USB-kabel heeft vier draden. Interne pinnen dragen data (D+ en D-), terwijl externe pinnen een 5-volt voeding leveren. De USB 3.0-poort voegt een extra rij van vijf pinnen toe, zodat USB 3.0-compatibele kabels negen draden hebben. In termen van het werkelijke wattage (milliampère of mA), zijn er drie soorten USB-poorten die worden bepaald door de huidige specificatie: standaard downstream-poort, downstream-laadpoort en speciale oplaadpoort. De eerste twee zijn te vinden op uw computer (en moeten als zodanig worden gelabeld), en de derde soort verwijst naar de "domme" wandladers.

In de USB 1.0- en 2.0-specificatie kan de standaard downstream-poort tot 500 mA (0,5 A) leveren; met USB 3.0 gaat het tot 900mA (0,9A). Tijdens het opladen leveren de speciale oplaadpoorten tot 1.500 mA (1,5 A). USB 3.1 heeft een bandbreedte tot 10 Gbps, wat de SuperSpeed+-modus wordt genoemd, en is daardoor ongeveer gelijk aan de eerste generatie Thunderbolt. Het ondersteunt ook stroom van 1,5 A en 3 A via de 5V-bus.

USB Type-C-connector

USB Type-C is een heel andere connector. Het is veelzijdig; Je kunt het hoe dan ook plaatsen en het werkt in tegenstelling tot USB of Apple's Lightning-connector. USB-C heeft in theorie ook twee keer de bandbreedte van USB 3.0 en kan meer vermogen leveren. Apple heeft zich aangesloten bij USB Type-C met USB 3.1 op zijn 12-inch MacBook en Google heeft het nu opgenomen in de Chromebook Pixel. We beginnen het ook op telefoons te zien, met als eerste de OnePlus 2; huidige populaire modellen zijn de Google Nexus 6P, OnePlus 3 en Samsung Galaxy versie 7. Maar er kunnen ook oudere versies zijn met USB-poorten die de 3.1-standaard ondersteunen.

De USB-specificatie maakt ook een "slaap-en-oplaad"-poort mogelijk waarin USB-poorten op een computer actief blijven wanneer de stroom is uitgeschakeld. Je hebt dit misschien gemerkt op een desktopcomputer waar er altijd wat stroom door het moederbord stroomt, sommige laptops kunnen ook slapen en opladen.

Universele oplader

Dit is wat de specificaties dicteren. Maar er zijn veel USB-opladers die niet aan deze specificaties voldoen - meestal linkshandige of wereldwijde giganten. De iPad maakt gebruik van een Apple-oplader die bijvoorbeeld 2.1A levert bij 5V; Amazon's Kindle Fire gebruikt 1.8A-opladeruitgangen; en veel autoladers kunnen alles van 1A tot 2.1A uitvoeren.

Er is een enorm verschil tussen gewone USB-poorten die geschikt zijn voor 500 mA en speciale oplaadpoorten die oplopen tot 3000 mA. Dit leidt tot een belangrijke vraag: Als je een telefoon neemt die is geleverd met een 900mA-oplader en deze bijvoorbeeld aansluit op een 2100mA iPad-oplader, kan deze dan exploderen??

Kortom, nee: je kunt elk USB-apparaat aansluiten op elke USB-kabel en op elke USB-poort, en niets zal exploderen - en in feite zou het gebruik van een krachtigere oplader het opladen van de batterij alleen maar versnellen. We doen dit de hele tijd met onze mobiele apparaten en we hebben nooit problemen gehad.

Het antwoord is dat leeftijd je apparaat speelt een belangrijke rol bij het dicteren hoe snel het kan worden opgeladen, en of het kan worden opgeladen met een universele oplader voor iedereen. In 2007 bracht het USB Implementers Forum de Battery Charging Specification uit, die werd gestandaardiseerd als snellere manieren om USB-apparaten op te laden, hetzij door meer versterkers door de USB-poorten van uw computer te pompen, hetzij door een wandlader te gebruiken. Kort daarna begonnen USB-apparaten op basis van deze specificatie te worden gekocht.

Als je een modern USB-apparaat hebt - in feite bijna elke smartphone, tablet of camera - zou je in staat moeten zijn om verbinding te maken met een USB-poort met hoge stroomsterkte en sneller opladen. Als je echter een ouder product hebt, werkt het waarschijnlijk niet met USB-poorten die de specificaties van de batterijlader gebruiken. Het kan alleen werken met oude, originele (500mA) USB 1.0- en 2.0 pc-poorten. In sommige (oudere) gevallen kunnen USB-apparaten alleen worden opgeladen met computers met bepaalde stuurprogramma's, maar vergelijkbare computers bestaan ​​al meer dan tien jaar.

Er zijn een paar andere dingen om op te letten. Terwijl computers twee soorten USB-poorten kunnen hebben - standaard downstream of opladen - OEM downstream-fabrikanten labelen ze niet altijd als zodanig. Als gevolg hiervan kunt u een apparaat hebben dat wordt opgeladen via de ene poort op uw laptop, maar niet via een andere. Dit is een eigenschap van oudere computers, aangezien er geen reden lijkt te zijn om standaard downstream-poorten te gebruiken wanneer oplaadpoorten met hoge stroomsterkte beschikbaar zijn. De meeste fabrikanten plaatsen nu een kleine bliksemschicht over de juiste oplaadpoorten op laptops, en in sommige gevallen blijven deze poorten zelfs met het deksel gesloten.

Evenzo hebben sommige externe apparaten - in de eerste plaats 3,5-inch harde schijven - meer stroom nodig dan een gewone USB-poort kan leveren. Daarom hebben ze twee USB-poorten, een Y-kabel of een externe AC-stroomadapter.

Verder heeft USB het opladen van onze gadgets en randapparatuur zeker veel gemakkelijker dan ooit gemaakt. En als de nieuwe USB-C-connector populair wordt, wordt het nog gemakkelijker om eraan te komen, omdat je nooit zult zweren op welk stopcontact je hem aansluit. Veel succes en bedankt voor je aandacht!