USB: Vinculum Host mit CP2102 verbinden

Gast #1256079
Hallo,
Ich habe ein Gerät mit integrierter USB-Schnittstelle (CP2102), das sich 
am PC als COM-Port anmeldet. Am Vinculum USB-Host macht es keinen Mucks. 
Meine Fragen nun:
Muß ich einen CP2102-Treiber programmieren bzw. wie weit muß ich in die 
USB-Tiefen hinabsteigen, um das Ganze zum laufen zu bewegen?
Gibt es fertige Projekte, von denen man sich was abschauen kann?

Leider kenne ich mich mit USB (noch) nicht aus.

Danke für alle Tips.
 ==> Peter <==
Gast
> Beitrag "Vinculum und CP2102"
Danke, den hab ich glatt übersehen.
Aber er bestätigt meine Vermutung, daß ich wohl einen Treiber für den 
CP2102 schreiben muß.
Kann mir jemand noch ein paar Tips geben?
Gibts irgendwo einen CP2102-Treiber im Quelltext? (C-programmieren kann 
ich)
Welche Literatur etc. sollte ich mir zu USB besorgen?
Danke im voraus,
 ==> Peter <==
Hi,

Was machst Du mit dem CP2102?
Bei mir geht's darum, dass ich da nur Ascii Zeichen vom PC über den 
Vinculum weiter über den CP2102 schicken wollte und dann an der anderen 
Seite des CP2102 als RS232-Schnittstelle wieder abgreifen wollte. Ging 
nicht wg. bekannter Probleme.
Aber wenn ich jetzt den FT232RL anschließe, sehe ich immer noch nix. Das 
Ding meldet sich, nimmt auch brav die Formatierungen, aber wie ich die 
Zeichen lesen kann oder sowas, hab ich immer noch nicht rausgekriegt...
Weißt Du da was? :-(

Gruß

Wolfgang
Gast
Hallo Peter,

der VNC braucht ersteinmal eine (passende) Firmware, sonst läuft nix.
Bei Verwendung z.B. eines VDIP-Moduls ist eine Firmware drauf, wenn man
den Chip einzeln kauft ist dort keine Firmware vorhanden.
Leider muss man sich durch die undurchsichtigen Daten- und Appl.blätter 
von
FTDI quälen, um schließlich etwas passendes zu finden.
Bei FTDI gibt es einen Note zu der Funktion VNC - FT232, vielleicht 
sollte man ansetzen, um das mit dem 2103 hinzubekommen...

Grüße, J.
Gast
> Du schreibst Firmware für den Vinculum?
Nein, aber der Vinculum hat low-level Funktionen wie DRD und DSD 
(Empfangen und Senden von Paketen über den USB). Mit diesen Funktionen 
und Analyse des Linux-Treibers für den CP2102, der ja im Quelltext 
vorliegt, sollte es möglich sein, den CP2102 anzusprechen.
Gast
Ok, das Wichtigste funktioniert schon mal.
Falls jemand etwas Ähnliches machen will - folgendes sollte man tun:

1. Vinculum in den ASCII-Mode schalten. Der Binärmodus ist buggy :-(
2. Vinculums Extended Command Set aktivieren
3. Set current device "SC 0\r"
4. Die UART-Emulation des CP2102 aktivieren (mit "SSU 
$4100010000000000\r" über den Vinculum)

Wenn mein USB-Client über den CP2102 Daten gesendet hat, kann ich sie 
mit "DRD\r" vom Vinculum abfragen. Die Daten sehen allerdings seltsam 
aus, weil die Baudate des CP2102 noch falsch ist, aber das sollte kein 
Problem sein.
Gast
OK, so kann man die Baudrate des CP2102 einstellen,
1
#define BAUD_RATE_GEN_FREQ 0x384000
2
void VINC_SetBaudrate (int baudrate)  
3
{
4
  int divisor = BAUD_RATE_GEN_FREQ/baudrate;
5
  char txt[64];
6
  
7
  // 0. REQTYPE_HOST_TO_DEVICE
8
  // 1. SILABSER_SET_BAUDDIV_REQUEST_CODE
9
  // 2. Value low (baud rate div)
10
  // 3. value high (baud rate div)
11
  // 4. 0x00 wIndex(L)
12
  // 5. 0x00 wIndex(H)
13
  // 6. 0x00 Lenght low
14
  // 7. 0x00 Length high
15
  sprintf (txt, "ssu $4101%02x%02x00000000\r", divisor&0xff, divisor>>8);
16
  COMM_WriteString (txt);  // Sende über Rs232
17
  VINC_WaitPrompt();       // Warte prompt b
18
}
Danach kann man die Daten mit dem Vinculum-Kommndo "drd\n" häppchenweise 
abholen, klappt alles perfekt!
Gast
> Ein dickes Lob an Peter für seine Forschungen!
Gern geschehen. War einfacher, als ich gedacht hatte. Wahrscheinlich 
kann man mit dem Vinculum jedes USB-Device ansprechen, ohne daß er eine 
spezielle Firmware braucht.
Hallo Peter,
bin mittlerweile auch so weit, dass ich die Daten mit dem Vinculum 
Kommando drd häppchenweise abholen kann. Hast Du diese irgendwie 
formatiert? Sprich: ich weiß, da kommen 8 Zeichen an, die will ich 
sofort in einem lesen. Bisher macht der drd zwei Abholvorgänge draus, 
also zB W und olfgang.
Was ist in der Unterroutine "VINC_WaitPrompt" drin, hast Du irgendwelche 
Formatierungskonstanten oder so drin?

Gruß

Wolfgang
Gast
> Bisher macht der drd zwei Abholvorgänge draus,
> also zB W und olfgang.
Diese Fragmentierung wirst du wohl nicht verhindern können. Musst alles 
einsammeln, bis ein "drd" keine Daten mehr liefert.

> Was ist in der Unterroutine "VINC_WaitPrompt" drin, hast Du irgendwelche
> Formatierungskonstanten oder so drin?
Die Funktion wartet maximal 3 Sekunden auf "D:\\>\r" (das spuckt der 
Vinculum  aus, wenn er bereit ist.) und löscht danach den seriellen 
Eingangsbuffer.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.