Opracowanie układu wejść i wyjść binarnych współpracującego z

Transkrypt

Opracowanie układu wejść i wyjść binarnych współpracującego z
Opracowanie układu wejść i wyjść binarnych
współpracującego z interfejsem USB
Bloch Sławomir
Stadnik Krzysztof
WSTĘP
W każdym systemie USB jest tylko jeden host, który zarządza protokołem USB, żadne
urządzenie peryferyjne bez zezwolenia hosta nie ma dostępu do magistrali. Możliwe jest
zasilanie urządzeń peryferyjnych (pobór prądu do 100mA) jak również wprowadzanie ich
w tryb „uśpienia” (pobór prądu nie większy niż 500µA). Dane są przesyłane w kodzie NRZI.
Kabel USB to cztery żyły: masa, zasilanie oraz para D+ D-, na której różnicowo są
przesyłane dane. Przy wysyłaniu jedynki przewód D+ jest w stanie wysokim
a D- niskim, zaś w przypadku przesyłania zera na odwrót. Jeśli występuje ciąg
5 jedynek to wstawiane jest zero. Host wysyłając jednocześnie na D+ i D- stan niski przez
ponad 2,5µs chce zresetować urządzenie peryferyjne.
Serial Interface Engine jest częścią warstwy fizycznej i odpowiada za konwersję
danych szeregowych na równoległe i odwrotnie w zależności od kierunku transmisji. Serial
Interface Engine jest odpowiedzialny również za generowanie bitów CRC(BER<10-10) i ich
weryfikację, jak również za rozpoznawanie sygnałów wprowadzającego w stan uśpienia,
powrotnego z tego stanu oraz sygnału reset.
W każdym systemie jest zawsze jeden host controller. Układ ten formuje ramki
i zarządza protokołem USB. Transfer danych w tym protokole można podzielić na
3 części:
•
Token phase – zainicjowanie przez host tokena wskazującego na rodzaj transferu
•
Data phase – transmisja danych w kierunku zgodnym z kierunkiem wskazywanym
przez token
•
Handshake phase – (opcjonalna) wysyłanie specjalnego pakietu (handshake packet)
wskazującego czy transmisja się powiodła czy nie.
Host chcąc odebrać dane od urządzenia wysyła token. Jeśli urządzenie faktycznie ma dane
do wysłania następuje ich wysłanie i ewentualnie faza handshakingu. Jeśli ich nie posiada,
host przekazuje token do następnego urządzenia. W przypadku gdy host chce wysłać dane do
urządzenia również wysyła token, lecz inny niż w powyższym przypadku, a za nim pakiety
z danymi.
2
Na początku każdego pakietu następuje synchronizacja urządzenia peryferyjnego (ciąg
D+D-D+D-D+D-D+D-). Na początku pakietu znajduje się pole służące do rozróżnienia rodzaju
pakietu (Packet Identifier Fidel – 8 bitów). Wyróżniamy następujące rodzaje pakietów:
•
Tokeny – OUT (wskazują, że dane będzie wysyłana od hosta), IN (dana wysyłana
będzie do hosat), SOF token (wskazują początek ramki), SETUP token (dana będzie
wysyłana od hosta w celu konfiguracji urządzenia)
•
Pakiety danych – w polu PIF takiego pakietu znajduje się jego numer
•
Handshake – w polu PIF takiego pakietu znajduje się informacja czy transmisja się
udała (ACK), czy nie (NAK)
W zależności od rodzaju pakietu wyróżnić możemy też pole adresu (tokeny), podzielone
na dwie części. Pierwsza część to numer urządzenia (od 1 do 127), który przydzielił mu host.
Numer 0 jest zabroniony jako adres stały, wykorzystywany jako adres wstępny. Druga część
określa adres tzw. endpointu (każde urządzenie peryferyjne zawiera przynajmniej jeden).
Następnie znajdują się dane (do 1023 bajtów – tylko pakiety danych) i bity CRC
(nie występują w pakietach handshake)
Pakiet danych
Handshake pakiet
Pakiet Token SOF
Pozostałe pakiety Token
3
USB może obsługiwać różnorodne urządzenia także dzięki oferowaniu następujących
sposobów transmisji danych:
•
transmisja typu BULK – przewidziana dla urządzeń potrzebująch przesyłać duże
bloki danych, bez zapewnienia stałych interwałów między transferami.
Ponadto w transmisji typu BULK zapewniane jest bezbłędne dostarczenie danych
i ewentualne wznowienie „transakcji”, które się nie powiodły. Ten typ transmisji
wykorzystują takie urządzenia jak drukarki, skanery, dyski twarde itp.
•
transmisja typu ISO (izochroniczna) – przewidziana jest dla klasy urządzeń, które
muszą transmitować lub odbierać dane synchronicznie. W grupie tej można znaleźć
np.: kamery, głośniki, mikrofony itp. W fazie inicjacji rezerwowany jest fragment
pasma magistrali USB dla poprawnej obsługi urządzenia ewentualne błędy transmisji
nie są korygowane, ale przekaz w tym trybie ma wyższy priorytet niż dla typu BULK.
•
transmisja typu INTERRUPT – przewidziana jest dla urządzeń, które zwykle swoją
pracę opierały na systemie przerwań procesora. Zamiast rzeczywistych przerwań
stosuje się tu jednak technikę „odpytywania” urządzenia w ustalonych odstępach
czasowych. Ten tryb transmisji podobnie jak BULK zapewnia bezbłędne dostarczenie
danych do odbiorcy. Najczęściej transmisję typu INTERRUPT wykorzystują
urządzenia takie jak klawiatury, myszy itp.
• transmisja typu CONTROL – tryb od którego zaczyna się komunikacja między
hostem a urządzeniem, służy do konfiguracji urządzeń, konfiguracja może się odbyć
nie tylko podczas enumeracji urządzenia lecz również w każdym momencie
transmisji.
Systemy USB mogą pracować z szybkością:
•
Low Speed (LS) – do 1,5Mb/s (maksymalna długość kabla 3m)
•
Full Speed (FS) – 12Mb/s (maksymalna długość kabla 5m)
•
High Speed (HS) – 480Mb/s (maksymalna długość kabla 5m)
Maksymalna odległość, na jaką mogą być przesyłane dane poprzez USB to 25m, lecz co
5m musimy wstawić huba.
4
Po podłączeniu urządzenia do działającego hosta następuje:
•
Host rozpoznaje, że urządzenie zostało przyłączone dzięki dzielnikowi napięcia,
do którego przyłączana jest para różnicowa,
•
Host do huba, do którego zostało podłączone urządzenie wysyła zapytanie co zostało
podłączone (kolejny hub czy urządznie),
•
Gdy jest to urządzenie host wysyła sygnał seretu do tego nowo podłączonego
urządzenia,
•
Po resecie urządzenie komunikuje się z hostem za pomocą endpointu 0,
•
Host wykrywa szybkość, z jaką urządzenie może przesyłać dane (w zależności czy
linia D+ (FS) czy D- (LS)ma potencjał bliski VCC),
•
Host przydziela adres urządzeniu,
•
Na przydzielony adres host wysyła zapytanie o informacje o podłączonym urządzeniu,
a na ich podstawie wybiera odpowiedni sterownik, do komunikacji z urządzeniem,
•
Na podstawie sterownika ustawiany jest tryb w jakim odbywać się będzie
komunikacja.
KONTROLER FT 245 BM
5
Schemat blokowy kontrolera przedstawiony jest na powyższym rysunku. Składa się on z
następujących bloków funkcjonalnych:
•
3,3V LDO Regulator
Główną funkcją tego bloku jest zasilanie bloków USB Transceiver oraz Reset
Generator. Blok ten w mniejszym stopniu może być wykorzystany do zasilania
zewnętrznych układów wymagających napięcia 3,3V – pod warunkiem, że
pobierany przez nie prąd jest nie większy niż 5mA – za pomocą pinu 3V3OUT.
Dostarcza również 3,3V do pinu RSTOUT#.
•
USB Transceiver
Nazwa bloku jest skrótem od Transmiter-Receiver (Nadajnik-Odbiornik). USB
Transceiver zapewnia dla łącza USB 1.1 / USB 2.0 pracę w trybie full-speed.
•
USB DPLL
Blok ten odzyskuje z danych w kodzie NRZI sygnał zegarowy i dostarcza go
oraz te dane do bloku SIE.
•
6MHz Oscillator
Za pomocą tego bloku otrzymywany jest sygnał zegarowy o częstotliwości
6MHz, który jest wykorzystywany przez blok x8 Clock Multiplier.
•
x8 Clock Multiplier
Przy użyciu sygnału o częstotliwości 6MHz generowany są sygnały zegarowe
o częstotliwości 12MHz dla bloków SIE, USB Protocol Engine i UART FIFO
Controller oraz 48MHz dla bloków USB DPLL i Baud Rate Generator.
•
Serial Interface Engine
Blok ten dokonuje konwersji równoległo-szeregowej lub szeregoworównoległej danych z/do łącza USB. Zgodnie ze specyfikacją USB 2.0 dodaje
bądź usuwa bity kontrolne CRC5 lub CRC16 do/z strumienia danych.
6
•
USB Protocol Engine
Blok zajmuje się obsługą protokołu USB.
•
Dual Port TX Buffer (128 bajtów)
Bufor pośredniczący, do którego zapisywane są dane przychodzące z portu
USB, a następnie przekazywane do bloku UART Transmit Register. Odbywa
się to pod kontrolą ze strony UART FIFO Controller.
•
Dual Port RX Buffer (384 bajtów)
Działanie bloku jest analogiczne do powyższego, lecz dla danych
transmitowanych w przeciwnym kierunku.
•
UART FIFO Controller
Kieruje transferem danych pomiędzy buforami Dual Port TX i RX Buffer
a rejestrami bloku UART.
•
FIFO Controller
Blok dokonuje konwersji równoległo-szeregowej lub szeregowo-równoległej
danych do/z interfejsu RS245. Obsługuje piny D0…D7, RD#, WR, TXE#,
RXF#.
•
Baud Rate Generator
Generator dostarcza blokowi UART sygnału pochodzącego z 48MHz Reference
Clock, lecz o częstotliwości 16-krotnie zwiększonej. Określa parametr Baud
Rate bloku UART, który jest programowalny w zakresie od 183 do 3 milionów
bodów.
•
RESET Generator
Blok RESET Generator zapewnia resetowanie wewnętrznych urządzeń przy
wzroście napięcia. Dodatkowe wejście RESET# oraz wyjście RSTOUT#
umożliwiają odpowiednio innym urządzeniom resetowanie FT245BM bądź
7
FT245BM resetowanie innych urządzeń. Pin RSTOUT# pozostaje w stanie
wysokiej impedancji przez około 5ms po tym, jak napięcie na pinie VCC
wzrośnie ponad 3,5V przy jednocześnie działającym oscylatorze i wysokim
stanie na pinie RESET#. Jeśli nie będzie wykorzystywane resetowanie
z zewnątrz, wejście RESET# powinno być zwarte z VCC.
•
EEPROM Interface
FT245BM może pracować bez pamięci EEPROM. Pamięć EEPROM powinna
być 16-bitowa. Wykorzystywana jest ona przy samodzielnym ustalaniu
wartości VID, PID, Serial Number, Product Description Strings oraz Power
Description. Jeśli pamięć ta jest niepodłączona, FT245BM będzie używał
domyślnych wartości wymienionych wyżej parametrów, za wyjątkiem Serial
Number.
Poniżej przedstawiony jest wygląd i opis wejść oraz wyjść urządzenia:
8
Piny interfejsu UART:
•
RD# – wyjście dla asynchronicznej transmisji danych
•
WR – wejście dla asynchronicznej transmisji danych
•
RXF# – wyjście sygnalizujące chęć wysłania danych
•
TXE# – wejście informujące o chęci nadania danych przez urządzenie zewnętrzne
•
D0..7 – Dane wejściowe i wyjściowe
Piny interfejsu USB:
•
USBDP – wejście/wyjście, plus sygnału danych
•
USBDM – wejście/wyjście, minus sygnału danych
Piny interfejsu EEPROM:
•
EECS – wejście/wyjście, “chip select”
•
EESK – wyjście sygnału zegarowego dla EEPROM
•
EEDATA – wejście/wyjście danych do/z EEPROM
•
SLEEP# – wyjście w stanie niskim w trybie uśpienia (Suspend Mode), używane do
zmniejszania pobieranej mocy
•
PWREN# – wyjście w stanie niskim po skonfigurowaniu urządzenia za pomocą USB,
a następnie w stanie wysokim w trybie uśpienia, także używane do
zmniejszania pobieranej mocy
•
PWRCTL – wejście, w stanie niskim oznacza zasilanie z magistrali, w stanie wysokim
– samozasilanie
Sygnały zasilania:
•
3V3OUT – wyjście z LDO Regulator dostarczające napięcia 3,3V do bloku USB
Transceiver oraz pinu RSTOUT#, a także do zasilania niewielkich układów
zewnętrznych. Powinno być połączone z masą za pomocą kondensatora
ceramicznego o pojemności 33nF.
•
VCC – zasilanie napięciem od 4,35V do 5,25V dla bloku
LDO
i
bloków
interfejsu UART
•
VCCIO – zasilanie napięciem od 3V do 5,25V dla UART
•
GND – masa
•
AVCC –źródło zasilania dla analogowej części bloku x8 Clock Multiplier
9
spoza
•
AGND –masa dla analogowej części bloku x8 Clock Multiplier
Pozostałe wejścia i wyjścia:
•
RESET# – wejście służące do resetu FT245BM za pomocą urządzeń zewnętrznych
•
RSTOUT# – wyjście wewnętrznego Generatora Resetu (Reset Generator)
•
TXLED# – dioda, święcąca gdy wysyłane są dane
•
RXLED# – dioda, święcąca gdy odbierane są dane
•
XTIN – wejście bloku 6MHz Oscillator
•
XTOUT – wyjście z bloku 6MHz Oscillator
•
TEST – wejście sterujące testowaniem urządzenia, w czasie normalnej eksploatacji
musi być zwarte z masą
FT245BM
•
Jednoukładowy, dwukierunkowy konwerter USB na interfejs równoległy
•
Prędkość transmisji do 1MBps - dla sterowników bezpośrednich
•
Prędkość transmisji do 300kBps - dla sterowników wirtualnych
•
Prosty interfejs do logiki MCU/PLD/FPGA z czteroprzewodowym handshake'm
•
Bufory: Nadawczy (384Byte) i odbiorczy (128Byte)
•
Kompatybilność z USB 1.1 i USB 2.0
•
Zasilanie od 4.4V do 5.25V
•
Zintegrowany stabilizator 3.3V dla układów zewnętrznych
•
Parametry urządzania przechowywane w zewnętrznej pamięci EEPROM z
możliwością zapisu przez USB
•
Wbudowany 6Mhz-48MHz powielacz częstotliwości zgodny z FCE i CE
•
Obudowa 32-LD LQFP (7mm x 7mm)
•
Więcej informacji na stronie www.ftdichip.com
10
Minimoduł komunikacyjny USB z kontrolerem USB FT245BM
MMusb245 jest niedrogim zintegrowanym modułem do transmisji danych do/z
urządzeń peryferyjnych lub PC. Moduł bazuje na kontrolerach FT245BM firmy FTDI.
MMusb245 pozwala na transfer danych z prędkością 1MB/s. Jest prostym urządzeniem typu
FIFO stanowiącym łatwy interfejs pomiędzy standardem USB, a dowolnym systemem
mikroprocesorowym poprzez porty IO mikrokontrolera.
Do modułu dołączony jest kabel USB. Dzięki sterownikom do systemu Windows,
które emulują port szeregowy moduł nadaję się do upgrade`u aplikacji w których
dotychczasowo używana była transmisja po łączu szeregowym RS232. Wybór naszego
Minimodułu jest pierwszym krokiem dla projektów, które muszą być zrealizowane w krótkim
czasie. MMusb245 może być użyty zarówno do prototypu eliminując konieczność
projektowania obwodu drukowanego jak i do układu finalnego w którym minimoduł
montowany jest w postaci "kanapki".
11
Układ wyprowadzeń
Minimoduł posiada wyprowadzenia z rastrem 0,1" (2.54mm) pasujące do podstawki DIL24
Opis wyprowadzeń
Pin
Nazwa
Tryb
Opis
pinu
1
RXT
wyjście
Sygnalizuje stan zawartości bufora
2
TXE
wyjście
Sygnalizuje stanem wysokim, że bufor transmisji jest wypełniany
lub zajęty zapisem ostatniego bajta
3
WR
wejście
zapis danych z D7-D0 do bufora transmisji
4
RD
wejście
odczyt z bufora na D7-D0
5
D7
we/wy
Linia szyny danych (bit 7)
6
D6
we/wy
Linia szyny danych (bit 6)
7
D5
we/wy
Linia szyny danych (bit 5)
8
D4
we/wy
Linia szyny danych (bit 4)
9
D3
we/wy
Linia szyny danych (bit 3)
10
D2
we/wy
Linia szyny danych (bit 2)
12
11
D1
we/wy
Linia szyny danych (bit 1)
12
D0
we/wy
Linia szyny danych (bit 0)
15
RST
wejście
zewnętrzny do reset
16
RSO
wyjście
Wyjście wewnętrznego generatora resetu
18
3V3
wyjście
Wyjście wewnętrznego regulatora LDO.
20
SLP
wyjście
sygnalizuje stan wstrzymania
21
SND
wejście
wzbudzanie i natychmiastowe wysyłanie do PC
22
VIO
wejście
Ustala napięcia na pinach komunikacyjnych
23
VEX
wejście
Ustala główne źródło zasilania
24
VPO
wyjście
Zasilanie z USB
Oprogramowanie
Firma FTDI wraz z układem dostarcza sterownik Virtual Com Port (VCP)
sprawiający, że porty peryferyjne urządzenia wyglądają jak standardowy port COM dla
komputera PC. Większość istniejącego oprogramowania powinno współpracować z VCP,
wystarczy zmienić używane przez nie porty na stworzone przez sterownik VCP. Używając
VCP, programista może komunikować się z urządzeniem w ten sam sposób jak przez
regularny port PC COM – za pomocą Windows VCOMM API lub biblioteki portu COM.
Sterowniki zawierają takie funkcje zdefiniowane dla sterowników D2XX firmy FTDI,
co pozwala programiście aplikacji zintegrować program z urządzeniem używając
Windows DLL.
Sterowniki wirtualnego portu COM (Virtual COM Port)
•
Windows 98/ 98 SE / 2000 / ME / XP, MacOS, Linux 2.4 i nowsze
D2XX ( Sterowniki bezpo_rednie USB + interfejs DLL S/W)
•
Windows 98 / 98 SE / 2000 / ME / XP, Linux
Więcej informacji na stronie www.ftdichip.com
13
Dane techniczne
MMusb245
•
Jednomodułowe rozwiązanie dla szybkiej transmisji USB
•
FT245BM
•
Technologia SMD, obwód dwu-warstwowy
•
2 x 14 wyprowadzenia z rastrem 0.1" (2.54mm) pasujące do podstawki DIP28
•
Możliwość montażu poziomego
•
Małe wymiary 45mm x 20mm x 15mm
•
Złącze USB w standardzie B
•
Wbudowana pamięć EEPROM dla parametrów: USB VID, PID, Numeru seryjnego
i opisu produktu.
•
Możliwość zasilania z interfejsu USB (do 60mA dla konwertera i układów
zewnętrznych) lub z zewnętrznego źródła
•
Obudowa 24-piny
Instalacja sterowników
Aby móc używać konwertera USB – RS232 należy zainstalować odpowiednie
sterowniki. Sterowniki te (VCP – Virtual COM Port) emulują standardowy port COM. Dzięki
temu możemy komunikować się jak przez klasyczny port szeregowy.
W przypadku nieposiadania sterowników należy je pobrać ze strony FTDI:
www.ftdichip.com Następnie urządzenie emulujące port szeregowy należy podłączyć do
którekolwiek z niezajętych portów USB. To automatycznie zapoczątkuje instalację.
14
Postępując według wskazówek, zaznacz opcję „Wyszukaj sterowniki dla nowego urządzenia”
(„Search for a suitable driver for my device (recommended)”,
a następnie „Wybrana lokalizacja” („Specify a location”). W kolejnym kroku sprecyzuj, gdzie
znajdują się sterowniki do urządzenia – instalator wybierze plik ftdibus.inf. Jeśli wszystko
przebiegnie poprawnie, instalator poinformuje o pomyślnym zakończeniu procesu instalacji
szeregowego konwertera (serial converter). Instalator automatycznie przejdzie do instalacji
15
sterownika emulatora portu COM. Procedura jest taka sama jak powyżej, z tym że PC
wybierze tym razem plik ftdiport.inf.
Jeśli teraz otworzysz Menedżer Urządzeń (Device Manager), w portach pojawi się
„USB Serial Port”. W celu jego skonfigurowania wybierz z menu „Ustawienia”
(„Properties”).
Przechodząc do zakładki „Ustawienia Portu” („Port Settings”) możemy zdefiniować
prędkość transmisji (Bits per second), ilość bitów danych (Data bits), parzystość (Parity), bity
stopu (Stop bits) oraz sterowanie przepływem (Flow control). W celu zmiany kolejnych
parametrów należy wejść w opcje zaawansowane (Advanced…).
16
Okno to umożliwia zmianę następujących parametrów:
•
numer portu COM (COM Port Number)
•
rozmiar bufora USB (USB Transfer Sizes)
•
wartość latency timer value (BM Options)
•
limity czasu odpowiedzi dla odczytu i zapisu (Timeouts)
a także pozwala na ustanowienie kilku opcji:
•
Serial Enumerator – pozwala na wykrywanie urządzeń typu Plag-and-Play
podłączonych do portu USB
•
Serial Printer – blokuje działanie parametrów „Timeouts” zezwalając na długie
opóźnienia
•
Cancel If Power Off – opcja używana w przypadku problemów związanych z
zawieszeniem bądź hibernacją. Powoduje brak reakcji na żądania otrzymywane przez
sterowniki podczas tych stanów.
•
Event On Surprise Removal – stosowana bardzo rzadko
•
Set RTS On Close – powoduje ustanowienie sygnały RTS przy zamykaniu portu
•
Disable Modem Ctrl At Startup- opcja używana do nadzoru sygnałów kontrolnych
modemu (RTS i DTS) przy starcie, zapobiega pojawianiu się „szpilek” na tych liniach
– co mogłoby być przyczyną wejścia podłączonego do konwertera urządzenia w
niepożądany stan.
17
Enumeracja PID i VID
Aby użyć sterowników FTDI z urządzeniami, które są identyfikowane przez
kombinacje VID (Vendor ID) i PID (Product ID) inne niż VID FTDI oraz domyślny PID
urządzenia, pliki INF oraz INI sterownika muszą zostać zmodyfikowane.
W piku ftdibus.inf następujące sekcje muszą zostać zaktualizowane:
[FtdiHw]
%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6001
[ControlFlags]
ExcludeFromSelect=USB\VID_0403&PID_6001
[Strings]
USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter"
Opis urządzenia (DeviceDesc) może być zmieniony dowolnie – jest to nazwa pod jaką
urządzenie pojawia się w Menedżerze Urządzeń.
W pliku ftdiport.inf następujące wpisy podlegają modyfikacji:
[FtdiHw]
%VID_0403&PID_6001.DeviceDesc%=FtdiPort232,FTDIBUS\COMPORT&VID_0403&PI
D_6001
[Strings]
VID_0403&PID_6001.DeviceDesc="USB Serial Port"
Powyższa uwaga dotycząca opisu urządzenia jest aktualna także i w tym miejscu.
Aby móc automatycznie odinstalować urządzenia – za pomocą Dodaj/Usuń Programy
(Add/Remove Programs) – konieczna jest następująca zmiana w plikach ftdiunin.ini oraz
ftdiun2k:
[Uninstall]
Device=VID_0403&PID_6001
18
Zastosowanie
o
Konwertery USB na RS245
o
Rozszerzanie możliwości urządzeń peryferyjnych
o
Oprzyrządowanie USB
o
Wymiana danych w przemyśle
o
Zabawki
o
Miernictwo
Przykłady standardowej konfiguracji urządzenia
Zasilanie z USB lub zewnętrzne.
Powyższy rysunek ilustruje konfigurację zasilania MMusb245 za pomocą portu USB.
Urządzenie pobiera zasilanie z magistrali USB. Podstawowe reguły dla urządzenia zasilanego
z USB są następujące:
a) Podłączone, urządzenie nie powinno pobierać więcej niż 100mA
b) Wstrzymane urządzenie podłączone pod USB, nie powinno pobierać więcej niż 500uA
c) Urządzenie pobierające więcej niż 100mA powinno posiadać MOSFET na pokładzie
w celu utrzymania poboru mocy przez zewnętrzny obwód w okolicy 70mA podczas
pracy i 200uA w trybie wstrzymania
d) Urządzenie, które zużywa więcej niż 100mA nie może zostać podłączone do zasilania
hub’a USB.
e) żadne urządzenie nie może czerpać więcej niż 500mA z magistrali USB.
Opcja USB Power Descriptor w EEPROM powinna być
aby dopasować aktualne pobieranie mocy przez urządzenie.
19
zaprogramowana tak,
Powyższy rysunek ilustruje konfiguracje zasilania zewnętrznego modułu MMusb245.
W konfiguracji zasilania zewnętrznego moduł nie pobiera zasilania z magistrali USB,
a z zewnętrznego zasilacza.
Podstawowe reguły dla konfiguracji zasilania z zewnątrz są następujące:
a) Urządzenie pracuje z zasilaniem zewnętrznym nie może powodować przepływu prądu po
magistrali USB, kiedy host USB lub kontroler USB jest wyłączony
b) Urządzenie zasilane z zewnątrz może pobierać tyle prądu ile potrzebuje podczas pracy oraz
zawieszenia pracy USB tak długo jak posiada własne zasilanie.
c) Urządzenie zasilane z zewnątrz może być użyte z dowolnym Hostem USB oraz
z dowolnym Hubem USB zasilanym z magistrali jak i z zewnątrz.
Opcja USB Power Descriptor w pamięci EEPROM powinna być ustawiona na wartość
zero. Jeżeli interfejs logiczny pomiędzy modułem MMusb245 a układem peryferyjnym ma
być w standardzie 3.3V, wówczas do pinu 22 powinno być dołączone napięcie +3.3V.
20
Schemat elektryczny modułu Musb245
1
USB
2
VCC
VCC
VCC
VCC
C5
10nF
R3
470R
C6
0.1uF
6
R4
27R
R5
27R
AVCC
30
5
C4
33nF
C7
0.1uF
3V3OUT
8
U2
3
26
13
1
2
3
4
VCC
VCC
VCC-IO
CN1
CN-USB
FB1
FERRITE BEAD
D0
D1
USBDM
D2
7
R6
USBDP
D3
D4
1k5
5
RSTOUT#
D5
RSTOUT#
27
D6
XTIN
Y1
6MHz RESONATOR
D7
VCC-5v
25
D0
IO10
24
D1
IO11
23
D2
IO12
22
D3
IO13
21
D4
IO14
20
D5
IO15
19
D6
IO16
18
D7
IO17
16
RD#
IO20
15
WR
IO21
14
TXE#
IO22
12
RXF#
IO23
PWREN#
IO24
5v MCU or Logic cct
RD#
28
XTOUT
4
VCC
WR
RESET#
TXE#
RXF#
32
EECS
1
SI/WU
EESK
2
EEDATA
PWREN#
29
GND
GND
TEST
VCC
VCC
10
RSTOUT#
RESET#
GND
FT245BM
9
17
31
AGND
DECOUPLING CAPS
11
R7
47k
C3
10uF
C2
0.1uF
C1
0.1uF
VCC
U1
1
2
3
4
CS
SK
DIN
DOUT
VCC
NC
NC
GND
8
7
6
5
FT245BM 5v BUS POWERED EXAMPLE
93C46/56/66
( Optional )
R2
2k2
R1
10k
Schemat elektryczny układu testującego
VCC
R14
1k
2
3
4
5
6
7
8
9
IO10
IO11
IO12
IO13
IO14
IO15
IO16
IO17
U3
1
19
0
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
R15
1k
R12
1k
R13
1k
R8
1k
R9
1k
18
17
16
15
14
13
12
11
R10
1k
R11
1k
1
2
3
4
5
6
7
8
S1
16
15
14
13
12
11
10
9
SW DIP-8
DIR
G
74LS245
R23
D5
RD#
470
U4
VCC
2
3
4
5
6
7
8
9
1
19
A0
A1
A2
A3
A4
A5
A6
A7
B0
B1
B2
B3
B4
B5
B6
B7
18
17
16
15
14
13
12
11
R22
470
R21
470
R20
DIR
G
470
74LS245
R19
0
470
R18
470
R17
470
R18
470
21
LED
D6
LED
D1
LED
D2
LED
D7
LED
D3
LED
D8
LED
D4
LED
0
Przykładowe ustawienie układu w trybie Bit-Bang mode. Po pierwsze, FT_SetDivisor(),
kontroluje wielkości zatrzaskiwane na wyjściach układu ( D0…D7 ).
Przykład ustawienia trybu Bit-Bang mode w C++:
FT_STATUS status;
USHORT dta;
Dta = 0x400;
status = SetDivisor(dta);
if(status != FT_OK)
{
CString str;
str.Format("Data entered (%d) is not a valid divisor.", dta);
AfxMessageBox(str);
}
Program ten pozwala ustawić linie danych wyjściowych w określonym z góry czasie.
W trybie Bit - Bang nie ma żadnej linii przesyłowej dla " “latching” dane do zewnętrznego
urządzenie — dane po prostu ukazują się na ośmiu liniach danych. Jedena z osiem linii
danych może być użyta jako latch requiring. Główne oprogramowanie ustawia zarówno stan
danych siedmiu bitów i linii sterująceji oddzielnie.
Drugi rozkaz, FT_Write(), posyła dane do pamięci FIFO w FT245BM, gdzie czeka
na wysłanie danych wyjściowych.
Trzeci rozkaz, FT_SetBitMode(), pozwala wybrać poszczególne bity od D0 do D7 i
ustawić jeden bit wyjściowy w stan 0 lub 1.
Na przykład :
//enable bit bang mode
status = SetBitMode(0x0f, 0xff);
if(status == FT_OK)
{
//bit bang mode active
}
22
Rozkaz, FT_GetBitMode(), jest używany aby odczytać aktualny stan (wysoki / niski)
poszczególnych linii danych.
Dane, które są pobrane z FIFO do linii danych wyjściowych są zamknięty na ”latch”
aż inny bajt zostanie wysłany. Żaden zewnętrzny bufor albo ”latch requiring” nie jest
wymagany, aby utrzymać stan linii danych w trybie Bit - Bang. ( Kiedy nie jest w trybie Bit Bang, dane tylko są trzymane na liniach danych tak długo jak RD # jest trzymany w stanie
niskim).
23

Podobne dokumenty