Dies ist eine alte Version des Dokuments!
USB-Modul mit CH376
Als Alternative zum VDIP, und mit wesentlicher weniger zusätzlicher Hardware (nur Port-Selektion nötig, die restl. Anschlussleitungen D7..D0, RD, WR, A0 gehen direkt zum Z80-BUS)
Das Modul ist aktuell in Entwicklung. Geplant sind noch 32K RAM (4000-BFFF) und 8K ROM (C000-E7FF) mit USB-OS auf dem Modul.
CH376
Der CH376 ist ein Controller für kleine Mikrocomputersysteme zum Lesen und Schreiben von Dateien auf USB-Disk oder SD-Karte. Der CH376 unterstützt den USB-Gerätemodus und den USB-Host-Modus, ist dabei kompatibel mit USB V2.0. Der CH376 unterstützt drei Kommunikationsschnittstellen: 8-Bit-parallel, SPI oder asynchron seriell. Mikrocomputersysteme können den CH376-Chip über eine der genannten Kommunikationsschnittstellen steuern und auf Dateien oder Dateien auf USB-Disk oder SD-Karte zugreifen. Der CH376 unterstützt FAT16 und FAT32, allg. das FAT12-Dateisystem mit Unterverzeichnissen und kurzen (8.3)-Dateinamen.
Der USB-Gerätemodus von CH376 ist vollständig mit dem CH372-Chip kompatibel, und der USB-Hostmodus von CH376 ist grundsätzlich mit dem CH375-Chip kompatibel.
Man könnte den Chip direkt verwenden, er kann auch mit +5V betrieben werden, doch für ca 3 Euro gibt es fertig aufgebaute Module, die per Pfostenstecker mit der eigenen Hardware verbunden werden. Ich habe mich für folgende Variante entschieden (CH375-kompatible Module):
Modul, Draufsicht, Schaltplan (gilt auch für die Variante mit 376S)
Bedeutung der Steckverbinder:
Achtung: Es gibt ähnliche Module, die aber eine andere Steckverbinderbelegung und auch nur einen Jumper haben. Das muss bei der Verdrahtung beachtet werden! Die meisten der bei ebay angebotenen „CH376S U DISK READ WRITE MODULE“ sind von dieser folgenden Variante:
Vermutlich ist das die bessere Lösung, da leichter erhältlich, und es gibt auch einen Reset-Pin.
Downloads
- Produktseite: http://www.wch.cn/product/CH376.html
- Anleitung CH376 (engl): ch376ds1.pdf http://www.wch.cn/downloads/CH376DS1_PDF.html
- zusätzliche Unterlagen + C-Code f. Microcontroller (8051), ebenfalls leider in chinesisch: http://www.wch.cn/downloads/CH376EVT_ZIP.html
Es gibt auch den zweiten Teil der Anleitung CH376DS2.PDF auf obiger Produktseite, leider nur in chinesisch: Beschreibung der grundlegenden Übertragungsbefehle und Beschreibung der externen Firmware des Gerätemodus. Mit google translate kann man die PDF übersetzen.
Arduino
- Arduino-Library: https://github.com/djuseeq/Ch376msc
Z80-Anschluss
Bruce Abbott hat für seinen Mattel Aquarius ein Micro-Expander-Modul entwickelt. Sein Modul umfasst 32k RAM, 4x16k ROM und ein CH376-USB-Modul. Auf einer zweiten Leiterplatte ist ein Soundchip AY-3-8910 und ein zweites CH376-USB-Modul. Auf der Webseite gibt es komplette Z80-Assemblerquellen.
Inbetriebnahme
Das CH376-Modul wird im Parallel-Modus betrieben (JP P_S Stellung P)
Erster Test:
die minimalistische Hardware funktioniert
Der GAL selektiert lediglich Port 40h+41h, ansonsten gehen die Anschlüsse des Moduls direkt an den BUS. Anstelle eines GAL können auch diskrete TTL-Schaltkreise für die Portselektion und Ansteuerlogik genutzt werden.
Mit einfachen I/O-Abfragen kann die Funktion geprüft werden
IN 41 --> 80 device status OUT 41 1 IN 40 --> 43 chip version (>40) OUT 41 6 OUT 40 55 IN 40 --> AA (bit reverse)
GAL-Logik:
CH376 = /IORQ * /RD * /A7 * A6 * /A5 * /A4 * /A3 * /A2 + /IORQ * /WR * /A7 * A6 * /A5 * /A4 * /A3 * /A2; /IORQ * (/RD + /WR) * Port 40h