Dies ist eine alte Version des Dokuments!
USB-Modul CH376
Seite einigen Jahren gibt es mit dem CH376 eine alternative zum VDIP-USB-Interface. Der CH376 ist ein Mikrocontroller für USB-Speicher und SD-Karten.
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. Die pinkompatiblen CH375B-Module sollten daher auch geeignet sein.
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: „USB Control Transfer 6MHz CH376S U-Disk Read Write Module for Arduino“ (CH375-kompatible Module) mit 6pol. Jumperfeld und Daten-Pins in der unteren Reihe des 16pol. Steckverbinders:

Modul, Draufsicht, Schaltplan (gilt auch für die Variante mit 376S)
Bedeutung der Steckverbinder:
Achtung: Es gibt ähnliche „CH376S U DISK READ WRITE MODULE“, die aber eine andere Steckverbinderbelegung und auch nur einen 3pol. Jumper haben!
Der CH376 kann direkt an den Z80-Bus angeschlossen werden (nur Port-Selektion nötig, die restl. Anschlussleitungen D7..D0, RD, WR, A0 gehen direkt zum Z80-BUS). Jumper P_S kommt dazu in Stellung „P“.
Hinweis 5V: Das Modul betreibt den CH376S-Chip mit 3,3V. Das ist laut Unterlagen nicht zulässig, wenn die Peripherie mit 5V arbeitet. Man sollte daher den Spannungsregler AMS1117 auf dem Modul entfernen und die beiden oberen Pins 2 und 3 (in Richtung USB-Buchse) überbrücken.
Andere Projekte (rookiedrive, RC2014) verwenden diese Module aber auch ohne Änderungen?
Unterlagen
- 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), leider in chinesisch: http://www.wch.cn/downloads/CH376EVT_ZIP.html
Es gibt auch den zweiten Teil der Anleitung CH376DS2.PDF auf obiger Produktseite, ebenfalls 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 obiges 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.
RookieDrive für MSX
Ein virtuelles Disketten-Laufwerk für MSX-Computer. Disketten liegen als .DSK image files (720kByte) auf einem USB-Stick. Es kommt obiges CH376-Modul zum Einsatz.
http://rookiedrive.com/en/, unter https://github.com/Konamiman/RookieDrive-FDD-ROM liegen die Assemblerquellen (rom1)
RC2014
CP/M
Mittlerweile ist das Modul bei den Z80-Fans bekannt und wird auch genutzt. Ich habe zwei interessante Ansätze zum Thema CP/M gefunden:
- https://github.com/gotaproblem/Z80Playground
Ein orig. CP/M mit Diskettenimages A.DSK … D.DSK auf dem USB-Stick - https://github.com/z80playground/cpm-fat
ein neues BDOS, das direkt auf das FAT-Filesystem zugreift. Die CP/M-Dateien liegen so alle in Verzeichnissen A\…P\ auf dem USB-Stick. Allerdings werden keine direkten BIOS-Aufrufe unterstützt?
