L'utilizzo del CH340G su un prodotto commerciale è un'idea orribile? [chiuso]


12

Sto sviluppando un prodotto di nicchia che verrà prodotto a un volume abbastanza basso (centinaia basse). Sto usando un Atmega uC e uno dei requisiti è la capacità di essere flaslavabile sul campo dall'utente. Il mio piano è di utilizzare il bootloader Arduino con un IC da USB a UART (pigro, lo so, ma a questo volume è probabilmente l'opzione migliore).

Ci sono molte scelte La mia scheda prototipo in questo momento sta usando FTDI FT232RL, ma è troppo costoso per la produzione, poiché il prezzo per l'intera scheda è di circa $ 20.

I circuiti integrati che ho considerato includono:

  • CH340G
    • Opzione più economica, ma qual è lo stato dei driver firmati per OSX? Non riesco a determinare se questo sarà completamente plug and play. Qualcuno sa qual è lo stato di questo?
  • CP2102
    • Robusto, nessuna preoccupazione per i driver firmati ecc. Ma è più costoso.
  • MCP2200
    • Anche robusto, nessuna preoccupazione per i driver firmati. Come scelgo questo rispetto al CP2102? Sono quasi allo stesso prezzo.

Ci sono altri "trucchi" con le opzioni sopra menzionate oltre ai driver firmati? Non voglio forzare l'utente a installare driver non firmati / aggiungere un processo potenzialmente doloroso alla procedura di riprogrammazione, ma non voglio nemmeno aggiungere $ 2 al costo della distinta base solo per la flessibilità dell'utente.

Qualsiasi orientamento / consiglio generale sarebbe utile. Grazie.


3
Potresti semplicemente fornire un cavo separato che può essere acquistato se l'utente vuole davvero ricollegarlo? O il reflashing è essenziale per l'uso del prodotto?
DKNguyen,

Il reflashing è essenziale per l'uso del prodotto, poiché può essere utilizzato in molti scenari diversi e deve essere completamente riconfigurabile dal cliente in una data futura per diverse applicazioni.
willem.hill,

Un cliente di solito ha solo uno dei dispositivi o molti? Se ci sono molti decreti per cliente, Chetan Bhargava potrebbe essere una buona opzione: separare l'interfaccia di programmazione dal dispositivo stesso.
Jcaron,

Un esempio di un prodotto che utilizzava un CH340 e doveva passare a un CP2104 per risolvere i problemi: github.com/sqfmi/badgy#rev-2b
jcaron,

La domanda migliore è: puoi acquistare un chip CH340? Non ci sono stati fornitori statunitensi che lo hanno trasportato l'ultima volta che ho controllato.
CrossRoads

Risposte:


26

L'opzione più semplice, e quella che consiglierei qui, sarebbe quella di utilizzare un microcontrollore che supporta nativamente USB e può essere programmato con un bootloader USB DFU (Device Firmware Update). Un esempio di tale microcontrollore è l'ATmega32U4, come visto sull'Arduino Leonardo; un altro è ST STM32F103. Anche se questi microcontrollori sono un po 'più costosi di quelli che avresti usato altrimenti, l'aumento dei costi è probabilmente inferiore a quello di un'interfaccia USB UART discreta. L'uso di una singola parte riduce anche le dimensioni complessive e il consumo energetico del dispositivo.


16U2 è un'opzione comune utilizzata su Arduino Uno e Mega, che sono compatibili con OS X - anche versioni precedenti.
Greenonline,

1
@Greenonline Stessa famiglia della 32U4 che ho citato, solo una versione più piccola.
duskwuff -inattivo-

8

Esiste un driver fornito da Apple per CH340, incluse le versioni recenti di MacOS. "AppleUSBCHCOM".


2

In generale, se dai ai tuoi clienti la possibilità di eseguire il flashing del tuo dispositivo, vuoi che non lo facciano.

Pertanto, la principale priorità fornita è una connessione solida e sicura al dispositivo host. Nella mia esperienza, tutti i chip funzionano piuttosto bene negli ambienti urbani e di laboratorio che presumo tu stia prendendo di mira.

Considera anche il tempo necessario per far funzionare correttamente il componente: il tuo conteggio della produzione è basso, e aggiungi $ 2 a ciascuno. Quella "perdita" vale più del tuo tempo (o dello sviluppatore)? Un chip ben documentato potrebbe effettivamente essere una scelta migliore, anche se costa di più.

CH340

Sì, è davvero una cattiva idea, almeno se vuoi Plug-And-Play. Per me su Win 8.1, dovevo installare manualmente il driver ( CH340SER.exe) che dovevo scaricare dal sito Web del produttore (cinese) che non aveva (a quel tempo) traduzione in inglese.

