- 2 porty USB z zabezpieczeniem przepięciowym i przeciążeniowym,
- interfejs Ethernet 10/100 wyprowadzony na zespolone gniazdo RJ45,
- 2 interfejsy UART na bazie FT234XD z wyprowadzonymi sygnałami RXD/TXD oraz RTS/CTS,
- interfejsy UART są uzupełnione o drivery RS232,
- format nakładki jest zgodny mechanicznie z płytkami HAT do Raspberry Pi,
- urządzenie jest hubem USB z rozszerzoną funkcjonalnością, dzięki czemu może współpracować z dowolnym komputerem PC wyposażonym w port USB, pracującym pod systemem Windows lub Linux.
Format nakładki jest zgodny mechanicznie z płytkami HAT do Raspberry Pi, co ułatwia jej pewne mocowanie, a wyfrezowane otwory nie utrudniają dostępu do złącz kamery i wyświetlacza Pi. Moduł zawiera specjalizowany 4-oportowy hub USB z wbudowanym kontrolerem Ethernet 10/100 typu LAN9514 firmy Microchip. Struktura wewnętrzna układu została pokazana na rysunku 1. Nakładka, jako hub USB z rozszerzoną funkcjonalnością może współpracować z dowolnym komputerem PC wyposażonym w port USB, pracującym pod systemem Windows lub Linux.
Budowa i działanie
Do połączenia z komputerem hosta, zastosowano złącze USB-C typu 4410, umożliwiające podłączenie interfejsu USB-C w trybie zgodności z USB2.0. W trybie zgodności stosowane jest tylko zasilanie oraz jeden kanał komunikacyjny. Schemat połączeń interfejsu USB został pokazany na rysunku 2. Sygnały interfejsu USBH_P/N oraz zasilanie +5 V zabezpieczone są przed skutkami przepięć układem TVS1 typu ESD204DQAR zawierającym matrycę diod zabezpieczających o niskiej pojemności, zaprojektowaną do pracy z sygnałami szybkich interfejsów komunikacyjnych. Matryca jest „przelotowa”, a zastosowana obudowa USON ułatwia projektowanie połączeń. Układ w zasadzie „nakładany” jest na linie sygnałowe, bez zmiany ich przebiegu, nie wymaga więc odbić ścieżek i tworzenia dodatkowych pętli w celu podłączenia zabezpieczenia. Pozwala to zachować impedancję połączeń, co jest szczególnie istotne w przypadku sygnałów różnicowych. Nie bez znaczenia jest też możliwość minimalizacji zakłóceń promieniowanych. Sygnały interfejsu USB doprowadzone są do układu LAN9514, a zasilania +5 V do układu przetwornicy obniżającej U6 typu NCP1597, z ustalonym dzielnikiem R18, R19 napięciem wyjściowym 3,3 V. Obecność zasilania 3,3 V sygnalizuje dioda LD3.
Głównym elementem MultiHuba jest układ U1 typu LAN9514, którego aplikacja została pokazana na rysunku 3. Układ U3 (MCP100T) zapewnia reset po włączeniu zasilania, U1 taktowany jest oscylatorem 25 MHz z rezonatorem kwarcowym XT1 i elementami C20, C21, R7. Część cyfrowa LAN9514, zasilania jest napięciem 3,3 V, każde z wyprowadzeń potencjału VDD33IO odsprzęgnięte jest kondensatorem C9...C13, zasilanie części analogowej +3,3 VA jest dodatkowo filtrowane przez dławik FB1 i odsprzęgniete przez C1...C7. Dla zasilania rdzenia LAN9514 stosowane jest napięcie 1,8 VL z wbudowanego LDO.
Zwora VBUS domyślnie zalutowana w pozycji BP, informuje układ LAN9514 o sposobie zasilania, w pozycji PB jest to zasilanie z magistrali hosta, czyli ze złącza USB-C. Sygnalizacja obecności zasilania USB poprzez dzielnik R2, R3 podłączona jest do wyprowadzenia detekcji magistrali VBUSDET.
Układ LAN9514 ma możliwość indywidualnej konfiguracji m.in. VID/PID i zachowania danych w pamięci nieulotnej U2 typu 93LC66A. W modelu elementy są wlutowane, ale nie są używane, układ pracuje w konfiguracji fabrycznej.
LAN9514 oprócz samego czteroportowego huba, ma także cztery kanały zarządzania zasilaniem podłączonych urządzeń. Sygnały PWA...PWD sterują kluczami zasilania pokazanymi na rysunku 4. Jako klucze zastosowano układy U4, U5 typu MIC2026-1YM z prądem ograniczenia 0,5 A. Wyprowadzenie PRTCTLx LAN9514 jest dwukierunkowe, co umożliwia menedżerowi zasilania wbudowanemu w U1 sterowanie zasilaniem (ENx) z jednoczesnym monitorowaniem przeciążenia (!FLGx) klucza. Jeżeli zostanie wykryte przeciążenie na szynie zasilania, klucz zostaje odłączony i w zależności od zachowania systemu operacyjnego – może zostać wygenerowane powiadomienie o przeciążeniu portu.
Sygnały huba USB z kanałów A i B doprowadzone są do podwójnego gniazda USB. Zasilanie w każdym kanale zabezpieczone jest dodatkowo diodą TVS4, TVS5 oraz filtrowane przez FB4, FB5, C26, C27, co zapewnia jego stabilność podczas podłączania urządzenia USB. Sygnały interfejsów A i B zabezpieczone są przez układ TVS3, podobnie jak sygnały USB hosta.
Intefejs Ethernet 10/100, zaprezentowany na rysunku 5, wyprowadzony jest na zespolone gniazdo RJ45 typu 74990100011 A. Rezystory R13, R14, R16, R17 dopasowują sygnały różnicowe LTX/LRX, R15, C28 filtruje zasilanie odczepów środkowych wbudowanych transformatorów. Układ TVS2 zabezpiecza interfejs przed skutkami przepięć. Diody LD2, LD1 sygnalizują aktywne połączenie i transmisję danych.
Kanały C i D huba, doprowadzone są do konwerterów USB/UART typu FT234XD (rysunek 6). Każdy z kanałów ma niezależne zasilanie +3,3 VA/VB pochodzące z klucza U5. Do sygnalizacji aktywnej transmisji służą diody LD4, LD5. Układy FT234 skonfigurowane są do sygnalizacji sumy sygnałów RXD, TXD przy pomocy konfiguratora FT_Prog. Na złącze UART wyprowadzone są sygnały obu kanałów szeregowych wraz z zasilaniem +3,3 VUBA/B. Oprócz podstawowych RXD/TXD dostępne są sygnały RTS/CTS dla realizacji transmisji ze sprzętowym potwierdzeniem.
Układ konwertera USB/UART uzupełniają drivery RS232, zaprezentowane na rysunku 7. Każdy z kanałów UART ma możliwość podłączenia drivera U7 typu ADM3232 dla zapewnienia konwersji z 3,3 V do poziomów wymaganych dla standardu RS232. Konwersja jest dostępna tylko dla sygnałów RXD/TXD każdego kanału. Przełącznikami RS232 A, B łączymy drivery z konwerterami UART. Należy pamiętać, aby kanałach nie korzystać jednocześnie z sygnałów złącza UART i konwertera RS232, aby nie doprowadzić do zwarcia wyjść we współpracujących układach i driverze ADM3232. Układy U8,9 izolują konwertery FT234 od drivera U7, gdy z jakiegoś powodu napięcia +3,3 VA/B są wyłączone, np. podczas przeciążenia lub inicjacji USB. Zapobiega to wstecznemu przepływowi zasilania do konwerterów. Sygnały w standardzie RS232 dostępne są na złączu RS232 typu MPC4. Diody TVS6, TVS7 dodatkowo zabezpieczają driver przed skutkami przepięć.
Montaż i uruchomienie
Interfejs zmontowany jest na czterowarstwowej płytce drukowanej, co jest wymuszone kontrolą impedancji ścieżek interfejsów Ethernet i USB. Schemat płytki został pokazany na rysunku 8. Montaż nie wymaga opisu, ale ze względu na gęste rastry i zastosowane elementy SMD 0402 wymagane jest zachowanie szczególnej staranności. Na układ U1 można nakleić niewielki radiator BGA. Złącze GPIO HAT_PI nie jest montowane. W przypadku korzystania z Raspberry Pi 4 płytka mocowana jest za pomocą słupków dystansowych, a złącze USB-C podłączone krótkim kabelkiem do interfejsu USB-C 3.0.
W przypadku starszych wersji Pi, należy zwrócić uwagę na pobór prądu podłączonych do Huba urządzeń USB, aby nie doprowadzić do przeciążenia portu USB 2.0.
Płytka pomimo pewnej złożoności nie wymaga uruchamiania, należy tylko zalutować zworę VBUS w położeniu PB. Pierwsze uruchomienie polecam wykonać z komputerem PC z systemem Windows. Po podłączeniu MultiHuba do PC z systemem Windows 10, wszystkie urządzenia powinny zostać zainstalowane automatycznie. W menedżerze urządzeń pojawią się dodatkowy interfejs Ethernet, hub oraz dwa porty szeregowe, zgodnie z rysunkiem 9.
Jeżeli wszystkie urządzenia są dostępne, można sprawdzić transmisję poprzez Ethernet, do portów USB podłączyć testowo urządzenia np. pendrive i klawiaturę, należy jednak pamiętać o obciążalności portów i raczej nie próbować podłączać dysków HDD.
Konfiguracji przy pomocy programu FT-Prog wymagają układy FT234, należy na wyprowadzeniu CBUS0 ustawić sygnalizację sumy RX/TX. Odpowiednia konfiguracja jest dołączona do materiałów jako plik ft232.xml. Po restarcie portów poprawność transmisji należy sprawdzić używając terminali szeregowych.
Porty A/B można połączyć ze sobą łącząc RXA/TXB, RXB/TXA złącza UART i sprawdzić poprawność transmisji pomiędzy terminalami w trybie bez sprzętowego sterowania przepływem, a po skrzyżowaniu sygnałów CTS/RTS ze sprzętowym sterowaniem.
Jeżeli konwertery działają poprawnie pozostaje sprawdzenie drivera RS232. Wypinamy wszystkie przewody ze złącza UART, mostkujemy w złączu RS232 sygnały RXD232 A/TXD232B, RXD232B/TXD232 A, ustawiamy wszystkie przełączniki RS232 A,B w położenia ON i ponownie sprawdzamy transmisję pomiędzy terminalami.
Jeżeli wszystko działa poprawnie, można podłączyć MultiHuba do Raspberry Pi. Po uruchomieniu w terminalu poleceniem lsusb możemy sprawdzić urządzenia na magistrali USB, wynik działania polecenia został pokazany na rysunku 10. Widoczne w tym przypadku jest urządzenie 004, czyli interfejs Ethernet wbudowany w LAN9512, urządzenie 003, czyli Hub USB oraz 007 i 008, czyli dwa konwertery FTDI. Widoczne są też pendrive podłączone do Huba 005, 006. Czyli wszystko zostało wykryte poprawnie. Przypisanie portów UART można sprawdzić poleceniem dmesg | grep tty. Wynik działania polecenia pokazuje rysunek 11, gdzie widzimy, że konwertery przypisane są do ttyUSB0, ttyUSB1. Korzystając z terminala np. minicom i ustawiając transmisję przez ttyUSB0, ttyUSB1 można sprawdzić poprawność działania.
Jeżeli wszystko działa poprawnie, moduł można zastosować we własnych aplikacjach.
Adam Tatuś, EP
- R1: 12 kΩ (SMD0402)
- R2: 39 kΩ (SMD0402)
- R3: 62 kΩ (SMD0402)
- R4: 12,4 kΩ (SMD0402)
- R5, R6, R8: 10 kΩ (SMD0402)
- R7: 1M Ω (SMD0402)
- R9, R10, R24, R25, R26: 1 kΩ (SMD0402)
- R11, R12: 5,1 kΩ (SMD0402)
- R13, R14, R16, R17: 49,9 Ω (SMD0402)
- R15, R20…R23: 10 Ω (SMD0603)
- R18: 10 kΩ (SMD0603)
- R19: 31,6 kΩ (SMD0603)
- R27, R28, R29, R30: 27 Ω (SMD0402)
- Rx: 680 Ω (SMD1206)
- C1…C7, C9…C13, C15…C19, C22, C23, C38, C42, C43, C46, C49, C50: 0,1 μF/10 V (SMD0402)
- CET1, CET2, CET3: 47 μFT/10 V (SMD3528)
- C8, C14: 10 μF/10 V (SMD0603)
- C20, C21: 33 pF/50 V (SMD0402)
- C24, C25: 1 μF/10 V (SMD0402)
- C26, C27: 47 μF/10 V (SMD0805)
- C28: 22 nF/50 V (SMD0603)
- C29, C32, C33: 22 μF/10 V (SMD0805)
- C30, C31: 0,1 μF/10 V (SMD0603)
- C34…C36, C37: 0,1 μF/25 V (SMD0603)
- C39, C41, C48: 2,2 μF/10 V (SMD0603)
- C40, C47: 10 nF/25 V (SMD0402)
- C44, C45, C51, C52: 47 pF/25 V (SMD0402)
- Cx: 2,2 nF/1 kV (SMD1206)
- LD1, LD5: dioda LED żółta (SMD0603)
- LD2, LD4: dioda LED zielona (SMD0603)
- LD3: dioda LED czerwona (SMD0603)
- TVS1…TVS3: dioda zabezpieczająca ESD204DQAR (USON10)
- TVS4, TVS5: dioda zabezpieczająca PESD5.0S1UBV (SOD523)
- TVS6, TVS7: dioda zabezpieczająca PESD15VL2BT (SOT23)
- U1: LAN9514I-JZX (QFN64)
- U2: 93LC66 AT-I/OT (SOT23-6)
- U3: MCP100T-315I/TT (SOT23)
- U4, U5: MIC2026-1YM (SOIC8N)
- U6: NCP1597AMNTWG (DFN6)
- U7: ADM3232EARUZ (TSSOP16)
- U8, U10: 74LVC1G126W5-7 (SOT25)
- U9, U11: FT234XD (DFN12)
- ETH: transformator LAN (WE-RJ45-LAN 74990100011A)
- FB1, FB2, FB4, FB5: koralik ferrytowy 110 R@100 MHz, 4,1 A (WE-MPSB 74279228111, SMD0603)
- FB3, FB6…FB8: koralik ferrytowy 100 R@100 MHz 2 A BLM18EG101TN1D (SMD0603)
- GPIO: złącze szpilkowe lub podobne 2×20
- L1: dławik 3,3 μH/32 mΩ 4,1 A (WE-LHMI 5030 74437336033)
- RS232: złącze 2×3 (WE-MPC3 66200621022)
- RS232A, RS232B: przełącznik small dip switch (WE-DISV 416131160802)
- UART: złącze szpilkowe lub podobne 2×6, 2,54 mm
- USB: złącze USB podwójne (WE-COM-USB 61400826021)
- USBC: złącze USB-C (USB4110-GF-A)
- XT1: rezonator kwarcowy CFPX180-25Mz (3,2×2,5 mm)