Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Jó könyv, sok mindent elmagyaráz. Hasznos azok számára, akik szeretnék megérteni, hogyan történik az adatok átvitele az USB buszon keresztül.

Bevezetés 1
Kinek szól ez a könyv: 2
Mit találsz a 2. könyvben
Szoftverkövetelmények 3
Hardverkövetelmények 4
A 4-es kódról
Rövid leírás fejezetek 4
6. jelölés
Köszönöm 7
I. RÉSZ. BEVEZETÉS AZ USB-BE 9
1. fejezet Mi az az USB 11
1.1. Az USB 11 története
1.2. Az USB összehasonlítása más interfészekkel 14
1.3. USB alapfogalmak 16
1.3.1. Általános busz architektúra 16
1.3.2. Fizikai és logikai busz architektúra 16
1.3.3. Az USB 18 összetevői
1.3.4. USB-eszköz tulajdonságai 18
1.3.5. Hub tulajdonságai 19
1.3.6. Gazdatulajdonságok 20
1.4. Példák USB-eszközökre 20
1.4.1. Egér és billentyűzet., 21
1.4.2. Monitorok 21
1.4.3. USB-COM és USB-LPT 22 adapterek
1.4.4. Szkennerek 23
1.4.5. Modemek 23
1.4.6. Hangszórók 24
1.4.7. Flash meghajtók 25
1.4.8. Hubok 28
1.4.9. Mérési technológia 28
1.4.10. Egzotikus kütyük 29
1.5. internetkapcsolat USB 30-on keresztül
1.5.1. USB-Ethernet konverter 31
1.5.2. Közvetlen csatlakozás a 31-es USB-porton keresztül
1.6. Adatátvitel 31
1.6.1. Kommunikációs alapelvek 32
1.6.2. Megszakítási mechanizmus 32
1.6.3. Gazda adapter interfészek 32
1.6.4. Közvetlen memóriaelérési képesség 34
1.6.5. Kommunikációs módok 34
1.7. USB-eszközök telepítése és konfigurálása 35
1.7.1. BIOS beállítások USB 38-hoz
1.7.2. Hibaelhárítás 41
1.8. USB-korlátok 45
1.9. Ha számítógépet vásárol 46
1.9.1. A HS és az USB 2.0 nem ugyanaz! 46
1.9.2. Alaplap 47
1.9.3. 48-as épület
1.9.4. USB „régebbi” számítógéptípusokhoz 48
1.10. Online források ehhez a fejezethez 49
2. fejezet Hardver USB 51
2.1. Kábelek és csatlakozók 51
2.1.1. Kábeltípusok 52
2.1.2. Kábel hossza 53
2.1.3. Csatlakozók 53
2.2. Fizikai interfész 55
2.2.1. Adatkódolás 57
2.2.2. A készülék azonosítása 58
2.3. Táplálkozás 59
2.3.1. Az USB-eszközök energiatípusai 59
2.3.2. Energiagazdálkodás 60
2.3.3. Belépés az üzemmódba alacsony energia fogyasztás 61
2.4. Online források ehhez a fejezethez 61
RÉSZ II. USB BELSŐ SZERVEZET 63
3. fejezet A gumiabroncs belső felépítése 65
3.1. A kommunikáció logikai szintjei 65
3.1.1. Kliensszoftver szint 66
3.1.2. USB-rendszer-illesztőprogram-szint 67
3.1.3. Interfész Host Controller 68. szint
3.1.4. Perifériabusz 68-as szint
3.1.5. USB logikai eszközszint 69
3.1.6. Az USB-eszköz működési szintje 69
3.2. Réteges adatátvitel 69
3.3. Az adatátvitel típusai 71
3.4. Szinkronizálás izokron átvitellel 73
3.5. Személyzet 77
3.6. Végpontok 78
3.7. 79. csatornák
3.8. Csomagok 81
3.8.1. Az IN, OUT, SETUP és PING 83 token csomagok formátuma
3.8.2. SOF 83 csomagformátum
3.8.3. Adatcsomag formátum 84
3.8.4. Nyugtázó csomag formátum< 84
3.8.5. SPLIT * 84 csomag formátum
3.9. Ellenőrző összeg 85
3.9.1. CRC számítási algoritmus 86
3.9.2. A CRC 87 szoftveres számítása
3.10. Tranzakciók 90
3.10.1. Tranzakciótípusok 91
3.10.2. Tranzakció megerősítése és folyamatvezérlés 92
3.10.3. Tranzakciós protokollok 93
4. fejezet A készülék belső felépítése 96
4.1. Kérések USB-eszközökhöz 96
4.1.1. 96. konfigurációs csomag
4.1.2. Normál eszközlekérdezések 99
4.1.3. Eszközleírók 105
5. fejezet A gazdagép és a hubok belső felépítése 123
5.1. Hubok 123
5.1.1. A gazdagép vezérlő interakciója a hubbal 126
5.1.2. Hub leíró 127
5.1.3. A hub 129-et kér
5.1.4. CLEAR_HUB_FEATURE 130 kérése
5.1.5. Kérje a CLEAR PORT_FEATURE 130-at
5.1.6. Kérjen GET_BUS_STA TE 131-et
5.1.7. GET_HUB_DESCRfPTOR 131 kérése
5.1.8. GET_HUB_STATUS kérése 131
5.1.9. GET_PORT_STA TUS 132 kérése
5.1.10. SET_HUB_DESCRIPTOR 134 kérése
5.1.11. A SET_HUB_FEATURE 134. kérése
5.1.12. PORT FUNKCIÓ BEÁLLÍTÁSA kérés. 134
5.2. Együttműködés eszközökkel különböző sebességeket 135
6. fejezet USB számítógép nélkül 137
6.1. OTG csatlakozók 138
6.2. Az OTG-eszközök típusai 138
6.3. OTG-eszközleíró 139
6.4. Online források ehhez a fejezethez 140
RÉSZ III. PROGRAMOZÁSI GYAKORLAT 141
7. fejezet USB támogatás Windows 143 rendszerben
7.1. WDM 144 modell
7.2. Interakció az USB-illesztőprogrammal 146
8. fejezet Rejtett eszközök * 149
8.1. HID eszköz tulajdonságai 149
8.2. Kommunikáció HID eszközzel 151
8.3. HID-eszköz telepítése 152
8.4. HID eszközazonosító 152
8.4.1. A rendszerindító eszközök azonosítása 153
8.4.2. HID eszköz konfigurációs leíró 153
8.4.3. HID-leíró 154
8.4.4. Jelentésleíró 156
8.5. Jelentésleíró szerkezete 156
8.5.1. A jelentéselemek felépítése 156
8.5.2. Jelentéstételtípusok 157
8.5.3. Leíró példák 165
8.6. Kérések a HID eszközhöz 168
8.6.1. GET_REPORT kérés. 169
8.6.2. SET_REPORT kérés 169
8.6.3. GETJDLE kérés. 170
8.6.4. SETJDLE 170 kérése
8.6.5. GET_PROTOCOL 171 kérése
8.6.6. SET_PROTOCOL 171 kérése
8.7. Eszközök 171
8.8. Interakció a HID illesztőprogrammal 172
9. fejezet Bevezetés a WDM 181-be
9.1. Illesztőprogram-rétegek 183
9.2. Szimbolikus eszköznevek 184
9.3. A WDM illesztőprogram alapvető eljárásai 189
9.3.1. Eljárás DriverEntry 190
9.3.2. AddDevice eljárás 192
9.3.3. Kitöltési eljárás 194
9.3.4. A járművezető kezelési eljárásai 196
9.3.5. IOCTL 203 kérések kiszolgálása
9.4. Az illesztőprogram betöltése és az illesztőprogram hívása 209
9.4.1. A járművezető működési eljárása 209
9.4.2. Járművezetői regisztráció 210
9.4.3. Munkafolyamatokra hivatkozva 217
9.4.4. A vezető tárolása bent futtatható fájl 218
9.5. Illesztőprogram-létrehozó eszközök 220
9.5.1. NuMega Driver Studio 220
9.5.2. Jungo WinDriver 220
9.5.3. Jungo Kernel Driver 220
10. fejezet USB PnP specifikáció 221
10.1. Általános információ a Plug and Play rendszerről 221
10.1.1. Plug and Play feladatok és funkciók 221
10.1.2. PnP-eljárás indítása 222
10.1.3. PnP szoftverösszetevők 224
10.2. Plug and Play USB 225-höz
10.2.1. USB-eszközök konfigurálása 226
10.2.2. 226-os USB-eszköz
10.2.3. PnP USB-eszközazonosítók 228
10.3. Az USB-eszközök listájának lekérése 229
10.4. INF fájl 234
10.4.1. INF fájlszerkezet 234
10.4.2. szakasz 235-ös verzió
10.4.3. Gyártó 237. sz
10.4.4. Destination Dirs 239. szakasz
10.4.5. 241-es modell leírása
10.4.6. Az xxx.AddReg és az xxx.DelReg szakasz. 242
10.4.7. Section xxx.LogConfig 244
10.4.8. Section xxx.CopyFiles 244
10.4.9. szakasz Strings 245
10.4.10. A szakasz linkjei 246
10.4.11. INF-fájlok létrehozása és tesztelése 247
10.4.12. Eszközök telepítése INF-fájl használatával 248
10.5. Registry ágak az USB 249-hez
11. fejezet BIOS-szolgáltatások 251
11.1. BIOS szolgáltatás 1AH 251
11.1.1. B101H funkció - a PCI BIOS 252 jelenlétének észlelése
11.1.2. Funkció В102Н - PCI-eszköz keresése azonosítók alapján
készülék és gyártó 253
11.1.3. B103H funkció - PCI-eszköz keresése a 254-es osztálykód alapján
11.1.4. Funkció B108H – konfigurációs regiszter olvasása (byte) 255
11.1.5. ВУ9Н funkció - konfigurációs regiszter (Word) olvasása 256
11.1.6. B10AN funkció - konfigurációs regiszter (DWord) olvasása 256
11.1.7. В10ВН funkció - konfigurációs regiszter írása (byte) 257
11.1.8. B10CH funkció - konfigurációs regiszter írása (Word) 257
11.1.9. B10DH funkció – Konfigurációs regiszter írása (DWord) 258
11.2. 259. használati példa
RÉSZ IV. USB-ESZKÖZÖK LÉTREHOZÁSA 283
12. fejezet USB-perifériák 285
12.1. Chips Atmel 286
12.1.1. Mikrokontrollerek MSC-51 architektúrával 286
12.1.2. Hub vezérlők 289
12.1.3. Mikroprocesszor hubok AVR 289 maggal
12.1.4. Egyéb Atmel 290 IC
12.2. Chignal 291 chip
12.2.1. C8051F320 és C8051F321 mikroprocesszorok 291
12.2.2. Egyéb Cygnal 293 IC-k
12.3. FTDI 296 chipek
12.3.1. FT232AM és FT232BM 297 chipek
12.3.2. FT245AM és FT245BM 298 chipek
12.3.3. Chip FT2232BM 299
12.3.4. Chip FT8U100AX 300
12.3.5. Hibakereső készletek és modulok 301
12.3.6. Sofőrök 302
12.3.7. További segédprogramok 303
12.3.8. Egyéb modulok 304
12.4. Intel 304 chipek
12.5. Chip Microchip 308
12.6. Motorola 308 IC-k
12.7. Philips 309 chipek
12.7.1. Mikrochip USB 310
12.7.2. Hub 311
12.7.3. Egyéb Philips 313 chipek
12.8. Mikroáramkörök Texas Instruments 314
12.9. Chips Trans Dimenzió 317
12.10. Áramvédelmi IC-k 318
12.11. Online források ehhez a fejezethez 319
13. fejezet Atmel AT89C5131 HID Device 322
13.1. A АТ89С5131 322 szerkezeti diagramja
13.2. Az USB-regiszterek AT89C5131 324
13.2.1. Regisztrálja az USBCON 324-et
13.2.2. Regisztrálja az USBADDR 326-ot
13.2.3. Regisztrálja az USBINT 327-et
13.2.4. Regisztrálja az USBIEN 328-at
13.2.5. UEPNUM regiszter. 329
13.2.6. Regisztrálja az UEPCONX 330-at
13.2.7. UEPSTAX nyilvántartás. 331
13.2.8. UEPRST nyilvántartás. 334
13.2.9. UEPINT nyilvántartás. 335
13.2.10. Regisztrálja az UEPIEN 336-ot
13.2.11. Regisztrálja az UEPDATX 337-et
13.2.12. Regisztrálja az UBYCTLX 337-et
13.2.13. Regisztrálja az UFNUML 338-at
13.2.14. Regisztrálja az UFNUMH-t. 338
13.3. AT89S5131 338 áramkör
13.4. Programozási eszközök 339
13.4.1. 341. fordító
13.4.2. Programozó 342
13.5. Program a 349-es mikroprocesszorhoz
13.5.1. A program első verziója a АТ89С5131 349-hez
13.5.2. Karakterlánc-leírók hozzáadása 369
13.5.3. Végpontok hozzáadása 374
13.5.4. HID eszköz létrehozása 377
13.5.5. Kommunikáció HID eszközzel 381
13.6. Jelentések olvasása Windows 388 rendszerben
13.7. További funkciók Windows XP 396
13.8. Több jelentéssel rendelkező eszköz 397
14. fejezet ATMEL AT89C5131 USB-eszköz létrehozása 402
14.1. Nem HID eszköz 402
14.2. Illesztőprogram létrehozása a Driver Studio 405 segítségével
14.2.1. Néhány szó a Driver Studio 407 könyvtárról
14.2.2. Egyéb Driver Studio 411 osztályok
14.2.3. Illesztőprogram-sablon létrehozása a Driver Studio 412 segítségével
14.2.4. A 422-es illesztőprogram-sablon finomítása
14.2.5. Eszközosztály-alapmódszerek 423
14.2.6. Adatolvasás megvalósítása 426
14.2.7. Illesztőprogram telepítése 428
14.2.8. Adatolvasó 429
14.2.9. Adatok olvasása más típusú végpontokból 438
14.2.10. Tisztítsa meg az USB-illesztőprogramot 439
15. fejezet FTDI 457 chipek használata
15.1. Funkcionális diagram FT232BM 457
15.2. Áramkör FT232BM 460
15.3. Funkciók D2XX 460
15.4. Áttérés COM-ról USB 465-re
15.4.1. 465 Átalakító áramkör leírása
15.4.2. Az adatátviteli sebesség beállítása 467
V. RÉSZ KÉZIKÖNYV 469
16. fejezet ablakok jellemzői 471
16.1. CreateFile és CloseHandle függvények: objektum megnyitása és bezárása.471
16.1.1. További információ 472
16.1.2. Visszatérési érték 472
16.1.3. Hívja a 472-es példát
16.2. Fájl olvasási funkció: Adatok olvasása 473
16.2.1. További információ 474
16.2.2. Visszatérési érték 474
16.2.3. Hívja a 474-es példát
16.3. WriteFile funkció: Adatátvitel 475
16.3.1. További információ 476
16.3.2. Visszatérési érték 476
16.3.3. Hívja a 476-os példát
16.4. ReadFileEx funkció. APC Read Data 477
16.4.1. Visszatérési érték 479
16.4.2. További információ 479
16.4.3. Hívja a 479-es példát
16.5. WriteFileEx funkció: APC Data Transfer 480
16.5.1. Visszatérési érték 481
16.5.2. Hívja a 481-es példát
16.6. WaitForSingleObject funkció jelre vár
objektum állapota 482
16.6.1. Visszatérési érték 482
16.7. WaitForMultipleObjects funkció: jelre vár
objektum állapotok 483
16.7.1. Visszatérési érték 484
16.8. GetOverlappedResult függvény eredménye aszinkron művelet 484
16.8.1. Visszatérési érték 485
16.9. DeviceIoControl funkció: Direct Driver Control 485
16.9.1. Visszatérési érték 487
16.10. QueryDosDevice funkció: Eszköznév lekérése
DOS névvel 487
16.10.1. Visszatérési érték 488
16.10.2. Hívja a 488-as példát
16.11: Dos-eszköz funkciójának meghatározása: DOS-eszköznév-műveletek 489
16.11.1. Visszatérési érték 490
16.11.2. Hívja a 490-es példát
17. fejezet HID API-funkciók 492
17.1. HidD_Hello Funkció: Library Check 492
17.2. HidD_GetHidGuid funkció: Szerezze be a GUID 492-t
17.3. HidD_GetPreparsedData függvény: Eszközleíró létrehozása 493
17.4. HidD_FreePreparsedData funkció: Eszközkezelő 493 felszabadítása
17.5. HidD_GetFeature funkció: FEATURE jelentés lekérése 494
17.6. HidD_SetFeature funkció: FEATURE jelentés küldése 494
17.7. HidD_GetNumInputBuffers függvény: a pufferek számának lekérése 495
17.8. HidD_SetNumInputBuffers funkció: a pufferek számának beállítása 495
17.9. HidD_GetAttribntes funkció: Eszközattribútumok lekérése 495
17.10. Funkció HidD_GetMamifactnrerStnng. szerezze be a gyártó 496-os karakterláncát
17.11. HidD_GetProductString függvény. szerezze be a 497-es termékcsaládot
17.12. Funkció HidD_ Get Serial MumberString. kap egy húrt
sorozatszám 497
17.13. HidD_GetIndexedString függvény. kap egy sort a 498-as indexnél
17.14. HidDjGetlnputReport függvény. INPUT jelentés fogadása 498
17.15. HidD_SetOutputReport függvény. OUTPUT jelentés küldése 499
17.16. HidP_GetCaps funkció: Eszköztulajdonságok lekérése 499
17.17. HidP_MaxDataListLength függvény: 500-as jelentésméretek lekérése
18. fejezet UCH 502 Host Controller
18.1. 502 Host Controller Control Registers
18.1.1. USB parancsregiszter (USBCMD) ..504
18.1.2. USB állapotregiszter (USBSTS) 506
18.1.3. Megszakításvezérlő regiszter (USBINTR) 506
18.1.4. Keretszám-regiszter (FRNUM) 507
18.1.5. Keret alapcímregiszter (FLBASEADD) 508
18.1.6. Keretmódosító-regiszter (SOFMOD) 508 kezdete
18.1.7. Portállapot- és vezérlési nyilvántartás (PORTSC) 509
18.2. UCH 510 gazdavezérlő adatstruktúrái
18.2.1. 510. keretlista
18.2.2. Átviteli leíró i 511
18.2.3. Sorfejléc 514
18.3. UCH 516 Leírólista feldolgozása
19. fejezet Eszközök 518
19.1. Microsoft Visual Studio Tools 518
19.1.1. 518-tól függ
19.1.2. Hibakeresés 518
19.1.3. GuidGen 518
19.2. Microsoft DDK 520 eszközök
19.2.1. Device Tree 520
19.2.2. DevCon.-521
19.2.3. Chklnf és Genlnf. 526
19.3. CompuWare Corporation 527 Eszközök
19.3.1. Monitor 527
19.3.2. Symlink 527
19.3.3. EzDriverInstaller 527
19.3.4. WdmSniff 527
19.4. Syslntemals 528 eszközök
19.4.1. WinObj 528
19.5. USB Forum 531 eszközök
19.5.1. HID Descriptor Tool 531
19.6. HDD szoftvereszközök 533
19.7. Sourceforge 533 eszközök
APPS 535
1. függelék További szolgáltatások 537
2. melléklet Nyelvi azonosítók táblázata (LangID) 539
3. melléklet Szállítókódok táblázata (Szállítóazonosító, Készülékazonosító) 543
4. melléklet CD Leírás 546
Irodalom 548
Index 549

