Frage zur Herstellung von USB-Peripheriegeräten für Computer [geschlossen]

Ich habe einen Gamecontroller. Dieser Controller verfügt über ein USB-Kabel und wird nach dem Anschließen sofort vom Computer erkannt. Ich wollte wissen, woraus es besteht, also öffnete ich das Gehäuse und fand den „STM32F103C8T6“-Chip. Ich habe gegoogelt und gefunden: http://datasheetz.com/data/Integrated%20Circuits%20(ICs)/Microcontrollers/497-6063-datasheetz.html

  • Zuerst dachte ich, dass im Inneren eine Art "Joystick-Chip" oder so etwas sein muss, aber das ist eigentlich ein Allzweckcomputer. (Wahrscheinlich mit geladenem benutzerdefiniertem Programm?) Die Fähigkeit zur Schnittstelle mit dem Computer hängt also ausschließlich von dem in dieser MCU geladenen Programm ab?

  • Haben andere Computergeräte (Maus, Tastatur, MIDI-Controller usw.) alle diese Art von Computer im Inneren?

  • Wenn ich auch Computerware produzieren wollte, wo sollte ich am Ende anfangen, um die komplette Platine zu bekommen? Der Chip sieht so aus, als wäre er nicht von der Platine entfernbar und die Verbindung um ihn herum ist sehr klein. Ich denke, es muss nur von der Fabrik mit einer automatischen Präzisionsmaschine zusammengebaut werden. (Nicht der, den Sie separat kaufen und wie ATMEGA auf Arduino zusammenbauen können. Dieser ist viel größer und Sie können tatsächlich alle Stifte mit Ihrem Auge zählen.)

  • Wie kann der Hersteller (wer? Fabrik?) es überhaupt programmieren?

  • Ich habe mehrere "Discovery Boards" gefunden, die diesen Chip und auch einen USB-Anschluss haben, damit Sie sie programmieren können. Bedeutet das also, dass ich diesen STM-Chip auf meinem Gamecontroller auch zurückprogrammieren kann? Denn schließlich verwende ich eine USB-Verbindung, um den Controller zu verwenden, und dieser USB verbindet sich mit der MCU. Ich denke, dass derselbe USB in der Lage sein sollte, "zu verwenden" und zu "programmieren".

Hallo! Es ist großartig, sich für diese Dinge zu interessieren, aber so wie es aussieht, berührt Ihre Frage vage viele Themen, ohne eine einzige, spezifische, beantwortbare Frage zu stellen, wie es die Regeln dieser Website erfordern. Es gibt viele MCUs mit integrierter USB-Hardware wie dem STM32F103, die für den Einsatz in Projekten recht flexibel sind. Nur wenige der Discovery-Boards haben einen USB-Anschluss, der an die „Ziel“-MCU angeschlossen ist – die meisten haben nur einen an den Programmierer, sodass Sie ihn selbst dann, wenn der Zielchip USB unterstützt, von Hand verdrahten müssten. Im Allgemeinen können TQFP- und mit Vorsicht QFN-Gehäuse von Hand gelötet werden.
Alle zusätzlichen Schaltungen, die für einen USB-fähigen Mikrocontroller erforderlich sind, werden im Datenblatt für den Mikrocontroller selbst detailliert beschrieben.

Antworten (2)

Dein gesamter Beitrag ist etwas weit gefasst. Aber für sich genommen ist jede Frage für sich allein beantwortbar, also...

... dies eigentlich ein Allzweckcomputer ist, auf dem ein benutzerdefiniertes Programm geladen ist? Die Fähigkeit, mit dem Computer zu kommunizieren, hängt also ausschließlich von dem in dieser MCU geladenen Programm ab?

In diesem speziellen Fall haben Sie in beiden Punkten vollkommen recht.

Haben andere Computergeräte (Maus, Tastatur, MIDI-Controller usw.) alle diese Art von Computer im Inneren?

Sie alle haben einen Controller-Chip. In einigen Fällen handelt es sich um eine generische MCU, wie in Ihrem speziellen Beispiel hier. Aber in anderen Fällen (zB billige Maus mit hohem Verkaufsvolumen) ist es ein bestimmter Chip, wie Sie zuerst dachten (und in diesem Fall ist der Chip normalerweise nicht dokumentiert).

Und wenn ich irgendwann auch noch Computerware produzieren wollte, wo sollte ich am Ende anfangen, um die komplette Platine zu bekommen? Der Chip sieht so aus, als wäre er nicht von der Platine entfernbar und die Verbindung um ihn herum ist sehr klein. Ich denke, er muss nur ab Werk mit einer automatischen Präzisionsmaschine zusammengebaut werden. (Nicht der, den Sie separat kaufen und wie ATMEGA auf Arduino zusammenbauen können. Dieser ist viel größer und Sie können tatsächlich alle Stifte mit Ihrem Auge zählen.)

