Ich habe ein Gerät, das einen USB-Anschluss bietet. Wenn ich es an einen Windows-PC anschließe, wird es als "CP2103 USB to UART Bridge Controller" erkannt. Laut Gerätedokumentation sollte es im seriellen Format mit 38400 bps kommunizieren.
Ich muss mit diesem Gerät mit einem Atmega-Mikrocontroller sprechen.
Da sich die USB-Pinbelegung von der seriellen UART des uC unterscheidet, dachte ich zuerst, ich bräuchte eine Schaltung, um die Signale umzuwandeln. Ich habe das AVR-CDC-Projekt gefunden und einen CDC-232 angelegt , um USB ( GND
, D+
, D-
, VCC
) in RS232 ( TX
, RX
, GND
) zu konvertieren:
Um es zu machen, habe ich einen anderen atmega328 als uC verwendet, der mit dem spezifischen Hex geflasht wurde, mit einem 16-MHz-Kristall anstelle des im Diagramm angegebenen 12-MHz-Kristalls.
Dann baute ich ein weiteres Stück Schaltung, um das RS232-Signal in TTL umzuwandeln:
Die Signalwandlung sollte also USB -> RS232 -> TTL sein.
Ich habe meinen uC so programmiert, dass er einige Daten an das Gerät sendet, und ich kann das Signal mit dem Oszilloskop verfolgen, bis es in den CDC-232 eintritt, dann verliere ich es. Ich habe keinen Ausgang an den Pins 4 und 5 des CDC-232 uC, wo ich ein USB-Signal haben sollte.
Ist mein Gesamtansatz richtig? Soll ich mit dem Debuggen des CDC-232-Teils fortfahren oder ist an anderer Stelle etwas falsch?
Wenn Ihr Gerät als CP2013 angezeigt wird, wenn Sie das Gerät an den USB-Anschluss eines Computers anschließen, und Sie Ihren Computer durch einen Arduino ersetzen möchten, ist dies nicht wirklich einfach oder im Allgemeinen möglich. Die Methoden, die Sie in der Frage erwähnen, müssen damit zu tun haben, dass der AVR / Arduino das Gerät ist, nicht der Host.
Das Gerät hat bereits einen integrierten USB-UART-Konverter und zeigt Ihnen nur die USB-Seite davon. Das bedeutet, dass Ihr Arduino als USB- Host fungieren muss . Die Funktion als USB-Host ist nicht einfach. Sie müssen einen USB-Host/Hub-Controller einrichten und herausfinden, wie Sie mit genügend USB-Protokollstapel umgehen, um mit dem CDC-kompatiblen USB-UART-Gerät zu kommunizieren. Die Verwendung eines USB-OTG-Host-Controllers mag geringfügig einfacher sein, ist aber noch lange nicht trivial einfach. Am besten prüfen Sie, ob Sie den CP2013 auf dem Gerät umgehen und direkt auf die UART-Leitungen zugreifen können. Dies ist möglicherweise nicht immer möglich. Wenn der CP2013 tatsächlich eine andere Hardware oder Firmware ist, die sich als CP2013 ausgibt, dann haben Sie Pech gehabt.
CP2103 ist eine USB-zu-UART-Brücke, sie spricht in TTL-Pegeln, Sie brauchen nichts extra, um damit zu kommunizieren. Sie müssen die TX-, RX- und GND-Pins des Mikrocontrollers mit den RX-, TX- und GND-Pins der CP2103-Platine verbinden. Dein Setup sollte so ablaufen:
PC --usb-- CP2103 --rx/tx-- MIKROCONTROLLER
Richten Sie Ihren Mikrocontroller so ein, dass er etwas über UART ausgibt, und Sie können es in einem seriellen Kommunikationsterminalprogramm auf Ihrem PC sehen.
Sie müssen zuerst die cdc-Vollklasse in Ihrem Mikrocontroller programmieren,,,, vor dem Aufruf sei(), der die usbinit() aufruft, und eine weitere USB-Konfigurationsfunktion.. versuchen Sie es erneut..!
Mäusez
PeterJ