De nem elég csak fizikailag csatlakoztatni a készüléket a számítógéphez, hanem adatcserét is létre kell hozni közöttük. Hogyan válasszunk portot és szervezzünk kapcsolatot? Néhány évvel ezelőtt a standard megoldás a COM port használata volt. Különböző szakemberek egyébként még mindig 8, 16, vagy akár 32 COM portot telepítenek ipari számítógépekre (egy egész kategória létezik a soros portokhoz, vezérlőkhöz stb. különböző PCI bővítőkártyákból). Így, ha többet kell csatlakoztatnia külső eszközök RS-232 interfésszel drága adapterekre és egzotikus bővítőkártyákra lehet szükség, amelyek a régi hagyomány szerint hetekig hajóznak Oroszországba gőzhajókon. Mellesleg, egy közönséges adapter neve "DB9m / DB25f adapter" csak irritációt okozhat a számítógépes áruház vezetőjének.

Mi az a HID eszköz

Mostantól szinte minden eszköz USB-interfészen keresztül csatlakozik a számítógéphez. Ezért sok új PC egyáltalán nem rendelkezik COM-porttal.

USB interfész - tipikus megoldás egy új külső eszköz számítógéppel való párosítására, pontosabban egy USB 1.1 protokollon alapuló HID interfész.

Bár sokan úgy gondolják, hogy a HID (Human Interface Device) interfész kizárólag a billentyűzet, az egér és a joystick számára való, számos külső eszközök és számítógép interfészével kapcsolatos megoldásra alkalmas.

Ha a felhasználónak alacsony sebességű adatcserét kell végrehajtania (legfeljebb 64 kbps), és ugyanakkor kívánatos csökkenteni a saját illesztőprogramjaik fárasztó fejlesztésének idejét, akkor a HID meglehetősen megfelelő számukra. A kimenet egyszerű és szép lesz modern megoldás szabványos USB szoftver interfészen alapul, garantált támogatással minden elterjedt szoftverplatformon.