Der Chip, den Sie gesehen haben (STM32F103C8T6) ist ein LQFP48. Diese haben freiliegende Stifte, sodass sie immer noch relativ einfach von Hand zu löten sind (im Vergleich zu QFN), selbst wenn das Raster fein ist. Aber ja, natürlich werden sie angesichts des Volumens in einem automatisierten Prozess (Pick-and-Place-Maschine, Reflow-Löten) zusammengebaut. Aber auch die Arduino-Boards, die DIL verwenden, werden mit einem automatisierten Prozess zusammengebaut.

Ich frage mich also auch, wie der Hersteller (wer? Fabrik?) überhaupt hineinprogrammieren kann.

Sie machen In-Circuit-Programming. Sie machen Spuren auf der Leiterplatte, die von den Debug-Pins des Chips zu einem benutzerdefinierten Header führen. Dann, während der Herstellung, gibt es einen Schritt, bei dem ein Typ (normalerweise Chinese und nicht viel bezahlt - oder, für sehr große Mengen, wieder eine Maschine) ein Kabel an diesen Header anlegt, und es gibt einen Computer, der dann den Programmcode initialisiert der Mikrocontroller-Flash. Manchmal gibt es nicht einmal einen Header, es sind nur Pads auf der Platine und sie verwenden Pogo-Pins.

Ich habe mehrere "Discovery Boards" gefunden, die diesen Chip und auch einen USB-Anschluss haben, damit Sie sie programmieren können. Bedeutet das also, dass ich diesen STM-Chip auf meinem Gamecontroller auch zurückprogrammieren kann? Denn schließlich verwende ich eine USB-Verbindung, um den Controller zu verwenden, und dieser USB verbindet sich mit der MCU.

Ja, die ST-Discovery-Boards (oder sind es die Nucleo-Boards? - sowieso) haben einen "Programmier"-Teil und einen "Demo"-Teil. Der Demo-Teil enthält die zu demonstrierende MCU und einige Beispielperipheriegeräte. Der Programmierteil enthält einen weiteren Chip, der die Brücke von USB zum Debugging-Protokoll herstellt, sodass Sie damit ST-Chips programmieren können. Auf diesen Boards können Sie den Demoteil deaktivieren und ein anderes Board mit dem Programmierteil verbinden. Damit könnten Sie Ihren Gamecontroller neu programmieren. Es gibt auch eigenständige, billige Geräte (Marke „ST-LINK v2“), die das können. Sie müssen jedoch feststellen, wo auf Ihrem Demoboard die Debug-Pins verfügbar sind (der "benutzerdefinierte Header" oder die "exposed Pads", über die ich oben gesprochen habe).

Es könnte eine andere Lösung geben, den Gamecontroller neu zu programmieren, die darin besteht, den Bootloader bereits im ROM zu nutzen. In diesem Fall benötigen Sie nicht einmal spezielle zusätzliche Hardware. Sie müssen nur die BOOT-Pins der MCU auf den entsprechenden Pegel einstellen (siehe Datenblatt - aber Sie müssen auch identifizieren, wo dieser Pin auf der Platine zugänglich ist) und Sie sollten in der Lage sein, den neuen Firmware-Code direkt vom Gamepad herunterzuladen USB-Anschluss selbst.

Aber die Neuentwicklung einer Firmware, selbst für ein Gamepad, ist keine einfache Aufgabe. Und Sie müssen viel Reverse Engineering an der Gamepad-Hardware durchführen. Es ist nicht unmöglich, aber ich würde nicht mit einer solchen Herausforderung beginnen.

Dieser Mikrocontroller ist ein Allzweck-Mikrocontroller mit eingebauter USB-Hardware. Es kann Programm sein, um wie viele Dinge zu funktionieren. Im Allgemeinen verwenden diese USB-Geräte die generischen USB Human Interface Device (HID)-Beschreibungen und kündigen als Joystick oder Gamepad an. Es ist ziemlich einfach. Google USB HID Joystick für viele Beispiele. So ziemlich alle Betriebssysteme haben Treiber für generische USB-HID-Geräte.

Der IC selbst ist ein QFN- oder LLP-Gehäuse, ein oberflächenmontiertes Bauteil (SMD). Die Dosen und werden oft von Hand gelötet, aber jedes Massenprodukt wird per Reflow, einem SMD-Lötprozess, hergestellt. Meist automatisiert.

Um sie zu programmieren, wird ein Programmierer verwendet, bevor sie aufgelötet werden, oder sie implementieren Testpunkte oder brechen einen Header für das In Circuit Serial Program (ICSP) aus. Dies kann auch als Teil des Herstellungsprozesses durch automatisierte Maschinen erfolgen.