Eine Europlatine (160 mm x 100 mm) zum „Herumspielen“ mit dem
Cypress EZ-USB FX2 USB-2.0-Chip
Dieser Schaltkreis, der neben dem kompletten USB-2.0-Interface
mit 480 MBit/s (brutto) auch eine komfortable FIFO samt programmierbarer
Steuerung enthält, bietet sich zum Basteln an, wäre er nicht in einem
128beinigen Flachgehäuse!
Die Entscheidung für den größten Typ, CY7C68013-128 TQFP, fiel,
um externen RAM-Speicher zwecks Debugging anschließen zu können.
Deshalb wurde im Zuge eines (ausgelaufenen) Forschungsprojekts
die folgende 2seitige Leiterplatte konstruiert.
Es werden keine industiellen Durchkontaktierungen benötigt!
Folgende Anwendungen dieser Leiterplatte stehen als mögliche Ziele:
Prototyp eines USB-Oszilloskop-Tastkopfes mit extremer Speichertiefe
(Transientenrekorder) bei Verwendung von nicht allzu hohen Abtastraten
(« 48 MHz),
IDE-Geräte-Anschluss
(Funktioniert schon!
Ausschließlich dafür wäre der Chip aber zu teuer.),
Schnelles Datenübertragungssystem von einem 19"-Zoll-System zum
Rechner oder umgekehrt (das ist der ursprüngliche Zweck).
Schaltplan
…wurde in Eagle erstellt und dem Cypress-Referenzdesign
CY3681 nachempfunden.
Der im Referenzdesign enthaltene FPGA wurde weggelassen.
Er dient dort als Adressdekoder und zum Debuggen
(oder, um den Nachbau zu erschweren).
Nur auf kompatible Leuchtdioden muss man so verzichten.
RAM, ATA-Anschluss, RS232 und die Port-Expander PCF8574 sind gleich aufgebaut.
Zusätzlich sind auf einem zweireihigen Steckverbinder für ein
19-Zoll-Einschubsystem alle erdenklichen FX2-Signale herausgeführt.
Man klicke auf die Bilder für wirklich lesbare Versionen der Schaltpläne!
Letzte Änderung: Der LM317LZ erweist sich als nicht stromergiebig genug;
er wurde durch eine simple npn-Transistor-Längsregelung mit Z-Diode 3,9 V
und Basisvorwiderstand 100 Ω ersetzt.
Leiterplatte
...sollte teilbestückt in Betrieb genommen werden.
Auf den folgenden Fotos ist die Bestückung für den Betrieb des
IDE-Geräte-Anschlusses (ATAPI, USB-Festplatte) zu sehen.
Die externen RAM-Schaltkreise sind noch nicht bestückt; hierfür sind
Typen aus alten PC-Boards (Cache-RAM) vorgesehen. Die fressen zwar viel
Strom, sind aber beim Bastler massenhaft vorhanden und »müssen weg«.
Als bisher ungetestetes Extra ist der MAX232 zur Pegelkonvertierung
an den beiden seriellen Schnittstellen bestückt.
Beim Entwurf wurde darauf geachtet, SMD-Bauteile der »großen« Bauform
1206 verbauen zu können, 0805 lässt sich ebenso auf die Pads löten.
Eigentlich ist das Löten von SMD-Bauteilen überhaupt nicht schwer,
aber Voraussetzung ist eine perfekt Zinn annehmende Leiterplatte!
Daher habe ich alle Lötpads vor dem Bestücken einzeln unter Zuhilfenahme von
Wasserrohr-Flussmittel hauchdünn verzinnt, die Leiterplatte mit Wasser und
Seife gewaschen und dann bestückt: Es ist dann kinderleicht.
Die kupfernen Flecken auf der chemisch vorverzinnten Leiterplatte
kommen davon, wenn man das Wasserrohr-Flussmittel nicht abwäscht.
Inbetriebnahme
Teilbestückung
Bitte erst einmal nur teilweise bestücken:
Durchkontaktierungen bestücken und prüfen
FX2-Schaltkreis bestücken und jedes Bein auf Kontakt und Kurzschluss prüfen
2 100-nF-Stützkondensatoren sowie R1 (10 kΩ) bestücken
Resetschaltung (100 kΩ, 100 nF) bestücken
I²C-Pullup-Widerstände bestücken
Mehr erst einmal nicht!
Erste Inbetriebnahme
Die Inbetriebnahme der Schaltung erweist sich des öfteren als Stolperfalle.
Oft meldet die Inbetriebnahme "defektes USB-Gerät". Prüfen Sie daraufhin:
die 3,3 V an jedem Versorgungspin
Massepotenzial an jedem Massepin
Schwingung des Oszillators (häufiges Problem!)
Anschluss "wichtiger" Leitungen für USB, Oszillator, Reset, Bussteuerung und I²C
Dann muss ein Gerätetreiber angefordert werden, dem man die EZUSBW2K.INF
aus dem Cypress-Entwicklungskit zu fressen vorwirft. Dann starte man EzMr.exe
und sieht nach, ob das Gerät gefunden wird.
Im High-Speed-Modus haben die verfügbaren Pipes >64 Bytes Länge;
dies ist die einzige mir bekannte Erkennungsmöglichkeit.
Weitere Bestückung
Je nach Belieben kann nun weiter bestückt werden.
Empfehlenswert ist die Bestückung der Wannenbuchse, der zugehörigen
Kondensatoren und Widerstände sowie der LED "DASP"
(Drive Active / Slave Present).
Zur Funktionsprobe großer Teile der Leiterplatte wird
der ATAPI-Geräteanschluss getestet.
Dazu folgende Vorgehensweise:
Start des "EZ-USB Control Panel", auf FX2 stellen,
Knopf drücken, Datei "fx2_ata.iic" brennen, ca. 30 Sekunden Zeit lassen!!
Abstecken, anstecken, oder renummerieren lassen.
Das Programm legt nur mit angeschlossener Festplatte los!
Die HDD-LED (»DASP«) muss kurz aufleuchten; danach meldet sich der FX2 als
USB-Festplatte. Unter Windows 98 wird noch ein Treiber benötigt:
Bei mir ist es passiert, dass ich nicht genügend gewartet habe, und dann enthält
der EEPROM ein abstürzendes 8051-Programm.
Dann gibt es das Problem, dass man das Board mit gestecktem Jumper nicht starten
kann, und das EEPROM-Brennprogramm erfordert, dass der 2-Byte-EEPROM
beim Start des FX2 detektiert wurde (Bit ID1 in I2CS @0xE678 gesetzt).
Wie bekommt man wenigstens das erste Byte des EEPROM gelöscht, ohne
ihn auszubauen? Der richtige Weg ist:
Jumper JP1 ziehen,
Board anstecken,
"EZ-USB Control Panel" starten, auf FX2 stellen,
Jumper JP1 stecken,
Knopf drücken, "vend_ax\vend_ax.hex" laden
(das ist ein Cypress-Programm, welches weitere Vendor-Requests implementiert),
Zeile ausfüllen:
Req: 0xA9 (undokumentierter Lese/Brennzugriff auf 2-Byte-EEPROM),
Value: 0 (= Startadresse),
Index: 0xBEEF (= egal, lassen wie es ist),
Length: 1 (= Länge der zu brennenden Daten),
Dir: 0 OUT (Daten ausgebender Vendor-Request;
man kann mit 1 IN auch den EEPROM-Inhalt lesen),
Hex Bytes: FF (= Daten, erstes Byte, welches C0 oder C2 enthält, löschen),
Knopf drücken,
Board ab- und wieder anstecken - jetzt funktioniert es wieder mit gestecktem Jumper.
Bug
Der Cypress-Treiber ezusbdrv.sys hat einen lästigen Fehler, der gerade beim
Entwickeln zum Bluescreen führt: Bei HandleRemoveDevice() fehlt
ein Test, ob pInterfaceInfo kein NULL-Zeiger ist.
Größenvergleich
Bei FX2-Projekten will man meist möglichst klein bauen.
Enttäuschenderweise sind die vier gängigen ICs etwa gleich groß:
Die auf dem Foto gezeigten Schaltkreise sind längst vom Markt verschwunden,
diese ziehen viel zu viel Strom. Sie sind durch die „A“-Serie ersetzt,
die neben doppelt so viel RAM (16 KByte) ein paar Features, aber auch
einige Widrigkeiten mehr hat.
Das etwas neuere 56polige Gehäuse LFXC ist schließlich bedeutend kleiner.
Dieses „beinlose“ Gehäuse mit 0,5 mm Anschlussraster
(also genauso dicht wie der 128beinige) lässt sich
überraschend gut von Hand löten:
Die Anschlüsse schauen etwas heraus; auf länglichen Lötpads kann man das
Zinn heranziehen und den Kontakt optisch kontrollieren
Die Beine der drei anderen Gehäuse verbiegen sich leicht;
der LFXC ist dagegen total robust.
Hinzugekommen sind noch BAXC (Ball-Grid-Array 5 × 5 mm²)
und LTXC, welches schließlich LFXC ersetzt.
Leider gucken bei diesem Typen die Beinchen nicht heraus,
sodass Kolbenlötung nicht mehr möglich ist.