HID eszköz tulajdonságai

A HID-eszköz szoftvertámogatásának megszervezése szempontjából minden nagyon vonzónak tűnik: alatta dolgozni Windows vezérlés készen bevált algoritmusok alapján gyorsan létrehozhat érthető kompakt kódot. Ebben az esetben a fejlesztőnek bőven lesz ideje saját legfelső szintű adatcsere protokolljának megvalósítására, mivel a szükséges absztrakciós szintet már a HID protokoll szervezi (lásd a táblázatot). Ezenkívül a programozó könnyen hibakereshet egy írott csereprotokollt (természetesen, ha van működő HID-eszköz) - magának a protokollnak a viszonylagos merevsége miatt elegendő egyszerűen kidolgozni egy programot az eszköz támogatására. számítógép által. Még mindig lenne! Nagyon sok munkát végzett már a HID eszköz megalkotója.

Adatcsere létrehozása HID eszköz és számítógép között

A HID-eszköz és a számítógép közötti interakció leírására a „gazdagép” kifejezést használjuk. Ebben az esetben ez általában a vezérlőkészüléket jelenti fizikai építészet kommunikáció az USB protokollon keresztül. Tehát a számítógép minden portja gazdagép. Különféle USB eszközöket csatlakoztathatunk hozzájuk (flash meghajtók, egerek, webkamerák, kamerák stb.), amelyek nem rendelkeznek gazdagéppel. A gazdagép biztosítja a felderítést, a csatlakozást, a leválasztást, az eszközkonfigurációt, valamint a statisztikák gyűjtését és az energiagazdálkodást.

A HID készülék maga állíthatja be azt a lekérdezési gyakoriságot, amely során az esetleges új adatok meglétét észleli. Ez azt jelenti, hogy a programozó még ilyen alacsony szinten is megbízhat a rendszerben, hiszen a HID eszközvezérlő programban előre be kell állítani a lekérdezési gyakoriságot és az egyéb kommunikációs paramétereket. A HID protokoll ettől különbözik Általános leírása USB 1.1 vagy USB 2.0, amelyre nincsenek szigorú protokollkövetelmények. Azonban bizonyos, magas szintű biztonságot igénylő feladatoknál meglehetősen nehéz lehet megszabadulni a ciklikus szavazásoktól, amikor szinte ugyanazokat az adatblokkokat továbbítják folyamatosan.

A HID eszközök programozásának jellemzői

A HID eszközöknek speciális leírásai vannak. Amikor a gazdagép megállapítja, hogy az eszköz a HID osztályba tartozik, átadja az irányítást a megfelelő illesztőprogramnak. Feltételezhető, hogy a további adatcsere az ő vezetésével történik.

Windows rendszeren a HidServ rendszerszolgáltatás felelős a HID eszközök eléréséért. További részletek a HID-eszközökhöz intézett kérések funkcióiról és a HID-illesztőprogrammal való munka egyéb jellemzőiről P. V. Agurov „USB interfész” című munkájában találhatók. A használat és a programozás gyakorlata” (St. Petersburg: BHV-Petersburg, 2005).

HID eszközök programozása a "legfelső szinten"

A Pascalon dolgozó "alkalmazott" programozók nehéz életét megkönnyíti a bevált HID modul. PAS, a shell for hid. dll (Rejtett felhasználói könyvtár - a fájl tulajdonságainál megadottak szerint). A fájlhoz fűzött megjegyzések szerint az a Microsoft Corporation hidsdi.h és hidpi.h moduljain alapul. És maga a HID fájl. A PAS a JEDI() csomag része.

HID eszközzel való munkavégzés Delphi környezet win32 esetén a TJvHidDeviceController komponenst használják, amely egy kényelmes globális menedzser a HID eszközök elérésére. És már ennek alapján is beszerezhet egy objektumpéldányt egy adott eszközzel való munkavégzéshez.

A TJvHidDeviceController komponens fő tulajdonságai és eseményei

Tekintsük részletesebben a TJvHidDeviceController összetevőt. Az OnArrival esemény akkor aktiválódik, amikor egy HID eszköz érkezik (csatlakozik) a rendszerhez, az eszközhöz való hozzáférést az esemény kezelője biztosítja a TJvHidDevice osztály egy példányán keresztül. Az OnDeviceChange egyszerű esemény az eszköz állapotváltozására reagál, csak a rendszerben bekövetkezett változásokat jelzi. Az OnDeviceData esemény akkor aktiválódik, amikor adat érkezik az egyik HID-eszközről, és átadja a következőket a kezelőnek: HidDev: TJvHidDevice; - az eszköz, amelyről az adatokat fogadták;

Az OnDeviceDataError esemény adatátviteli hibáról értesít a HidDev paraméterek átadásával a feldolgozási eljárásnak: TJvHidDevice; - HID eszköz és hiba: DWORD; - hibakód. Az OnDeviceUnplug esemény értesíti, hogy egy eszközt eltávolítottak a rendszerre telepített eszközök listájáról. A Plug and Unplug eseménykezelőinek típusai megegyeznek (a forrásszövegben: TJvHidUnplugEvent = TJvHidPlugEvent). A HID eszköznek megfelelő TJvHidDevice osztály objektuma átadásra kerül a kezelőnek.

A rendszerben elérhető HID eszközök szekvenciális felsorolására az Enumerate metódus hívásával az OnEnumerate eseményt szánjuk, azaz az eseménykezelőben a talált eszközök egymás után objektumként kerülnek továbbításra. Ezt az eseményt az Enumerate metódus kényszeríti ki, amely arra szolgál, hogy a meglévő HID-eszközöket "átadja" a kezelőn, például a gazdagép (számítógép) által kezdeményezett HID-eszközök állapotának auditálásakor.

Az OnRemoval esemény akkor aktiválódik, amikor az eszközt fizikailag eltávolítják a rendszerből, és ugyanazzal a TJvHidUnplugEvent kezelőtípussal rendelkezik, mint az OnDeviceUnplug esetében. A CountByProductName függvény az argumentumban megadott terméknévnek megfelelő eszközök számát, a CountByVendorName pedig az argumentumban megadott szállítónevek számát adja vissza.

A TJvHidDevice osztály főbb tulajdonságai és eseményei

A TJvHidDevice osztály egyetlen HID eszköz virtuális reprezentációja. Ennek az osztálynak az új objektuma beszerezhető, mint már említettük, az OnArrival vagy az OnEnumerate eseményből. A TJvHidDeviceController és a TJvHidDevice osztályok funkcionalitása részben megduplázódik, mivel az első egy közös eszközkészletet tartalmaz a rendszerben elérhető HID-eszközökkel való munkavégzéshez, és egy mechanizmust az egyik elérésére. Egy eszköz egyedileg azonosítható a SerialNumber, ProductName és VendorName tulajdonságai alapján. Az OnData esemény segítségével információt kaphat az adatok érkezéséről egy ilyen objektum használatával. Az adatküldés a WriteFile metóduson keresztül történik (a szoros értelemben vett függvényen keresztül). A WriteFile a WriteFile (kernel32) rendszerfüggvény körüli burkolóanyag.

Az eszköz eltávolításának ellenőrzéséhez rendeljen egyéni kezelőt az OnUnplug eseményhez. Mielőtt elkezdené az adatcserét egy HID eszközzel, meg kell győződnie arról, hogy az ilyen adatcsere lehetséges a HasReadWriteAccess segítségével. Ennek az osztálynak még külön OnDataError eseménye is van az adatcsere hiba előfordulásához.

És most nézzük meg egy "élő" projekt kódrészleteit, amely egy tesztkliens alkalmazást valósít meg az adatcsere megszervezésére egy nem szabványos eszközzel - HID-alapú műanyag chipkártyákkal. A realizmusért folytatott küzdelemben a szerző vállalta a bátorságot, hogy nem dobott ki „extra” technológiai kódkötéseket a listákból.

A ScanDevices metódus (1. lista) arra szolgál, hogy elindítsa a rendszerben a kívánt HID-eszköz keresésének folyamatát. A kód nagy része, az Enumerate metódus hívása kivételével, opcionális, és rugalmasságot biztosít az alkalmazás számára, így például ugyanahhoz a tesztprogramhoz hozzáadhatja a nem HID felületen történő munkavégzés lehetőségét. Az AddError metódus a program futása közben hibakeresési információkat nyomtat az ablakba.

A 2. lista az OnEnumerate eseménykezelőt mutatja a szükséges külső eszköz megtalálásához. Az egyszerűség kedvéért feltételezzük, hogy a program csak egy olyan típusú eszközzel tud működni, amelyre szüksége van.

Mielőtt a projekt további megvalósítására gondolnánk, beszéljünk egy kicsit az elfogadott felső szintű adatcsere-formátumról, vagyis arról a struktúráról, amely közvetítő szerepet tölt be az adatfogadási és -továbbítási módok és a megoldandó konkrét alkalmazott feladat között. . Az a tény, hogy itt a fejlesztő lehetőséget kap kreatív képességeinek megvalósítására. Illetve a fejlesztők, mert egy új protokoll létrehozásának folyamata nagyon gyakran kétirányú, és az első hegedűn az játszik, akinek nehezebben tudja megvalósítani a cserealgoritmust. Általánosságban elmondható, hogy bármilyen csereprotokollról is legyen szó, mindig jó minden szoftverentitást a lehető legvizuálisabbá és önellátóvá tenni, még néhány általánosan elfogadott hagyomány rovására is. Mert A legjobb döntés- olyan, amely rövid időn belül megvalósul minimális hivatkozással szoftverkörnyezetés nagy a további fejlődési lehetőség. Ezen elvek alapján egy felső szintű csereprotokoll jött létre, ahol a fő fogalom a „parancs”. A 3. lista azt mutatja, hogy a szerző mennyire szereti a karakterlánc-adatokat, amivel többször megmentette a programmodulok hibakeresése során. Milyen csodálatos, hogy van még String típusunk is! Minden protokoll parancs kategóriákra (osztályokra) van felosztva, amelyeken belül van egy parancskód, amely egyedileg jellemzi a célját. Az edParam paraméterrel adatokat küldünk az eszközre, az edAnswerData paraméter pedig az eszközről kapott adatokat tartalmazza. A leírt rekordtagok karakterlánctípusa lehetővé teszi az adatok szabad és vizuális kezelését HEX karakterlánc formátumban. És ami a legkellemesebb, a leírt lemez formátuma ideológiailag valahol középen áll a közvetlen célja és a különféle megjelenítési formái (INI, HEX, XML stb.) között.

