- podwójny interfejs Ethernet,
- zawiera typowe układy kontrolerów sieciowych RTL8152B obsługiwanych przez system Linux i Windows,
- komunikacja poprzez port USB.
Moduł jest zgodny z Raspberry Pi+ (HAT 40 PIN) i mechanicznie ma rozmiary Pi 3A+. Jednak nic nie stoi na przeszkodzie, aby stosować go także z innymi SBC wyposażonymi w port USB.
Budowa i działanie
Schemat układu został pokazany na rysunku 1. Najważniejszym elementem jest układ dwuportowego huba USB typu USB2412 (U4). Hub podłączany jest do Raspberry poprzez złącze USB typu micro USB lub USBA typu SIP5. Układ skonfigurowany jest do pracy z urządzeniami USB nieodłączalnymi (non-removable), co określone jest stanem wysokim wyprowadzeń NR0/NR1. Może być zasilany z magistrali USB (tryb Bus Powered) lub napięcia 5 V z GPIO Raspberry (tryb Self Powered). Należy zwrócić uwagę na wydajność portu USB, gdyż pobór prądu może wynosić do 500 mA, polecam więc zasilanie 5 V z GPIO Raspberry. Źródło zasilania wybierane jest wlutowaniem odpowiednio rezystora R13 (Bus) lub R14 (Self).
Napięcia 3,3 V niezbędnego do zasilania U4 dostarcza układ U3 typu MCP1700-3.3. Prawidłowy reset po włączeniu zasilania zapewnia układ U5 typu MCP100T-3.15. Do wyprowadzenia VBUS U4-18 doprowadzone jest napięcie informujące o detekcji USB. W przypadku trybu Bus-Power wlutowany musi być rezystor R20, który razem z R19 tworzy dzielnik napięcia VBUS z portu Upstream. W trybie Self-Power oraz gdy moduł nie będzie rozłączany z Raspberry, wlutowany jest rezystor R21 łączący wyprowadzenie VBUS do napięcia 3,3 V.
Układ U4 taktowany jest rezonatorem kwarcowym XT3 o częstotliwości 24 MHz. Do portów downstream podłączone są dwa identyczne konwertery USB/Ethernet U1, U2 typu RTL8152B (QFN24). Są one dosyć popularne w niewielkich kartach sieciowych USB oraz w komputerkach Linux/Android np. NanoPi R1. Układ RTL8152B wyróżnia się prostą aplikacją, niezawodnym działaniem i dostępnością sterowników dla różnych systemów operacyjnych. W ilościach jednostkowych dostępny jest w serwisach aukcyjnych.
Wbudowane w złącza ETH1, ETH2 diody LED sygnalizują stan interfejsu (Link + Activity). Układ uzupełniają dwie pamięci szeregowe I2C U6, U7, przechowujące na ostatnich sześciu bajtach adres MAC w formacie EUI48. Nakładkę uzupełniają dwa złącza wyprowadzające magistralę I2C, typu JST 2 mm i 1 mm.
Montaż i uruchomienie
Moduł zmontowany jest na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 2. Sposób montażu jest klasyczny i nie wymaga opisu. Zmontowany moduł od strony bottom pokazuje fotografia 1.
Prawidłowo zmontowany moduł nie wymaga uruchamiania. Domyślnie moduł przeznaczony jest do zasilania z Raspberry i powinien mieć wlutowane rezystory R14, R21 (nie lutować R13, R20). Po uruchomieniu systemu i sprawdzeniu poleceniem lsusb powinien być widoczny hub (ID 0424:2412) i oba konwertery RTL8152B (ID 0BDA:8152), tak jak pokazano na rysunku 3. Kolejno sprawdzamy poleceniem i2cdetect -y 1 obecność pamięci EEPROM na magistrali I2C (rysunek 4).
Zawartość EUI-48 pamięci można odczytać skryptem dualmac.py, którego treść pokazuje listing 1.
import smbus
print "\n24AA02E64 Dual MAC Dump\n"
# Get I2C bus
bus = smbus.SMBus(1)
# 24AA02E64 0x52+0x53 read last (0xF8 offset) 8-bytes MAC ROM
macblock = bus.read_i2c_block_data(0x52, 0xF8, 0x08)
print"MAC (hex): "
print([‘{:02x}’.format(x) for x in macblock])
macblock = bus.read_i2c_block_data(0x53, 0xF8, 0x08)
print"MAC (hex): "
print([‘{:02x}’.format(x) for x in macblock])
bus.close()
print "\nQuit\n"
Wynik działania skryptu jest widoczny na rysunku 5, (część adresu jest celowo zamazana). Dolna część pamięci 0x00...0x7F może zostać wykorzystana dowolnie przez użytkownika, górna jest zabezpieczona przed zapisem.
Adam Tatuś, EP
- R1, R2, R7, R8, R21: 820 Ω
- R3, R9: 4,7 M Ω
- R4, R10: 2,49 kΩ
- R5, R6, R11, R12: 10 kΩ
- R13, R14: 0 Ω (opis)
- R15…R17, R19, R20: 47 kΩ (opis)
- R18: 12 kΩ
- R22, R23: 4,7 kΩ
- C1…C4, C7, C8, C10, C12…C17, C20, C21, C23, C25, C26, C30…C33, C36, C38, C39, : 0,1 μF
- C5, C6, C18, C19, C34, C35: 22 pF
- C9, C22: 4,7 μF/10 V
- C11, C24, C29: 10 μF/10 V
- C27, C28, C37: 1 μF/10 V
- U1, U2: RTL8152B (QFN24)
- U3: MCP1700T-3302MB (SOT-89)
- U4: USB2412 (QFN28)
- U5: MCP100T/3,15 (SOT-23)
- U6, U7: 24 A A025E48 (SOT-23-6)
- ETH1, ETH2: gniazdo RJ45 Belfuse 08B0-1X1T-06
- FB1, FB3: koralik ferrytowy BLM31A601SPT (SMD1206)
- FB2, FB4: koralik ferrytowy BLM18AG601SN1D (SMD0603)
- FB5: koralik ferrytowy BLM21A601SN1D (SMD0805)
- GPIO: złącze żeńskie DS1023-2*20S21
- I2C: gniazdo JST 4 piny 1 mm
- I2CA: gniazdo JST 4 piny 2 mm
- USB: gniazdo USB Micro
- USBA: złącze SIP 5, 2,54 mm
- XT1, XT2: kwarc CFPX180-25 MHz (3,2×2,5)
- XT3: kwarc CFPX180-24 MHz (3,2×2,5)