È stato ospitato in Cina, che potrebbe essere un problema per gli individui orientati alla sicurezza e quelli vincolati da regole organizzative e / o politiche. Inoltre è stato superato come risultato di ricerca da molti siti di download di driver "gratuiti".

Se si trattasse di un equipaggiamento serio (al contrario di "solo" un Arduino), questo avrebbe sollevato le mie sopracciglia al soffitto. L'installazione manuale potrebbe anche essere molto fastidiosa se i tuoi clienti non dispongono di apparecchiature dedicate per il flashing.

Altrimenti, questo chip ha funzionato come previsto.

CP2102

Non c'è molto da dire, ha funzionato fuori dagli schemi e non ha sollevato alcun problema. Probabilmente sarebbe la mia scelta per un design medio.

FTDI

Ho questo su una scheda convertitore USB-seriale standalone e funziona bene. Come hai scritto, è piuttosto costoso, ma credo che potrebbe essere una scelta migliore in ambienti difficili (ad esempio contatti corrosi sui connettori, anche EMI). Potrebbe darti una calda sensazione confusa perché supporti gli sviluppatori originali.

Altre idee

ISP

Secondo la risposta di @Chetan Bhargava, un'opzione sarebbe quella di avere un connettore per l'SPI e quindi utilizzare un convertitore USB-seriale autonomo.

Ciò richiede inoltre di fornire un connettore affidabile e sicuro da utilizzare per il collegamento dell'ISP. Ovviamente puoi andare a buon mercato con le intestazioni dei pin qui, ma se vuoi farlo bene (e / o non fidarti abbastanza dei tuoi clienti ), allora questo connettore potrebbe essere più costoso del chip aggiuntivo e di un connettore USB di serie. Le connessioni seriali sono furiosamente difficili da eseguire il debug se non funzionano, al contrario di USB in cui il cliente verrà almeno informato che il dispositivo USB non funziona.

Se unisci un convertitore standalone con la tua scheda, dovrai pagare anche il prezzo per la scheda del convertitore. Suppongo che questo non sarebbe più economico dell'integrazione del chip. Questo potrebbe funzionare se ogni cliente possiede molte delle tue schede, quindi il convertitore potrebbe essere riutilizzato o se puoi semplicemente spingere i costi di acquisizione del programmatore sul lato cliente.

Se questa opzione è una possibilità, a questo punto, c'è anche il proprio AVRISP di Atmel che è una buona scelta qui invece del semplice USB-a-seriale, anche se un po 'obsoleto. Penso che si chiuda a circa 100 o 200 kbps in cui i moderni convertitori USB-seriale vanno nella gamma dei megabit. Ma è molto robusto per quanto riguarda il (cattivo) utilizzo.

Un'altra buona opzione potrebbe essere un connettore TC2030. Funziona solo con i pad sul PCB, ma richiede un po 'di esperienza (devi tenerlo sul posto fino al termine della programmazione).

Interfacce di comunicazione

I moderni microcontrollori sono inoltre dotati di numerose altre interfacce di comunicazione (Ethernet, WiFi, Bluetooth) e in genere possono essere utilizzate come flash. Un esempio potrebbe essere l' ESP32 che ha un costo di circa 6 USD ed è un SoC con tutti i componenti necessari per una connessione wifi. Inoltre è compatibile con Arduino (puoi persino usare l'IDE) e ha un set di esempi molto accurato, incluso un bootloader OTA WiFi. Avresti solo bisogno di un ISP per la distribuzione iniziale del bootloader.

Se - come sembra nella tua domanda - il tuo progetto è per lo più finito, questa probabilmente non è più un'opzione.


-2

Affinché il tuo prodotto sia programmabile sul campo / il inserisci qui la descrizione dell'immaginecavo flash deve utilizzare un comune pin di uscita. Il pinout di Arduino è piuttosto comune. non è necessario incorporare un convertitore da USB a seriale se gli aggiornamenti non sono settimanali. Per una configurazione sul campo aumenterei il costo delle apparecchiature di programmazione sul campo anziché la capacità del programma sul campo


Non è necessario incorporare un convertitore seriale se è necessario eseguire il flashing meno spesso.

Alcuni comuni (ea basso costo) convertitori da USB a seriale si basano sui seguenti set di chip.

FTDI - Driver Windows e Linux ma i driver possono
danneggiare il cavo - evitare CH340 - Driver Windows e Linux
PL2303 - Driver Windows e Linux

I driver sono facilmente disponibili per la piattaforma Windows e Linux. Non posso dire molto su Apple in quanto non posso permettermi un laptop Apple.

Preferirei lasciare USB-Serial fuori dal mio progetto se la probabilità di programmare in campo è <50%.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.