Forum: Mikrocontroller und Digitale Elektronik CH376 und die 'disk size'


von Bernd (Gast)


Lesenswert?

Ich versuche aus einem CH376 die aktuelle Größe eines USB-Sticks (und 
die freie Kapazität) zu ermitteln.
Zum Testen hängt das CH376-Modul an einem USB-seriell-Wandler, ich nutze 
die UART-Schnittstelle (der CH376 kann auch noch SPI und parallel).

fdisk sagt folgendes zum Stick:
1
Festplatte /dev/sdb: 3,75 GiB, 4023386112 Bytes, 7858176 Sektoren
2
Festplattenmodell: USB Flash Disk  
3
Einheiten: Sektoren von 1 * 512 = 512 Bytes
4
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
5
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
6
Festplattenbezeichnungstyp: dos
7
Festplattenbezeichner: 0x6fdd569a
8
9
Gerät      Boot Anfang    Ende Sektoren Größe Kn Typ
10
/dev/sdb1  *       128 7858175  7858048  3,7G  b W95 FAT32
Daraus entnehme ich die folgenden Werte:
1
Gesamtsektoren     : 7858176 => 00 77 E8 00
2
Sekt. für Partition: 7858048 => 00 77 E7 80

In meinem Testprogramm nutze ich die Funktion CMD_DISK_QUERY (0x3F). Die 
soll lt. Datenblatt [1] 4 Bytes für die Gesamtsektoren, 4 Bytes für die 
freien Sektoren und ein Byte für den Dateisystemtyp liefen.

Ich bekomme folgende Ausgabe:
1
disk_query
2
Query OK
3
4
total sectors
5
byte: 0x09
6
byte: 0x70
7
byte: 0xAB
8
byte: 0x77
9
10
free sectors
11
byte: 0x00
12
byte: 0x40
13
byte: 0x11
14
byte: 0x77
15
16
Partition type: 0x00
Mir scheint, mein Ergebnis ist um ein Byte verschoben.

Die Qualität der chinesischen Doku kann ich nicht einschätzen, aber das 
was in Englisch verfügbar ist, ist recht bescheiden.

Hat jemand mit dem Teil schon erfolgreich gearbeitet?
Kennt jemand eine brauchbare Dokumentation zum CH376?

Bisher versuche ich, das Codeschnipsel aus [2] zum Spielen zu 
bekommen...

[1] https://www.mpja.com/download/ch376ds1.pdf

[2] 
https://gist.githubusercontent.com/K-ways/52f3e212883f1f5a8076d1efe13a18c4/raw/357fa44b0e90b6ba49db50512e8c1e6a3d6969ef/CH376S_UART_One.ino

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

vielleicht hilft ja das ist direkt von WCH, Wenn du mit WCH Chips 
arbeitest ist Google Translate dein Freund. Die meisten Sachen werden 
nur in Mandarin publiziert. Du solltest dich nacheinem PlugIn für deinen 
Browser umschauen der die Website übersetzt.

von Bernd (Gast)


Lesenswert?

Thomas Z. schrieb:
> 1501746384123075.rar (137 KB)
Danke! Das sieht recht vollständig aus.

Was für einen Zeichensatz brauche ich, damit die Quelltextkommentare gut 
aussehen?
1
/* USBÇëÇóÀàÐÍ, ÍâÖù̼þģʽ¿ÉÄÜÓõ½ */
2
#ifndef  DEF_USB_REQ_TYPE
3
#define  DEF_USB_REQ_READ  0x80      /* ¿ØÖƶÁ²Ù×÷ */
4
#define  DEF_USB_REQ_WRITE  0x00      /* ¿ØÖÆд²Ù×÷ */
5
#define  DEF_USB_REQ_TYPE  0x60      /* ¿ØÖÆÇëÇóÀàÐÍ */
6
#define  DEF_USB_REQ_STAND  0x00      /* ±ê×¼ÇëÇó */
7
#define  DEF_USB_REQ_CLASS  0x20      /* É豸ÀàÇëÇó */
8
#define  DEF_USB_REQ_VENDOR  0x40      /* ³§ÉÌÇëÇó */

von Thomas Z. (usbman)


Lesenswert?

du brauchst einen Editor der unicode kann. Dann siehst du auch die 
chinesischen Kommentare und kannst diese ggv übersetzen. Der Chip 
basiert wohl auf einem ARM Cortex M.
Ich hab das hier runtergeladen http://www.wch. 
cn/bbs/thread-65122-1.html
unter Edge mit eingeschalteter Übersetzung nach englisch.

von Bernd (Gast)


Lesenswert?

Thomas Z. schrieb:
> du brauchst einen Editor der unicode kann
Ich nehme gvim. Mit 'set encoding=gbk' sieht es chinesisch aus, auch 
wenn ich immer noch nix lesen kann :-)

Bernd schrieb:
> In meinem Testprogramm nutze ich die Funktion CMD_DISK_QUERY (0x3F). Die
> soll lt. Datenblatt [1] 4 Bytes für die Gesamtsektoren, 4 Bytes für die
> freien Sektoren und ein Byte für den Dateisystemtyp liefen.
Das funktioniert jetzt auch. Die Funktion CMD_RD_USB_DATA0 liefert als 
erstes Byte die Länge des Datenblocks, hier ist es 9. Damit ist die 
Verschiebung erklärt und alles hat seine Richtigkeit.

von Harald (Gast)


Lesenswert?

Bernd schrieb:
> sieht es chinesisch aus, auch
> wenn ich immer noch nix lesen kann :-)

Google Translate aufs Handy, Übersetzung erfolgt direkt im Livebild oder 
auf einem Foto, wie gewünscht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.