A parancsvégrehajtás, azaz az adatok készülékre történő küldése 8 bájt hosszúságú adatcsomagok küldésével valósul meg (4. lista). Ez a hosszúság nem az egyetlen döntés, ezt a választást a felső réteg protokoll követelményei határozzák meg, és minden esetben eltérő lehet. Ezt úgy hívják, ízlés dolga. A furcsa IsUSBMode jelző az ExecuteCommand metódusban (Listing 5 in PC Disk World) emlékeztet arra, hogy az USB helyett esetleg COM portot vagy más interfészt kell használnunk. Az elküldött adatcsoport elején egy tetszőlegesen választott formátumú (például 3E3E3E2B) szinkronizálási szekvencia kerül az eszközre, amely tájékoztatja az eszközt, hogy a bemeneten teljesen legális adatok vannak. Hadd emlékeztesselek erre ebben az esetben beszélgetünk nem annyira a HID-ről, hanem egy speciális felső szintű protokollról, amelyet ideológiailag elválasztottak a hardvertől, és konkrét alkalmazott problémák megoldására tervezték.

Az eszközről kapott adatok GetDataExecutor kezelőjében (8 bájtos csomag) egy speciálisan létrehozott OnNewInputData eseményt használtak az eredetileg feldolgozott adatok további feldolgozásra való átvitelére, jelezve azok régi és új értékeit (6. lista a "World"-on a PC-lemezről"). Így a nyers adatok érkezésének és a további feldolgozás jelzésének eseményei szétválaszthatók, lehetővé téve néhány speciális figyelmeztető algoritmus hozzáadását a korai szakaszban a hibás, ismétlődő vagy szükségtelen bemeneti információkhoz.

Az itt bemutatott példák a HID-eszközzel való munkavégzésre illusztrálják a cikk általános gondolatát - a nem szabványos HID-eszközök Delphi-eszközökkel történő programozásának viszonylagos egyszerűségét.

Bevezetés
Kinek szól ez a könyv?
Mit találsz a könyvben
Szoftverkövetelmények
Hardverkövetelmények
A kódról
A fejezetek rövid leírása
Jelölés
Kösz
Visszacsatolás
I. rész. Az USB értelmezése
1. fejezet USB specifikáció
1.1. Mi az az USB és miért van rá szükség
1.1.1. Általános USB architektúra
1.1.2. USB fizikai és logikai architektúra
1.1.3. USB alkatrészek
1.1.4. USB-eszköz tulajdonságai
1.1.5. Kommunikációs alapelvek
1.1.6. Megszakítási mechanizmus
1.1.7. Kommunikációs módok
1.1.8. A kommunikáció logikai szintjei
1.1.8.1. Kliens szoftver szintje
1.1.8.2. USB rendszer meghajtó szintje
1.1.8.3. Interfész Host Controller Layer
1.1.8.4. USB periféria busz szint
1.1.8.5. USB logikai eszközszint
1.1.8.6. Az USB-eszköz funkcionális szintje
1.1.9. Adatátvitel szintek szerint
1.1.10. Az adatátvitel típusai
1.1.11. Személyzet
1.1.12. Végpontok
1.1.13. Csatornák
1.1.14. Csomagok
1.1.14.1. Az IN, OUT, SETUP és PING token csomagok formátuma
1.1.14.2. SOF csomag formátum
1.1.14.3. Adatcsomag formátum
1.1.14.4. Nyugtázó csomag formátum
1.1.14.5. SPLIT csomagformátum
1.1.15. Ellenőrző összeg
1.1.15.1. CRC számítási algoritmus
1.1.15.2. Szoftver CRC számítás
1.1.16. Tranzakciók
1.1.16.1. Tranzakciótípusok
1.1.16.2. Tranzakció megerősítése és folyamatszabályozás
1.1.16.3. Tranzakciós protokollok
1.2. Kérések USB-eszközökhöz
1.2.1. Konfigurációs csomag
1.2.2. Normál kérések USB-eszközökhöz
1.2.2.1. A GET_STATUS állapot lekérése
1.2.2.2. A CLEAR_FEATURE tulajdonság visszaállítása
1.2.2.3. SET_FEATURE tulajdonság felbontása
1.2.2.4. A cím beállítása a SET_ADDRESS buszon
1.2.2.5. GET_DESCRIPTOR fogantyú beszerzése
1.2.2.6. SET_DESCRIPTOR leíró átadása
1.2.2.7. Szerezze be a GET_CONFIGURATION konfigurációs kódot
1.2.2.8. A SET_CONFIGURATION konfigurációs kód beállítása
1.2.2.9. A GET_INTERFACE interfész konfigurációs kódjának lekérése
1.2.2.10. A SET_INTERFACE interfész beállítási kódjának beállítása
1.2.2.11. A SYNC_FRAME szinkronizálási keretszám beállítása
1.2.2.12. Standard kérések kezelése
1.2.3. Készülék fogantyúja
1.2.3.1. Készülék fogantyúja
1.2.3.2. Minősítő eszközleíró
1.2.3.3. Konfiguráció Leíró
1.2.3.4. Interfész leíró
1.2.3.5. Végpont fogantyú
1.2.3.6. Vonal fogantyú
1.2.3.7. Konkrét leírók
1.2.3.8. Leíró Megrendelés megszerzése
1.3. Plug and Play (PnP) rendszer
1.3.1. USB-eszközök konfigurálása
1.3.2. USB-eszköz számozás
1.3.3. PnP USB azonosítók
1.3.4. Szimbolikus eszköznevek
1.4. WDM modell
2. fejezet Mikrokontroller C programozása
2.1. Általános információk a mikrokontrollerek C nyelvéről
2.2. Szabványos könyvtárak használata
2.3. Programozás az AT89C5131-hez
2.3.1. Inicializáló fájl
2.3.2. Leíró struktúrák
2.3.3. Projekt felépítése
3. fejezet Eszközök
3.1. programozók
3.1.1. Flip programozó
3.1.2. ER-Tronik programozó
3.2. Illesztőprogram-létrehozó eszközök
3.2.1. NuMega Driver Studio
3.2.2. Jungo WinDriver
3.2.3. Jungo KernelDriver
3.3. Microsoft Visual Studio eszközök
3.3.1. Attól függ (Dependency Walker)
3.3.2. Hibakeresés
3.3.3. GuidGen
3.4. Microsoft DDK eszközök
3.4.1. eszköz fa
3.4.2. devcon
3.4.2.1. osztályok kulcsa
3.4.2.2. driverfiles kulcs
3.4.2.3. hwids kulcs
3.4.2.4. kulcs újrakeresése
3.4.2.5. veremkulcs
3.4.2.6. állapot gomb
3.4.3. Chklnf és Genlnf
3.5. CompuWare Corporation eszközök
3.5.1. Monitor
3.5.2. SymLink
3.5.3. EzDriverInstaller
3.5.4. WdmSniff
3.6. SysInternals eszközök
3.6.1. WinObj
3.7. USB fórumeszközök
3.7.1. HID Leíró eszköz
3.8. USB parancsellenőrző
3.9. HDD szoftvereszközök
3.10. Sourceforge eszközök
3.11. Bus Hound megfigyelő szoftver
4. fejezet A .NET Win32 funkcióinak értelmezése
4.1. Általános információ
4.2. Win32 függvények importálása
4.3. szerkezetek
4.3.1. StructLayout attribútum
4.3.2. MarshalAs attribútum
4.4. Közvetlen hozzáférés az adatokhoz
4.5. Windows üzenetek kezelése
4.6. Általános információk a WMI-ről
4.7. Online források ehhez a fejezethez
rész II. USB osztályok
5. fejezet
5.1. USB/RS-232 interfész átalakítási módszerek
5.2. Általános információk az RS-232 interfészről
5.2.1. Cserevonalak
5.2.1.1. Továbbított adatok (BA/TxD/TD)
5.2.1.2. Fogadott adatok (BB/RxD/RD)
5.2.1.3. Átviteli kérelem (CA/RTS)
5.2.1.4. Átvitel kész (CB/CTS)
5.2.1.5. DCE kész (CC/DSR)
5.2.1.6. DTE kész (CD/DTR)
5.2.1.7. Hívásjelző (CE/RI)
5.2.1.8. Carrier Detect (CF/DCD)
5.2.1.9. Fogadásra kész (CJ)
5.3. CDC specifikáció
5.3.1. Szabványos leírók
5.3.2. Funkcióleírók
5.3.2.1. Fejléc funkcióleíró
5.3.2.2. Parancsmód-leíró
5.3.2.3. Absztrakt eszközleíró
5.3.2.4. Csoportosítási leíró
5.3.3. Speciális kérések
5.3.3.1. SET_LINE_CODING kérés
5.3.3.2. GET_LINE_CODING kérés
5.3.3.3. SET_CONTROL_LINE_STATE lekérdezés
5.3.3.4. SEND_BREAK kérés
5.3.4. Értesítések
5.3.4.1. RING^DETECT értesítés
5.3.4.2. SERIAL_STATE értesítés
5.4. CDC támogatás Windows rendszeren
5.4.1. A Windows-szolgáltatások áttekintése a soros portokkal való munkához
5.4.1.1. Alapvető kikötői műveletek
5.4.1.2. Port beállítási funkciók
5.4.1.3. Egyedi port beállítás
5.4.1.4. A modemvonalak állapotának lekérése
5.4.1.5. Együttműködés a CDC-vel a platformon. HÁLÓ
5.4.2. Megfelelő Windows-szolgáltatások és USB-kérések
6. fejezet HID osztály
6.1. HID eszköz specifikáció
6.2. Hogyan kommunikáljunk HID eszközzel
6.3. A HID eszközillesztő telepítése
6.4. HID eszközazonosító
6.4.1. A rendszerindító eszközök azonosítása
6.4.2. HID eszköz konfigurációs leíró
6.4.3. HID leíró
6.4.4. Jelentésleíró
6.5. Jelentésleíró szerkezet
6.5.1. Jelentés elemei
6.5.1.1. Rövid típusú elemek
6.5.1.2. Hosszú típusú elemek
6.5.2. Jelentéstételi típusok
6.5.2.1. Alapvető elemek
6.5.2.2. Globális elemek
6.5.2.3. Helyi elemek
6.5.3. Leíró példák
6.6. Kérések egy HID eszközhöz
6.6.1. GET_REPORT kérés
6.6.2. SET_REPORT kérés
6.6.3. GET_IDLE kérés
6.6.4. SET_IDLE kérés
6.6.5. GET_PROTOCOL kérés
6.6.6. SET_PROTOCOL kérés
6.7. Eszközök
6.8. Illesztőprogramok HID-eszközökhöz a Windows rendszerben
7. fejezet Egyéb USB-osztályok
rész III. USB programozási gyakorlat
8. fejezet USB-eszköz létrehozása AT89C5131 alapján
8.1. Általános információk az AT89C5131-ről
8.2. Az AT89S5131 szerkezeti diagramja
8.3. Az USB AT89C5131-et regisztrál
8.3.1. USBCON regiszter
8.3.2. Regisztrálja az USBADDR-t
8.3.3. USBINT regiszter
8.3.4. USBIEN regiszter
8.3.5. UEPNUM regiszter
8.3.6. UEPCONX regiszter
8.3.7. UEPSTAX nyilvántartás
8.3.8. Regisztrálja az UEPRST-t
8.3.9. UEPINT nyilvántartás
8.3.10. Regisztrálja az UEPIEN-t
8.3.11. UEPDATX regiszter
8.3.12. Regisztrálja az UBYCTLX-et
8.3.13. UFNUML regiszter
8.3.14. Regisztrálja az UFNUMH-t
8.4. AT89S5131 áramkör
8.5. Alapkivitel az AT89C5131-hez
8.5.1. A program első verziója az АТ89С5131-hez
8.5.2. Karakterlánc-leírók hozzáadása
8.5.3. Végpontok hozzáadása
8.6. Program letöltés
9. fejezet A CDC osztály megvalósítása
9.1. CDC megvalósítás
9.2. Eszköz fogantyúi
9.2.1. Végpont inicializálás
9.2.2. CDC kérések feldolgozása
9.2.3. RS port és CDC vonal konfiguráció
9.2.4. Adatok fogadása és továbbítása
9.3. Illesztőprogram telepítése
9.4. Adatcsere programozása CDC eszközzel Delphiben
9.5. Csere programozása CDC eszközzel C# nyelven
9.5.1. Az MSCOMM komponens használata
9.5.2. Win32 függvények használata
9.6. CDC problémák
10. fejezet A HID osztály megvalósítása
10.1. A HID megvalósítása az AT89C5131-en
10.2. Több bájt átvitele
10.3. Funkciójelentések
10.4. Adatok küldése a gazdagéptől (SET_REPORT)
10.5. HID eszköz telepítés
10.6. Kommunikáció HID eszközzel
10.6.1. HID-eszköz nevének lekérése
10.6.2. Eszközattribútumok lekérése és jelentések olvasása
10.6.3. Adatátvitel a gazdagépről a HID eszközre
10.7. HID-eszköz példák
10.7.1. Az egér eszköz megvalósítása
10.7.2. A "billentyűzet" eszköz megvalósítása
10.8. A HID protokoll használata
10.8.1. Adatértelmezés
10.8.2. Gyűjtemények
10.8.3. Tömbök és gombok
10.9. HID eszköz több jelentéssel
11. fejezet Különleges képességek ablakok
11.1. Az API-funkciók beállítása
11.1.1. USB-eszközök felsorolása
11.1.2. Az USB-eszköz állapotának lekérése
11.2. A WMI-vel rendelkező USB-eszközök felsorolása
11.3. A Windows XP speciális funkciói
11.3.1. HidD_GetInputReport – HID jelentések olvasása
11.3.2. Nyers bemeneti adatok beszerzése
11.4. DirectX funkciók
11.5. Új felszerelés hozzáadására szolgáló párbeszédpanel
11.6. Szimbolikus eszköznevek használata
11.7. A flash meghajtók biztonságos eltávolítása
11.8. Eszköz hozzáadásának és eltávolításának észlelése
11.9. Internetes források
12. fejezet Illesztőprogram-fejlesztés
12.1. A WDM illesztőprogram alapvető eljárásai
12.1.1. Eljárás DriverEntry
12.1.2. Eljárás Eszköz hozzáadása
12.1.3. Eljárás Unload
12.1.4. A járművezető működési eljárásai
12.1.4.1. Csomag fejléc
12.1.4.2. I/O veremcellák
12.4.1.3. A járművezető működési eljárásai
12.1.5. IOCTL-kérések kiszolgálása
12.2. Az illesztőprogram betöltése és az illesztőprogram meghívása
12.2.1. A járművezetői eljárás
12.2.2. A járművezető regisztrációja
12.2.2.1. Regisztráció az SCM-hez
12.2.2.2. Az illesztőprogram beállításai a rendszerleíró adatbázisban
12.2.3. Munkafolyamatokra hivatkozva
12.2.4. Az illesztőprogram tárolása a végrehajtható fájlban
12.3. Illesztőprogram létrehozása a Driver Studio segítségével
12.3.1. Néhány szó a Driver Studio könyvtáráról
12.3.1.1. KDriver osztály
12.3.1.2. KDevice osztály
12.3.1.3. Klrp osztály
12.3.1.4. KRegistryKey osztály
12.3.1.5. KLowerDevice osztály
12.3.1.6. USB osztályok
12.3.2. Egyéb Driver Studio osztályok
12.3.3. Illesztőprogram-sablon létrehozása a Driver Studio segítségével
12.3.3.1. 1. lépés Állítsa be a projekt nevét és elérési útját
12.3.3.2. 2. lépés: Az illesztőprogram-architektúra kiválasztása
12.3.3.3. 3. lépés: Gumiabroncs kiválasztása
12.3.3.4. 4. lépés – Határozza meg a végpontok készletét
12.3.3.5. 5. lépés: Az osztály és a fájlnév megadása
12.3.3.6. 6. lépés Az illesztőprogram funkcióinak kiválasztása
12.3.3.7. 7. lépés: A kérések feldolgozásának módja
12.3.3.8. 8. lépés: Állandó illesztőprogram-beállítások létrehozása
12.3.3.9. 9. lépés Az illesztőprogram tulajdonságai
12.3.3.10. 10. lépés: Az IOCTL kódok megadása
12.3.3.11. 11. lépés Speciális beállítások
12.3.4. Az illesztőprogram-sablon finomítása
12.3.5. Device Class Base Methods
12.3.6. Adatolvasás megvalósítása
12.3.7. Illesztőprogram telepítése
12.3.8. Adatolvasó
12.3.9. Adatok olvasása más típusú végpontokból
12.3.10. "Tiszta" USB-eszköz-illesztőprogram
rész IV. Könyvtár
13. fejezet INF fájlformátum
13.1. INF fájl szerkezet
13.1.1. Verzió szakasz
13.1.2. Gyártói rész
13.1.3. DestinationDirs szakasz
13.1.3.1. DefaultDescDir kulcs
13.1.3.2. file-list-section kulcsok
13.1.3.3. dirid kulcs
13.1.3.4. subdir kulcs
13.1.4. Modelleíró rész
13.1.5. szakasz xxx. AddRegw xxx. DelReg
13.1.6. szakasz xxx. logconfig
13.1.7. szakasz xxx. CopyFiles
13.1.8. szakasz Strings
13.1.9. Szakasz linkek
13.2. INF fájlok létrehozása és tesztelése
13.3. Eszközök telepítése INF fájl használatával
13.4. Registry ágak USB-hez
14. fejezet A Windows alapvető funkciói
14.1. CreateFile és CloseHandle funkciók: Objektum megnyitása és bezárása
14.1.1. további információ
14.1.2. Visszatérési érték
14.1.3. Hívjon példát
14.2. ReadFile funkció: adatok olvasása
14.2.1. további információ
14.2.2. Visszatérési érték
14.2.3. Hívjon példát
14.3. Fájlírási funkció: Adatátvitel
14.3.1. további információ
14.3.2. Visszatérési érték
14.3.3. Hívjon példát
14.4. ReadFileEx funkció. APC adatolvasás
14.4.1. Visszatérési érték
14.4.2. további információ
14.4.3. Hívjon példát
14.5. WriteFiieEx funkció: APC adatátvitel
14.5.1. Visszatérési érték
14.5.2. Hívjon példát
14.6. A WaitForSingieObject függvény egy objektum jelzett állapotára vár
14.6.1. Visszatérési érték
14.7. WaitForMultipleObjects függvény: várja az objektumok jelzett állapotát
14.7.1. Visszatérési érték
14.8. GetOverlapped Result függvény: egy aszinkron művelet eredménye
14.8.1. Visszatérési érték
14.9. DeviceloControl funkció: közvetlen vezetői vezérlés
14.9.1. Visszatérési érték
14.10. Cancel/O funkció: művelet megszakítása
14.10.1. Visszatérési érték
14.11. Dos Device funkció lekérdezése, az eszköz nevének lekérése a DOS nevéből
14.11.1. Visszatérési érték
14.11.2. Hívjon példát
14.12. Define Dos Device funkció: műveletek DOS eszköznévvel
14.12.1. Visszatérési érték
14.12.2. Hívjon példát
15. fejezet A Windows struktúrái és funkciói a soros portokhoz
15.1. COMMCONFIG port beállítási struktúra
15.2. Port Properties Structure COMMPROP
15.3. COMMTIMEOUTS időtúllépések szerkezete
15.4. COMSTAT portállapot-struktúra
15.5. DCB szerkezet
15.6. BuildCommDCB függvény: DCB struktúra létrehozása karakterláncból
15.6.1. további információ
15.6.2. Visszatérési érték
15.6.3. Hívjon példát
15.7. BuildCommDCBAndTimeouts funkció: DCB struktúra és időtúllépések létrehozása karakterláncból
15.8. SetCommBreak és ClearCommBreak funkciók: Kimenetvezérlés
15.8.1. Visszatérési érték
15.9. ClearCommError funkció: Porthibák lekérése és törlése
15.9.1. Visszatérési érték
15.10. EscapeCommFunction: portvezérlés
15.10.1. Visszatérési érték
15.11. GetCommMask és SetCommMask funkciók: eseményhívási maszk
15.11.1. Visszatérési érték
15.12. A WaitCommEvent függvény COM port eseményre vár
15.12.1. Visszatérési érték
15.12.2. további információ
15.12.3. Hívjon példát
15.13. GetCommConfig és SetCommConfig funkciók: Portbeállítások konfigurálása
15.13.1. Visszatérési érték
15.13.2. Hívjon példát
15.14. CommConfigDialog Funkció: Portkonfigurációs párbeszédpanel
15.14.1. Visszatérési érték
15.14.2. további információ
15.14.3. Hívjon példát
15.15. GetCommProperties funkció: beolvassa a port tulajdonságait
15.15.1. Visszatérési érték
15.15.2. Hívjon példát
15.16. GetCommState és SetCommState funkciók: Port State
15.16.1. Visszatérési érték
15.16.2. Hívjon példát
15.17. GetCommTimeouts és SetComniTimeouts funkciók: Port időtúllépések
15.17.1. Visszatérési érték
15.17.2. Hívjon példát
15.18. PurgeComm funkció: Port pufferek kiöblítése
15.18.1. Visszatérési érték
15.18.2. Hívjon példát
15.19. SetupComm funkció: pufferméretek beállítása
15.19.1. Visszatérési érték
15.20. GetDefaultCommConfig és SetDefaitltCommConfig funkciók: Alapértelmezett portbeállítások
15.20.1. Visszatérési érték
15.21. TransmitCommChar funkció. adás speciális karakterek
15.21.1. Visszatérési érték
15.22. GetCommModemStatus funkció: modem állapota
15.22.1. Visszatérési érték
15.22.2. Hívjon példát
15.23. EnumPorts funkció: Portok felsorolása
15.23.1. további információ
15.23.2. Visszatérési érték
15.23.3. Hívjon példát
16. fejezet A Windows telepítő API struktúrái és funkciói
16.1. Beállítási funkció DiGetCiassDevs: eszközök felsorolása
16.1.1. Visszatérési érték
16.2. SetupDiDestroyDevicelnfoList funkció, amely felszabadítja az eszközleíró blokkot
16.2.1. Visszatérési érték
16.3. SetupDiEnumDeviceenterfaces Funkció: Eszközinformáció
16.3.1. Visszatérési érték
16.4. SetupDiGetDevicelnterfaceDetaii funkció: részletes eszközinformáció
16.5. SetupDiEnumDevicelInfo Funkció: Eszközinformáció
16.6. SetupDiGetDeviceRegistryProperty funkció: A Plug and Play eszköztulajdonságok lekérése
16.7. CM_Get_DevNode_Status függvény: eszköz állapota
16.8. CM_Request_Device_Eject funkció biztonságos eszközkiadás
17. fejezet Windows HID API struktúrák és funkciók
17.1. HidD_Hello Funkció: Könyvtár ellenőrzése
17.2. HidD_JetHidGuid funkció: GUID beszerzése
17.3. HidD_GetPreparsedData funkció: Készülékkezelő létrehozása
17.4. HidD_EreePreparsedData Funkció: Eszközkezelő felszabadítása
17.5. HidD_Get Feature funkció: Funkciójelentés lekérése
17.6. HidD_SetFeature funkció: Funkciójelentés átadása
17.7. HidD_GetNumlnputBuffers függvény: a pufferek számának lekérése
17.8. Funkció HidD_SetNumlnputBuffers: Állítsa be a pufferek számát
17.9. HidD_GetAttributes Funkció: Eszközattribútumok lekérése
17.10. HidD_GetManufacturerString függvény. szerezze be a gyártó karakterláncát
17.11. HidD_GetProductString függvény termékkarakterláncot kap
17.12. HidD_GetSerialNumberString függvény. sorozatszám karakterlánc lekérése
17.13. HidD_GetIndexedString függvény. soronként kapja meg
17.14. Funkció HidD_Jetlnput Bemeneti jelentés fogadása
17.15. HidD_SetOutputReport függvény. kimeneti jelentés küldése
17.16. HidP_GetCaps funkció: Eszköztulajdonságok lekérése
17.17. HidP_MaxDataListLength függvény: jelentésméretek lekérése
17.18. HidD_FIushQueue funkció: Pufferek öblítése
17.19. HidP_GetLinkColiectionNodes Funkció: Gyűjteményfa
17.20. HidP_GetScaledUsageValue és HidP_SetScaledUsage Value függvények: Konvertált értékek lekérése és beállítása
17.21. Funkció HidF_MaxUsageListLength: a kulcskódok puffermérete
17.22. Függvény HidP_UsageListDifference: különbség a tömbök között
Alkalmazások
Függelék 1. További szolgáltatások
2. függelék. Példák összeállítása a Delphi más verzióiban
3. függelék Nyelvi azonosítók táblázata (LangID)
4. függelék. Szállítókódok táblázata (szállítóazonosító, eszközazonosító)
5. függelék Eszközkezelő parancsikon létrehozása
6. melléklet: Gyakran Ismételt Kérdések
7. melléklet CD leírás
Irodalom
Tárgymutató

1. kép

Az USB interfész egyre népszerűbb, mint interfész perifériák PC-hez ill modern számítógépek gyakran nem rendelkeznek a szokásos RS-232 interfésszel. Az USB népszerűsége számos okra vezethető vissza, itt vannak a főbbek:

  • magas árfolyam, nagy zajvédelem
  • adatfolyam ellenőrzés, integritás ellenőrzés és hibajavítás
  • elágazás lehetősége csomópontokon és csatlakozásokon keresztül egy nagy szám eszközöket.
  • busz tápegység
  • busz sokoldalúsága - különféle eszközök csatlakoztatásának lehetősége (billentyűzet, nyomtató, modem)
  • automatikus rendszer azonosítás és konfigurálás, Plug and Play

Vannak azonban (gyakran indokolatlan) tényezők, amelyek visszafogják a tömeget USB használat mikrokontroller eszközök fejlesztői:

  • illesztőprogramok programozásának szükségessége a Windows számára
  • a beépített USB interfésszel rendelkező mikrokontrollerek viszonylag alacsony elterjedtsége
  • 2. lecke: Hozzon létre egy USB 2.0-kompatibilis HID joystick-eszközt.

Ez a cikksorozat azt a célt szolgálja, hogy bemutassa, hogy ezeket a nehézségeket meglehetősen könnyű leküzdeni, és mindenki "frissítheti" a készülékét a megszokott RS-232-ről USB-re, vagy létrehozhat egy új eszközt USB interfésszel.

A példákban mikrokontrollerként a Microchip által gyártott mikrokontrollert tekintjük. PIC18F4550 USB 2.0 interfésszel (támogatja az alacsony sebességet és a teljes sebességet).

1. lecke. USB Windows programozás nélkül, virtuális COM port

Az USB-eszközök fejlesztése során felmerülő feladatok egyike az RS-232 interfészről USB-re való átállás, és ha egy "régi" eszközt módosítanak, vagy az eszköznek kompatibilisnek kell lennie a meglévő protokollokkal és PC-szoftverekkel, akkor kívánatos megszabadulni minden szoftvermódosítástól.szoftver a számítógépen. A probléma egyik megoldása az USB interfész virtuális COM portként való használata. Ennek a módszernek a használata szükségtelenné teszi a számítógépes szoftver módosítását, mert. Az USB-kapcsolatot a személyi számítógép további COM-portnak tekinti. Egy másik fontos előny, hogy szabványos Windows illesztőprogramokat használnak, és nincs szükség egyedi illesztőprogramok létrehozására.

Az USB specifikáció a kommunikációs eszközök egy osztályát írja le (Communication Device Class – CDC), amely a távközlési (modemek, terminálok, telefonok) és a hálózati eszközök (Ethernet adapterek és hubok, ADSL modemek) csatlakozási módjait határozza meg, beleértve a soros port emulációt is. .

Vegyünk példának egy olyan eszközt, amely RS-232-n keresztül továbbítja a feszültségadatokat egy potenciométerről és a hőmérsékletet egy TC77 digitális érzékelőről, és két LED be- és kikapcsolására vonatkozó parancsokat is kap (az egyszerűség kedvéért ezt a példát a PICDEM™ FS-en valósítjuk meg USB DEMONSTRATION BOARD kártya, de összeállíthat egy egyszerűbb áramkört is - lásd lent).

A PICDEM FS-USB hibakereső kártya PIC18F4550 mikrokontrolleren alapuló eszközök fejlesztésére és demonstrálására készült, USB2.0 busszal. A kártya egy PIC18F4550 vezérlővel rendelkezik TQFP44 csomagban, amely a következő tulajdonságokkal rendelkezik:

  • Maximális működési frekvencia - 48 MHz (12 MIPS);
  • 32 KB Flash program memória (Enhanced Flash technológia);
  • 2 KB adatmemória (ebből 1 KB kétportos RAM);
  • 256 bájtos EEPROM adatmemória;
  • FS USB2.0 interfész, amely támogatja a 12 Mbps sebességet beépített adó-vevővel és feszültségszabályozóval.

A tábla rendelkezik:

  • Kvarc 20 MHz;
  • RS-232 interfész az USART-ről USB-re való átállás lehetőségének bemutatására;
  • Csatlakozó az áramkörön belüli programozáshoz és hibakereséshez
  • Feszültségstabilizátor, amely képes az USB-busz tápellátására váltani;
  • PICtail™ bővítőcsatlakozó;
  • TC77 hőmérséklet-érzékelő I2C-n keresztül csatlakoztatva;
  • Az ADC bemenetre csatlakoztatott változó ellenállás;
  • LED-ek, gombok.

Ez a készülék rendelkezik egy PC programmal a készülék vezérlésére, valamint a feszültség és hőmérséklet értékek megjelenítésére. Így csatlakoztathatjuk a készüléket RS-232-re, kiválaszthatjuk a rendszerben elérhető COM portot és beállíthatjuk a készülékünkkel az árfolyamot, az adatbitek számát, a stopbitek számát, valamint a paritásbitek paramétereit, ill. áramlásszabályozás a mikrokontroller programnak megfelelően (mert ismernünk kell a vezérlőnk inicializálási paramétereit)


Rizs. 2

Kezdjük el csatlakoztatni a készülékünket az USB-hez.

Microchip Technology Inc. Kész alkalmazási példát kínál AN956, amely megvalósítja az USB CDC támogatást a PIC18F2550, PIC18F2455, PIC18F4455, PIC18F4550 mikrokontrollerekhez. A program moduláris alapon épül fel, ami lehetővé teszi a könnyű modernizálást és a kész projektekbe való integrálást.

A vezérlő kezdeti inicializálása után a program az USB interfészen keresztül több kész funkción keresztül tud kommunikálni a PC-vel:

Módosítsuk programunkat úgy, hogy USB-n keresztül küldjön és fogadjon adatokat.

Az adatok előkészítésére és továbbítására szolgáló program részlete:

Adatok fogadása:

if(getsUSBUSART(input_buffer,1)) ( switch (input_buffer) ( case "1" : mLED_3_On(); break; case "2" : mLED_3_Off(); break; case "3" : mLED_4_On(); break; case " 4" : mLED_4_Off(); break; alapértelmezett: break; ) )

Miután csatlakoztatta az eszközt az USB-hez, a rendszer felismeri az új eszközt


Rizs. 3

És új berendezéseket telepít


Rizs. 4

Kiválasztjuk a telepítést a megadott helyről, és megadjuk az mcpusb.inf fájl helyének elérési útját a program forráskódjaiból az AN956-ig. Ezt követően egy új eszköz kerül a rendszerbe.


Rizs. 5

Tehát az új készülék használatra kész. A rendszer új virtuális COM porttal rendelkezik.


Rizs. 6

Most programunkban kiválaszthatjuk a megjelenő virtuális COM portot a készülékkel való kommunikációhoz...


Rizs. 7

... és nézze meg, hogy az eszköz valóban elkezdett működni a rendszerben USB-kapcsolaton keresztül megjelenő COM-porton keresztül.

Megjegyzendő, hogy az USB adatvezérlést és korrekciót biztosít, így az olyan fogalmak, mint az áramlási sebesség, a paritásbitek és az áramlásvezérlés absztrakt fogalmakká válnak, és ezeket esetünkben bárki választhatja, az egyetlen információs paraméter a virtuális COM port száma.

PICDEM CDC ablak


Rizs. 8

A beépített USB 2.0 modullal rendelkező PIC18Fxx5x mikrokontrollerek használatakor a virtuális COM port akár 80Kbyte/s (640Kbps) adatátviteli sebességet is tud biztosítani, ami jelentősen meghaladja az RS-232-n keresztül lehetséges átviteli sebességet, miközben ahogy tudjuk lásd, nem kell szoftvert módosítani egy olyan számítógépen, amelyre szükség volt!

Az 1. leckében használt mintaprogramok, dokumentáció és diagram.

  1. Töltse le a PICDEM CDC + Delphi forrásokat
  2. Töltse le a Delphi összetevőt a COM-porttal való munkavégzéshez
  3. AN956+ eredeti forráskódok
  4. Fájl user_uart.c (az AN956 eredeti programjának minden módosítása csak ebben a fájlban történt. Az 1. lecke példájának futtatásához másolja ezt a fájlt a C:\MCHFFSUSB\fw\Cdc\user\ könyvtárba, cserélje ki a user.c fájlt a projektben user_uart .c-vel, fordítsa le a projektet és flashelje meg a mikrovezérlőt)
  5. Egy USB-eszköz egyszerűsített diagramja


Rizs. 9

Megjegyzés: A PICDEM FS USB kártya eredeti áramköre a kártya áramforrásának (külső vagy USB) automatikus észlelését használja. Ezért ha egyszerűsített sémát használ, megjegyzést kell fűznie a #define USE_USB_BUSSENSE_IO sorhoz az usbcfg.h fájlban

2. lecke: USB 2.0-kompatibilis HID joystick-eszköz létrehozása

A leggyakoribb USB-eszközök a Human Interface Devices (HID). Ennek az osztálynak a tipikus képviselői az USB-billentyűzetek, egerek, joystickok, monitorbeállítási panelek, vonalkód-olvasók, kártyaolvasók stb. A HID eszközök előnyei:

  • a végrehajtás egyszerűsége;
  • kompakt kód;
  • Windows támogatás (nincs szükség további illesztőprogramokra).

A Microchip webhelyen található egy példa a HID egér megvalósítására. Fontolja meg a legegyszerűbb játékvezérlő megvalósítását ezen a példa alapján. Ehhez a projekthez a PICDEM FS-USB demókártyát (DM163025) fogjuk használni. A PICDEM FS-USB hibakereső kártyán egy változtatható ellenállás és 2 gomb található, így a fejlesztés alatt álló joystick minimális kezelőszervekkel (2 gomb és pl. gázpedál) lesz.

Először is át kell írnunk a létrehozott joystick eszközleíróját. A feladat egyszerűsítésére használhatjuk a HID Descriptor Tool programot, amely letölthető az oldalról www.usb.org

A programhoz példák találhatók néhány HID eszköz konfigurációjára, amelyeket a feladatnak megfelelően beállíthat, vagy létrehozhat saját HID eszközt.


Rizs. 10

Tehát a mi esetünkben többféle adatot használunk fel - ez a vezérlő szimulációja - a Simulation Controls, és konkrétan ez a gázkar (pedál) (Throttle) és a vezérlőgombok (Button). Ahhoz, hogy az operációs rendszer „tudhassa” ezeket az adattípusokat, le kell írni a maximális és minimális értékeket, valamint az adatok méretét. Esetünkben a "gas" egy 8 bites érték (report_size = 8, report_count = 1), a gombok állapota pedig egybites értékek mezőjeként van definiálva. A példa csak 2 gombot használ, de a mezőt egy bájt értékhez kell igazítani (report_size = 1, report_count = 8). Összességében a mikrokontrollernek, amikor adatokat kér a számítógéptől, 2 bájtot kell továbbítania - a gázszintet és a gombok állapotát a generált eszközleírónak megfelelően (a lehetséges leírók részletes leírását lásd a HID eszközök specifikációjában www.usb.org). Az eszközleíró elkészített leírása különböző formátumokban menthető, így fejlécfájlként is.h

Ezen kívül a HID osztályspecifikus leíró leírásában módosítani kell a fogadott eszközleíró méretét, és a végpontleíróban módosítani kell a végponton keresztül továbbított adatok méretét (esetünkben 2 bájtot viszünk át, így a mérete HID_INT_IN_EP_SIZE=2).

Ezek a változtatások elegendőek ahhoz, hogy a Windows a csatlakoztatott eszközt joystickként ismerje fel. Most már beállíthatjuk a karakterlánc adatait, hogy az eszköz olyan nevet kapjon, amilyet szeretnénk (pl. "PIC18F4550 Joystick"). Ahhoz, hogy az eszközhöz orosz nyelvű nevet rendeljen, meg kell adnia egy karakterlánc-leírót UNICODE kódolásban. Itt ér véget a joystick leírása, és fel kell készítenünk az adatokat a PC-re való átvitelre.

ReadPOT(); // potenciométer feszültségmérési puffer indítása = ADRESH; // A kezel gomb kimondja, hogy if(sw2==0) puffer |= 0x01; puffer &= ~0x01; if(sw3==0) puffer |= 0x02; puffer &= ~0x02; // adatátvitel Emulate_Joystick();

A projekt összeállítása és a mikrokontroller programozása után csatlakoztathatja az eszközt az USB portra. A tábla egy HID játékeszköz, telepítve van a rendszerbe és használatra kész.


Rizs. tizenegy

A Windows vezérlőpultján keresztül megnyithatjuk az elérhető játékeszközöket, kiválaszthatjuk a joystickünket, kalibrálhatjuk és tesztelhetjük a funkcionalitást.


Rizs. 12

Az eszközkonfiguráció megváltoztatásakor - vezérlők vagy gombok hozzáadásakor nemcsak az eszközleíró leírását kell megváltoztatni, hanem az adatokat szigorúan a létrehozott leírónak megfelelően kell továbbítani. Így a HASZNÁLAT_MAXIMUM (BUTTON 2) eszközleíró leírásában a maximális gombok számát 2-ről 8-ra változtatva egy 8 gombos joystickot kapunk.


Rizs. 13

Amikor a leíró bonyolultabbá válik, a joystick teljesebb megvalósítását kaphatjuk meg, miközben a következő paramétereket kell megváltoztatni: a leíró mérete, a végpont mérete, és annyi információs adatot kell küldeni. ahogy a leíróban deklarálják.


Rizs. 14

A 2. leckében használt mintaprogramok, dokumentáció és diagram.

  1. Az eredeti forráskódok a HID egér megvalósításához.
  2. HID joystick implementációs forráskódok.

3. lecke

Bármely USB-eszköznek több konfigurációja is lehet, és mindegyik konfigurációhoz több interfész tartozik. Ez az USB tulajdonság lehetővé teszi, hogy a számítógép több USB-eszközként ismerje fel a létrehozandó eszközt, amelyek különböző interfészekkel rendelkeznek. Például egy egér tartalmazhat beépített kártyaolvasót, és két független eszközként kommunikálhat a számítógéppel.

Eszközleíró szerkezet:


Rizs. 15

Az egér szabványos példája és a létrehozott joystick alapján létrehozunk egy összetett USB-eszközt, amelyet a számítógép két független HID eszközként határoz meg.

1. Hozzon létre egy leírót.

Módosítsa a leíró szerkezetét (usbdsc.h fájl)

Az eszköznek 2 interfésze lesz, mindegyik egy végponttal.

#define CFG01 rom struct \(USB_CFG_DSC cd01;\USB_INTF_DSC i00a00;\USB_HID_DSC hid_i00a00;\USB_EP_DSC ep01i_i00a00;\USB_INTF_DSC_ID\0USa1Hidi B_EP_DSC ep0 2i_i01a00; \ ) cfg01
  1. A megváltozott szerkezetnek megfelelően módosítania kell a leírót az usbdsc.c fájlban.
  2. Az usbcfg.h fájlban adja meg az interfészazonosítókat, a használt végpontokat és a jelentésleíró méreteket.
  3. A hid.c fájlban további végpontokat kell inicializálnia (a HIDInitEP függvényben), és módosítania kell a HID kérésfeldolgozási funkciót (USBCheckHIDRequest függvény).
  4. Mindegyik eszköznek, az egérnek és a joysticknek, mindegyiknek a saját végpontjára kell továbbítania az adatokat. Ezért hozzá kell adnunk olyan függvényeket, amelyek lehetővé teszik az adatok átvitelét meghatározott végpontokhoz és annak ellenőrzését, hogy a kívánt végpont szabad-e (a hid.c fájlban az mHIDTxIsBusy és a HIDTxReport függvényekhez hasonló függvényeket kell hozzáadnunk).

Ezután az egér adatátvitele így fog kinézni

A projekt összeállítása, a vezérlő felvillantása és az eszköz USB-re történő csatlakoztatása után a számítógép egy új kompozit eszközt észlel, és hozzáad egy egeret és joystick-ot.


Rizs. 16


Rizs. 17

Összetett HID-eszközök forráskódjai.

Megjegyzés. Ne felejtse el megváltoztatni a PID-t új eszköz létrehozásakor, vagy törölje a rendszerből egy korábbi, azonos PID-vel rendelkező eszközt.

4. lecke

Microchip Technology Inc. olcsó fejlesztő programozót ad ki PICkit2, amelyet elsősorban Flash vezérlők programozására használnak. A programozó megkülönböztető jellemzője a teljes dokumentáció és a firmware forráskódok elérhetősége a mikrokontrollerhez, valamint egy shell program a számítógéphez. A PICkit2 USB-ről működik, állítható programozási és tápfeszültséget generál, valamint 3 bemeneti-kimeneti vonallal rendelkezik a programozható eszközhöz való csatlakozáshoz. A programozó firmware-ének frissítéséhez a PICkit2-ben egy rendszerbetöltő program került megvalósításra.


Rizs. 18

PICkit2 alapú CDC eszköz

Mindezen funkciók segítségével, a PICkit2 programozóra alapozva, lehetőség nyílik saját USB-eszköz létrehozására és hibakeresésére, amellyel bármikor visszatérhet a programozói funkciókhoz. A programozóba flashelt bootloader segítségével a PICkit2-be más programok is flashelhetők, például a virtuális COM port támogató program. Ehhez vegyük a CDC példáját, nevezzük át a projektet, és tegyük a következőket

  1. a main.c fájlban megváltoztatjuk a firmware hely címét (a PICkit2 rendszerbetöltő átadja a vezérlést a felhasználói programnak a 0x002000 címre.
    #pragma kód _RESET_INTERRUPT_VECTOR = 0x002000
  2. az io_cfg.h fájlban mindent eltávolítunk a D portról (a PORTC0-on beállíthatja, hogy a LED villogjon).

    Mivel a PICKIT2 mindig USB-ről működik, beállítottuk

    #define usb_bus_sense 1 // az eszköz mindig csatlakoztatva van #define self_power 0 // az eszköz USB-ről van táplálva

  3. az usbcfg.h fájlban 2 sorra teszünk megjegyzéseket
    //#define USE_SELF_POWER_SENSE_IO //#define USE_USB_BUS_SENSE_IO
  4. A user.c fájlban USB-re írjuk ki a szükséges adatokat
  5. tartalmazza a pickit2.lkr linker fájlt

Ezt követően lefordíthatja a projektet, és betöltheti az új firmware-t a PICkit2 shell-en keresztül.

A PICkit2 átprogramozása után a számítógép egy új COM port megjelenését észleli, és a hiperterminálon keresztül láthatjuk, hogy a PICkit2 a virtuális COM porton keresztül küld adatokat.

A példa forráskódja a következő címen érhető el link.

A példa alapján és a PICkit2 programozó külső érintkezőit használva adatokat fogadhat külső eszközökről, és USB-n keresztül továbbíthatja a számítógépre. Így a PICkit2 használatával adatokat továbbíthat COG LCD kijelzőkre, I2C olvasókra, SPI és 1 vezetékes eszközökre, például hőmérséklet érzékelőkre stb.

Rádió HID billentyűzet PICkit2 alapú


Rizs. 19

Tekintsünk még egy példát a PICkit2 programozó „nem megfelelő” használatára - egy légi interfésszel rendelkező billentyűzet emulátorra. Egy ilyen eszköz használható például prezentációkhoz - diák lapozásához a számítógéptől távol.

Egy ilyen eszköz megvalósításához szükségünk van:

  • PICkit2
  • PICkit2 demókártya (DV164120)
  • rádióvevő (rfRXD0420) és rádióadó (rfPIC12F675) az rfPICkittől.

Csatlakoztatjuk a rádióvevőt a demo kártyához. A kártyán lévő mikrokontroller adatokat fogad a vevőtől, feldolgozza azokat, és ha a távirányító két gombja közül valamelyiket megnyomja, beállítja a log.1 szintet a PICkit2-höz csatlakoztatott 2 kimenet egyikén.

A PICkit2 a következő funkciókat fogja ellátni:

  • USB-n keresztül számítógéphez csatlakoztatva HID billentyűzetként van meghatározva
  • +5V tápfeszültséget generál egy vevővel ellátott demo kártya számára
  • lekérdezi a vevővezérlő 2 külső kimenetét, és ha van, egy naplót. 1 küldjön kódokat a PageUp vagy PageDown gombok megnyomásához a számítógépnek.

Két virtuális COM port (FTDI2232 chip emuláció) a PICKit2 alapján

Ez a példa csak az USB működésének megismerésére szolgál. Használat előtt tekintse át az FTDI jogosítvány követelményeit!

A példa bemutatja, hogyan lehet 2 virtuális COM portot készíteni egy USB portos mikrokontroller alapján Először telepíteni kell az FTDI2232 chiphez illesztőprogramokat. Ezután a PICkit2 rendszerbe való indításhoz ki kell választania a firmware frissítés elemet a PICkit2 shellben, és rá kell mutatnia a TestVCP2.hex fájlra innen. archívum. A PICkit2 újraprogramozása után 2 független soros COM port lesz a rendszerében.

Példa a weboldalról http://forum.microchip.com/tm.aspx?m=261649

A PICkit2 programozóként való visszaállításához le kell választania a PICkit2-t az USB-ről, és a gomb lenyomása közben csatlakoztassa újra az USB-kábelt, majd válassza a programozó szabványos firmware-ének betöltését.

Az összes fenti példa az MCFFFSUSB-keretrendszer v1.3-as verzióján alapul. Az USB OTG-vel rendelkező PIC24 és PIC32 vezérlők megjelenésével a Microchip kiadta a verem új verzióját - USB stack v. 2.x.

Az USB verem új verziójában v. 2.3, az USB-kliens funkcionalitását megvalósító USB-eszközveremek, a gazdagép-funkcionalitást megvalósító USB Embedded hoszt mellett egy kettős szerepkörű USB-verem is beszerzett, amely mind a gazdagép, mind a kliens funkcióit megvalósítja; és az USB OTG, amely támogatja a Host Role Negotiation Protocol (HNP), a Session Request Protocol (SRP) protokollt, és teljes mértékben megfelel az USB OTG specifikációnak. Az alkalmazási példákban megvalósítva:

  • Beágyazott gazdagép
    • Nyomtatóosztályú gazdagép – ESC/POS, PostScript® és PCL5 nyomtatók támogatása
    • CDC osztályú gazdagép – ACM-eszközök támogatása (absztrakt vezérlési modell)
    • HID billentyűzet
  • eszköz
    • HID rendszerbetöltő - hozzáadott támogatás a PIC32MX460F512L és PIC18F14K50 családokhoz
    • HID billentyűzet, egér
    • MSD belső flash demó – belső flash használata fájlok tárolására
    • MSD + HID kompozit példa - Példa MSD és HID kompozit eszközre
    • CDC - COM port emuláció
    • PIC32MX460F512L család támogatása az összes PC demó projekthez
    • A HID, MCHPUSB és WinUSB példák most már támogatják a Microsoft Plug-and-Play (PnP) funkcióját az automatikus észleléshez.
  • Dokumentáció
    • az összes API teljes leírása a "\Microchip\Help" mappában található

A Microchip ingyenes illesztőprogramokat biztosít a legnépszerűbb USB-osztályokhoz:

  1. Felhasználói felület (HID). Ezt a cseremódot szinte minden billentyűzet, egér és egyéb beviteli / kimeneti eszköz használja.
  2. Kommunikációs eszköz (CDC). Ezzel a móddal a legegyszerűbb soros RS-232-ről USB-re váltani. A WinXP/2K számítógépeken egy virtuális COM-port jön létre és emulálódik, ha mikrovezérlőt csatlakoztat. A COM1.. 4 porttal működő programok változtatás nélkül működnek virtuális porttal, de nagyobb sebességgel (kb. 1 Mbps)
  3. Mass Storage Devices (MSD-k). Ezek olyan eszközök, amelyek adathordozóként működnek - flash meghajtók, SD / MMC kártyák, lemezek stb.
  4. Nyomtató osztályú eszközök. Ezt az üzemmódot USB-nyomtatókkal való használatra tervezték, ami lehetővé teszi, hogy az USB-modullal rendelkező PIC-mikrokontrolleren lévő végeszköz közvetlenül az USB-nyomtatóra adja ki a szükséges információkat.
  5. Mikrochip rezidens rendszerbetöltő. A legegyszerűbb mód, amelyet csak a mikrokontroller szoftverének USB-n keresztüli frissítésére használnak. A számítógép oldaláról egy kis program van telepítve, az illesztőprogram analógja
  6. Saját driver (Egyedi). Az USB2.0 erőforrások legteljesebb kihasználása haladó felhasználók számára: lehetőség a busz üzemmódok kiválasztására (izokron, megszakítás, térhangzás, vezérlés), nagy átviteli sebesség. Mély buszismeretet és Windows szoftverfejlesztési ismereteket igényel

Bootloader USB flash meghajtóval

A firmware frissítése normál flash meghajtóról.

Az USB-OTG modullal (PIC24 vagy PIC32) rendelkező mikrokontroller firmware-ének frissítéséhez nincs szükség speciális szoftverre. A Host mód jelenléte lehetővé teszi, hogy hagyományos USB-meghajtókat (Flash Drive) csatlakoztasson a mikrokontrollerhez. Egy példa felkerült a Microchip weboldalára ( béta verzió), amely lehetővé teszi a mikrokontroller szoftverének frissítését egy csatlakoztatott USB-meghajtóról.

A példa futtatásához be kell töltenie a rendszerbetöltő firmware-t egy PIC32 USB kártyára vagy az Explorer 16-ba (telepített PIC32 USB PIM processzormodullal és PICtail Plus USB Daughter kártyával). Ha a kártya áram alá kerül, miközben a gombot lenyomva tartja, a vezérlő firmware frissítési módba lép. Ha most egy rögzített firmware-frissítési fájllal rendelkező flash meghajtót csatlakoztat, a mikrokontroller beolvassa ezt a fájlt, és felülírja a programmemóriájában.

Fejlesztőkártyák és fejlesztőeszközök USB-hez

PICkit2 hibakereső programozó (rendelési szám: PG164120)

A rendszerbetöltő jelenléte lehetővé teszi a szoftver feltöltését az USB-vel való munkavégzés készségeinek elsajátításához


Rizs. 20

PICDEM FS-USB fejlesztői kártya (rendelési szám: DM163025)

USB2.0 busszal rendelkező PIC18F4550 mikrokontrolleren alapuló eszközök fejlesztésére és bemutatására tervezve. Az alaplapon egy PIC18F4550 vezérlő található TQFP44 csomagban.


Rizs. 21

Alacsony tűszámú USB fejlesztőkészlet (rendelési szám: DM164127)

A Low Pin Count USB fejlesztőkészlet egyszerű módot kínál a Microchip PIC18F14K50 és PIC18F13K50 20 tűs USB mikrokontrollerek mikrovezérlő képességeinek értékelésére. A készlet mindent tartalmaz, amire szüksége van az USB-vezérlők használatának megkezdéséhez (szoftver, példaforrás fájlok, dokumentáció).


Rizs. 22

PIC18F87J50 Full Speed ​​USB PIC18F87J50 FS USB Demo Board (rendelési szám MA180021)

A PIC18F87J50 FS USB Demo Board a PIC18F87J50 család Full Speed ​​​​USB 2.0 mikrokontrollereinek hibakeresésére szolgál. Az autonóm működés mellett a kártya a PIC18 Explorer Board processzormoduljaként is használható.


Rizs. 23

PIC24 Starter Kit (rendelési szám: DM240011)

A PIC24F kezdőkészlet mindent tartalmaz, amire szüksége van a nagy teljesítményű PIC24F vezérlőcsalád használatának megkezdéséhez. Ez az olcsó készlet tartalmaz egy integrált in-circuit hibakeresőt és programozót, egy USB PIC24F vezérlőt (a Host és Device funkciókat az alaplapon lehet megvalósítani), egy háromszínű LED-et, egy kapacitív érintőpanelt és egy OLED grafikus kijelzőt. A demóprogram a grafikus menün keresztül lehetővé teszi adatok írását egy külső USB flash meghajtóra, az érintőpanel konfigurálását és a grafikus feladatok futtatását.


Rizs. 24

PIC32 USB kártya (rendelési szám: DM320003)

Lehetővé teszi az USB-OTG modul elsajátítását a PIC32 vezérlőkben


Rizs. 25

Fejlesztési tábla "Explorer 16 Development Board" (rendelési szám: DM240001)

Ez egy olcsó hibakereső eszköz a nagy teljesítményű PIC24 16 bites mikrovezérlő családok és a dsPIC33F digitális jelfeldolgozó vezérlők használatának megkezdéséhez.


Rizs. 26

"USB PICtali Plus" leánykártya (rendelési szám: AC164131)

Az USB processzor beépülő moduljaival együtt lehetővé teszi az USB-eszközök Host, Device, USB-OTG fejlesztését és hibakeresését.


Rizs. 27

Ilja Afanasjev,
Vállalat

Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
OSSZA MEG: