gals jak kupowałem w helionie kilka książek to w ramach promocji wybrałem jedną gratis o nazwie "Interfejsy sprzętowe komputerów PC". USB tam jest opisane dość dokładnie. Opis jest jednak fajny dopóki czyta się index :P ewentualnie specyfikację portu lub tryby :P. Dalej jest już tak nawalone że mi osobiście się nie chciało nawet tego czytać. RS232 jest lepszym standardem niż USB (niestety, choć ja uważam że na szczęście). Faktycznie są procki z konwerterem już w sobie, jednak większośc i tak wybiera poczciwy rs232, bo jest znany od lat i nie ma z nim problemu. BA! nawet jakiś czas temu pisałem programową obsługę RS232 w assemblerze na procku tak prostym, że nie miał go w sobie. Napisałem go dobrze. Do USB bym nawet nie stanął.
A teraz trochę o książce (przy czym nie jest to reklama!)
LPT opisano na 30 stronach wraz z opisem portów trybów EPP, ECP, rejestrów tego portu, jego podstawowej i ulepszonej wersji. Napisano trochę o konfiguracji.
COM opisano również na 30 stronach, opisując konwertery poziomów napięć, tryby np. asynchroniczny, podano konfigueację, jak rozwiązywać problemy z portem, jak testować port, opisano "Układy scalone asynchronicznych nadajniko-odbiorników (UART)". Czyli dużo pożytecznych informacji.
USB i FireWire opisane są na łącznie około 100 stronach! z czego USB to około 50 stron! Nie trudno się domyślić że nie jest to prosty interfejs, skoro aż tyle o nim napisano. Brak jest jakikolwiek konkretów w przeciwieństwie do LPT i COM, jest jedynie teoria przesyłania infrormacj np. "Przepustowość magistralii i urządzenia" czy też "Synchronizacja podczas transmisji izochronicznych".
O USB napisano między innymi:
tryby:
FS - full speed 12Mb/s
LS - low speed 1.5Mb/s
oraz w wersji 2.0 tryb HS - high speed 480Mb/s
Podstawowe 4 typy przepływu danych:
Transmisja izochroniczna - w czasie rzeczywistym przeprowadzana z wydzieleniem dedykowanej częśći pasma. W trybie FS takie pasmo to 1 kanał 1.023MB/s lub 2 kanały po 0.5MB/s. Dla HS to jeden kanał 24MB/s. Brak gwarancji na dostarczenie danych poprawnie, brak zaimplementowanych systemów poprawiania takich błędów np. poprzez ponowne wysłanie.
Przerwania - dane są wysyłane spontanicznie, kiedy akurat zajdzie potrzeba. Przy czym przerywania mają ustalone limity czasowe. Dane na pewno zostaną dostarczone.
Transmisja danych masowych - zajmują całe pasmo. Mają jednak najniższy priorytet i mogą być wstrzymane jeśli magistrala jest zbyt obciążona. Dane na pewno zostaną dostarczone.
Transmisje sterujące - wykorzystane do konfiguracji urządzeń. Dane zostaną dostarczone a urządzenie musi potwierdzić poprawność wykonania danego polecenia.
Dalej opisane są potoki:
Potoki:
strumieniowe - jednokierunkowe [...]. Żądania dla jednego potoku są wykonywane w ściśle okreslonej kolejności w której nadeszły. W przypadku wystąpienia poważnego błedu jest generowany sygnał <b>stall</b>.
do przesyłania komunikatów - dwukierunkowe. Są zsynchronizowane, mają określoną kolejność, wymagane potwierdzenie. Zazwyczaj następny komunikat nie zostaje wysłany bez potwierdzenia powszedniego
<b>Potoki różniące się przeznaczeniem:</b>
domyślny - czyli potok sterujący 0, którego właścicielem jest sterownik USB, jest wykorzystane do konfiguracji wszystkich urządzeń.
kliencki - należą do sterowników urządzeń. W potokach tych można przesyłać strumienie i transmisje w dowolnym typie (izochroniczne, masowe itd)
Potem opisano ramki i mikroramki a następnie transakcje magistrali wraz z formatem ramek i oznaczeniami kodów tzw. PID (np. kod IN, OUT, PING, STALL, ACK itd). Opisano mechanizmy obsługi błędów...
itd itd itd.
TO TYLKO 20 STRON! NAWET NIECAŁE 20!. Pozostałe 30 opisują dalej jak przesyłane są dane, jak wygląda zgłaszanie błędów itd.
Jak widać po tym "krótkim" opisie jest tego trochę. Mnie osobiście to przeraża i dlatego wolę COM jeśli to urządzenie ma być stosowane na różnych kompach lub LPT jeśli tylko testuje coś np. po szynie I2C.