Ist die Verwendung des CH340G für ein kommerzielles Produkt eine schreckliche Idee? [geschlossen]

12

Ich entwickle ein Nischenprodukt, das in einer relativ geringen Menge (wenige hundert Stück) produziert wird. Ich verwende einen Atmega uC und eine der Anforderungen ist die Fähigkeit, vom Benutzer vor Ort flashen zu können. Mein Plan ist es, den Arduino-Bootloader mit einem USB-zu-UART-IC zu verwenden (faul, ich weiß, aber bei dieser Lautstärke ist es wahrscheinlich die beste Option).

Es gibt viele Möglichkeiten. Mein Prototyp-Board verwendet momentan das FTDI FT232RL, aber das ist zu teuer für die Produktion, da der Preis für das gesamte Board bei etwa 20 USD liegt.

Zu den ICs, die ich in Betracht gezogen habe, gehören:

  • CH340G
    • Günstigste Option, aber wie ist der Status der signierten Treiber für OSX? Ich kann nicht feststellen, ob dies vollständig Plug-and-Play sein wird. Weiß jemand, wie der Status ist?
  • CP2102
    • Robust, keine Sorgen um signierte Fahrer etc. Aber es ist teurer.
  • MCP2200
    • Auch robust, keine Sorgen um signierte Treiber. Wie wähle ich dies gegenüber dem CP2102 aus? Sie sind fast der gleiche Preis.

Gibt es andere "Fallstricke" mit den oben genannten Auswahlmöglichkeiten als signierte Treiber? Ich möchte den Benutzer nicht zwingen, nicht signierte Treiber zu installieren / dem erneuten Flashen einen potenziell schmerzhaften Prozess hinzuzufügen, aber ich möchte auch nicht wirklich 2 US-Dollar zu den Stücklistenkosten hinzufügen, nur aus Gründen der Benutzerflashbarkeit.

Jede allgemeine Anleitung / Beratung wäre hilfreich. Vielen Dank.

willem.hill
quelle
3
Könnten Sie einfach ein separates Kabel bereitstellen, das gekauft werden kann, wenn der Benutzer es tatsächlich neu flashen möchte? Oder ist ein erneutes Aufblitzen für die Verwendung des Produkts unerlässlich?
DKNguyen
Das erneute Blitzen ist für die Verwendung des Produkts von wesentlicher Bedeutung, da es in vielen verschiedenen Szenarien eingesetzt werden kann und vom Kunden zu einem späteren Zeitpunkt für verschiedene Anwendungen vollständig umkonfiguriert werden muss.
willem.hill
Hat ein Kunde normalerweise nur eines der Geräte oder mehrere? Wenn es pro Kunde viele Entscheidungen gibt, kann Chetan Bhargava eine gute Option sein: Trennen Sie die Programmierschnittstelle vom Gerät.
jcaron
Ein Beispiel für ein Produkt, das einen CH340 verwendete und auf einen CP2104 umsteigen musste, um Probleme zu beheben: github.com/sqfmi/badgy#rev-2b
jcaron
Die bessere Frage ist, können Sie einen CH340-Chip kaufen? Als ich das letzte Mal nachgesehen habe, gab es keine US-Zulieferer, die das machten.
CrossRoads

Antworten:

26

Die einfachste und hier empfohlene Option ist die Verwendung eines Mikrocontrollers, der USB nativ unterstützt und mit einem USB-DFU-Bootloader (Device Firmware Update) programmiert werden kann. Ein Beispiel für einen solchen Mikrocontroller ist der ATmega32U4, wie er auf dem Arduino Leonardo zu sehen ist. Ein weiterer Grund ist der ST STM32F103. Selbst wenn diese Mikrocontroller etwas teurer sind als die, die Sie sonst verwendet hätten, ist der Kostenanstieg wahrscheinlich geringer als die Kosten einer diskreten USB-UART-Schnittstelle. Die Verwendung eines einzelnen Teils reduziert auch die Gesamtgröße und den Stromverbrauch Ihres Geräts.

duskwuff -inaktiv-
quelle
16U2 ist eine häufig verwendete Option für Arduino Uno und Mega, die mit OS X kompatibel sind - auch ältere Versionen.
Greenonline
1
@ Greenonline Gleiche Familie wie der 32U4, nur eine kleinere Version.
duskwuff -inactive-
8

Es gibt einen von Apple gelieferten Treiber für den CH340, der die neuesten Versionen von MacOS enthält. "AppleUSBCHCOM".

Kevin White
quelle
2

Wenn Sie Ihren Kunden die Möglichkeit geben, Ihr Gerät zu flashen, möchten Sie im Allgemeinen, dass sie es nicht blockieren.

Daher besteht die Hauptpriorität darin, eine robuste und sichere Verbindung zum Host-Gerät herzustellen. Meiner Erfahrung nach funktionieren alle Chips in den städtischen und Laborumgebungen, auf die Sie zielen, ziemlich gut.

Berücksichtigen Sie auch die Zeit, die erforderlich ist, um die Komponente zum Laufen zu bringen - Ihre Produktionsanzahl liegt bei Hunderten, und Sie addieren jeweils 2 USD dazu. Ist dieser "Verlust" mehr wert als Ihre (oder die des Entwicklers) Zeit? Ein gut dokumentierter Chip könnte tatsächlich die bessere Wahl sein, auch wenn er mehr kostet.

CH340

Ja, es ist wirklich eine schlechte Idee, zumindest wenn Sie Plug-and-Play möchten. Für mich unter Win 8.1 musste ich den Treiber manuell installieren (CH340SER.exe ) ich von der (chinesischen) Hersteller-Website herunterladen musste, die (zu diesem Zeitpunkt) keine englische Übersetzung hatte.

Die Veranstaltung fand in China statt, was ein Problem für sicherheitsbewusste Personen und für Personen sein könnte, die an organisatorische und / oder politische Regeln gebunden sind. Außerdem wurde es als Suchergebnis von vielen zweifelhaften "Free" -Treiber-Download-Sites übertroffen.

Wenn dies irgendeine ernsthafte Ausrüstung wäre (im Gegensatz zu "nur" einem Arduino), würde das meine Augenbrauen zur Decke heben. Das manuelle Installieren kann auch sehr ärgerlich sein, wenn Ihre Kunden keine dedizierten Geräte zum Flashen haben.

Ansonsten funktionierte dieser Chip wie erwartet.

CP2102

Es gab nicht viel zu sagen, wir haben sofort reagiert und keine Probleme angesprochen. Wäre wahrscheinlich meine Wahl für ein durchschnittliches Design.

FTDI

Ich habe dieses auf einer Standalone-USB-Serial-Konverterkarte und es funktioniert gut. Wie Sie geschrieben haben, ist es ziemlich teuer, aber ich glaube, es ist eine bessere Wahl in rauen Umgebungen (z. B. korrodierte Kontakte an Steckverbindern, auch EMI). Gibt Ihnen möglicherweise ein warmes, unscharfes Gefühl, weil Sie die ursprünglichen Entwickler unterstützen.

Andere Ideen

ISP

Laut der Antwort von @Chetan Bhargava besteht eine Option darin, einen Anschluss für das SPI zu haben und dann einen eigenständigen USB-Serial-Konverter zu verwenden.

Dazu müssen Sie auch einen zuverlässigen und sicher zu verwendenden Anschluss bereitstellen, an den der ISP angeschlossen werden kann. Natürlich können Sie hier mit Stiftleisten billig arbeiten, aber wenn Sie es richtig machen möchten (und / oder Ihren Kunden nicht genug vertrauen ), ist dieser Anschluss möglicherweise teurer als der zusätzliche Chip und ein Standard-USB-Anschluss. Serielle Verbindungen sind schwer zu debuggen, wenn sie nicht funktionieren, im Gegensatz zu USB, wo der Kunde zumindest benachrichtigt wird, dass das USB-Gerät nicht funktioniert.

Wenn Sie einen Standalone-Konverter mit Ihrer Karte bündeln, müssen Sie auch den Preis für die Konverter-Karte bezahlen. Ich würde annehmen, dass dies nicht billiger wäre, als den Chip zu integrieren. Dies könnte funktionieren, wenn jeder Kunde viele Ihrer Platinen besitzt, sodass der Konverter wiederverwendet werden könnte, oder wenn Sie nur die Kosten für die Anschaffung des Programmierers auf die Kundenseite verlagern können.

Wenn diese Option möglich ist, gibt es an dieser Stelle auch Atmels eigenes AVRISP, das hier eine gute Wahl ist, anstatt des einfachen USB-zu-Seriell-Verfahrens, obwohl es etwas veraltet ist. Ich denke, dass es bei etwa 100 oder 200 kbit / s endet, wenn moderne USB-Serial-Wandler in den Megabit-Bereich gehen. Es ist aber sehr robust in Bezug auf (Fehl-) Verwendung.

Eine andere gute Option könnte ein TC2030-Stecker sein. Es werden nur Pads auf der Platine benötigt, um damit arbeiten zu können, es ist jedoch etwas Fachwissen erforderlich (Sie müssen es vor Ort halten, bis die Programmierung abgeschlossen ist).

Kommunikationsschnittstellen

Moderne Mikrocontroller verfügen über eine Reihe weiterer Kommunikationsschnittstellen (Ethernet, WiFi, Bluetooth) und können mit diesen in der Regel geflasht werden. Ein Beispiel wäre der ESP32 , der etwa 6 USD kostet und ein SoC mit allen für eine WLAN-Verbindung erforderlichen Komponenten ist. Außerdem ist es Arduino-kompatibel (Sie können sogar die IDE verwenden) und verfügt über ein sehr umfassendes Beispielset, einschließlich eines WiFi-OTA-Bootloaders. Sie benötigen lediglich einen ISP für die Erstbereitstellung des Bootloaders.

Wenn - wie es sich in Ihrer Frage anhört - Ihr Projekt größtenteils abgeschlossen ist, ist dies wahrscheinlich keine Option mehr.

Antimuster
quelle
-2

Damit Ihr Produkt vor Ort programmierbar Bildbeschreibung hier eingebenist, muss ein gemeinsames Header-Pin-Out verwendet werden. Arduino Pinout ist ziemlich verbreitet. Es ist nicht erforderlich, einen USB-zu-Seriell-Konverter einzubetten, wenn Ihre Updates nicht wöchentlich erfolgen. Für eine Feldeinrichtung würde ich die Kosten für Feldprogrammiergeräte eher erhöhen als für Feldprogrammierfähigkeiten


Sie müssen keinen seriellen Konverter einbetten, wenn Sie weniger häufig flashen müssen.

Einige gängige (und kostengünstige) USB-Seriell-Wandler basieren auf folgenden Chipsätzen.

FTDI - Windows- und Linux-Treiber, aber die Treiber können Ihr Kabel
beschädigen - vermeiden Sie CH340 - Windows- und Linux-Treiber
PL2303 - Windows- und Linux-Treiber

Die Treiber sind für Windows- und Linux-Plattformen leicht verfügbar. Ich kann nicht viel über Apple sagen, da ich mir einen Apple-Laptop nicht leisten kann.

Ich würde die USB-Serial lieber aus meinem Projekt ausschließen, wenn die Wahrscheinlichkeit, vor Ort zu programmieren, <50% ist.

Chetan Bhargava
quelle