USB mit CH376-Modul
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 (Bild unten)! Bei den meisten Projekten wird die Version B mit dem 6pol. Jumper genutzt! Das muss bei der Verdrahtung beachtet werden!
Man könnte einen 3reihigen Steckverbinder vorsehen: bei Variante 2 sitzt das Modul dann aber ein paar Millimeter tiefer.
Pin-Reihen die beiden oberen Reihen: Variante 1 (ohne Reset, mit 6pol. Jumperfeld) die beiden unteren Reihen: Variante 2 (mit Reset, mit 3pol. Jumperfeld) Pins spiegelverkehrt zum Modul, das wird ja mit der Leiterseite nach oben aufgesteckt. WR RD CS A0 INT VCC GND GND D7 D6 D5 D4 D3 D2 D1 D0 5V GND CS INT RST WR RD A0
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?
Kleincomputer
- AC1
- Z1013


