Czy używanie CH340G na produkcie komercyjnym to okropny pomysł? [Zamknięte]

12

Rozwijam niszowy produkt, który będzie produkowany przy dość niskim nakładzie (w setkach). Korzystam z Atmega uC, a jednym z wymagań jest możliwość flashowania przez użytkownika. Moim planem jest użycie bootloadera Arduino z układem USB-to-UART (leniwy, wiem, ale na tym tomie jest to prawdopodobnie najlepsza opcja).

Istnieje wiele możliwości wyboru. Moja prototypowa płytka korzysta obecnie z FTDI FT232RL, ale jest to zbyt kosztowne do produkcji, ponieważ cena całej płyty wynosi około 20 USD.

Rozważane przeze mnie układy scalone to:

  • CH340G
    • Najtańsza opcja, ale jaki jest status podpisanych sterowników dla OSX? Nie mogę ustalić, czy będzie to całkowicie plug and play. Czy ktoś wie, jaki to ma status?
  • CP2102
    • Solidny, bez obaw o podpisanych kierowców itp. Ale jest droższy.
  • MCP2200
    • Również solidny, nie martwi się o podpisane sterowniki. Jak wybrać tę opcję w porównaniu do CP2102? Są prawie w tej samej cenie.

Czy są jakieś inne „gotchas” z powyższymi opcjami poza podpisanymi sterownikami? Nie chcę zmuszać użytkownika do instalowania niepodpisanych sterowników / dodawania potencjalnie bolesnego procesu do procedury ponownego flashowania, ale tak naprawdę nie chcę dodawać 2 USD do kosztu BOM tylko ze względu na możliwość flashowania przez użytkownika.

Przydatne byłyby wszelkie ogólne wskazówki / porady. Dzięki.

willem.hill
źródło
3
Czy możesz po prostu dostarczyć osobny kabel, który można kupić, jeśli użytkownik rzeczywiście chce go przepłukać? A może ponowne użycie jest niezbędne do użytkowania produktu?
DKNguyen
Ponowne flashowanie ma zasadnicze znaczenie dla użytkowania produktu, ponieważ może być stosowane w wielu różnych scenariuszach i musi być w pełni konfigurowalne przez klienta w przyszłości dla różnych zastosowań.
willem.hill
Czy jeden klient zwykle ma tylko jedno urządzenie, czy wiele? Jeśli na klienta przypada wiele decyzji, Chetan Bhargava może być dobrym rozwiązaniem: oddziel interfejs programowania od samego urządzenia.
jcaron
Przykład produktu, który wykorzystywał CH340 i musiał przejść na CP2104, aby rozwiązać problemy: github.com/sqfmi/badgy#rev-2b
jcaron
Lepsze pytanie, czy możesz kupić układ CH340? Nie było żadnych amerykańskich dostawców, którzy przeprowadziliby to podczas ostatniej kontroli.
CrossRoads

Odpowiedzi:

26

Najprostszą opcją, którą polecam tutaj, byłoby użycie mikrokontrolera, który natywnie obsługuje USB i może być programowany za pomocą bootloadera USB DFU (Device Firmware Update). Jednym z przykładów takiego mikrokontrolera jest ATmega32U4, jak widać na Arduino Leonardo; innym jest ST STM32F103. Nawet jeśli te mikrokontrolery są nieco droższe niż te, których byś użył w innym przypadku, wzrost kosztów jest prawdopodobnie mniejszy niż koszt dyskretnego interfejsu USB UART. Użycie pojedynczej części zmniejszy również całkowity rozmiar i zużycie energii przez urządzenie.

Duskwuff -inactive-
źródło
16U2 jest powszechną opcją stosowaną w Arduino Uno i Mega, które są kompatybilne z OS X - nawet starsze wersje.
Greenonline
1
@Greenonline Ta sama rodzina co 32U4, o której wspomniałem, tylko mniejsza wersja.
duskwuff -inactive-
8

Dostępny jest sterownik Apple dla CH340, zawierający najnowsze wersje MacOS. „AppleUSBCHCOM”.

Kevin White
źródło
2

Zasadniczo, jeśli dajesz swoim klientom możliwość flashowania twojego urządzenia, nie chcesz, żeby je zamrozili.

Dlatego głównym priorytetem jest niezawodne i bezpieczne połączenie z urządzeniem hosta. Z mojego doświadczenia wynika, że ​​wszystkie chipy działają raczej dobrze w warunkach miejskich i laboratoryjnych, które, jak zakładam, są celem.

Weź również pod uwagę czas potrzebny do poprawnego działania komponentu - twoja produkcja jest w niskich setkach i dodajesz 2 $ do każdego. Czy ta „strata” jest warta więcej niż twój (lub deweloper) czas? Dobrze udokumentowany układ może być lepszym wyborem, nawet jeśli kosztuje więcej.

CH340

Tak, to naprawdę zły pomysł, przynajmniej jeśli chcesz Plug-And-Play. W przypadku systemu Windows 8.1 musiałem ręcznie zainstalować sterownik ( CH340SER.exe), który musiałem pobrać ze strony internetowej (chińskiego) producenta, która (w tym czasie) nie miała tłumaczenia na angielski.

Był on hostowany w Chinach, co może być problemem dla osób dbających o bezpieczeństwo i tych, które są związane zasadami organizacyjnymi i / lub politycznymi. Zostało również przewyższone jako wynik wyszukiwania przez wiele podejrzanych „bezpłatnych” stron pobierania sterowników.

Gdyby to był jakiś poważny sprzęt (w przeciwieństwie do „po prostu” Arduino), uniósłbym brwi do sufitu. Ręczna instalacja może być również bardzo irytująca, jeśli Twoi klienci nie mają dedykowanego sprzętu do flashowania.

W przeciwnym razie układ ten działał zgodnie z oczekiwaniami.

CP2102

Niewiele do powiedzenia, działało po wyjęciu z pudełka i nie powodowało żadnych problemów. Byłby prawdopodobnie moim wyborem dla przeciętnego projektu.

FTDI

Mam ten na osobnej karcie konwertera USB-Serial i działa dobrze. Jak pisałeś, jest raczej drogi, ale uważam, że może być lepszym wyborem w trudnych warunkach (na przykład skorodowane kontakty na złączach, również EMI). Może dać ci ciepłe uczucie rozmycia, ponieważ wspierasz oryginalnych programistów.

Inne pomysły

ISP

Zgodnie z odpowiedzią @Chetan Bhargava, opcją byłoby posiadanie złącza SPI, a następnie użycie samodzielnego konwertera szeregowego USB.

Wymaga to również zapewnienia niezawodnego i bezpiecznego w użyciu złącza, do którego ISP może się podłączyć. Oczywiście możesz taniej tutaj z nagłówkami pinów, ale jeśli chcesz to zrobić dobrze (i / lub nie ufać swoim klientom wystarczająco ), to złącze może być droższe niż dodatkowy układ i standardowe złącze USB. Połączenia szeregowe są wściekle trudne do debugowania, jeśli nie działają, w przeciwieństwie do USB, w którym klient przynajmniej zostanie powiadomiony, że urządzenie USB nie działa.

Jeśli dołączysz samodzielny konwerter z kartą, będziesz musiał zapłacić również cenę za kartę konwertera. Zakładam, że nie byłoby to tańsze niż zintegrowanie układu. Może to działać, jeśli każdy klient jest właścicielem wielu płyt, więc konwerter może zostać ponownie użyty, lub jeśli możesz po prostu przerzucić koszty pozyskania programisty po stronie klienta.

Jeśli ta opcja jest możliwa, w tym momencie istnieje także własna AVRISP firmy Atmel, który jest dobrym wyborem zamiast zwykłego złącza USB na szeregowy, choć nieco przestarzały. Myślę, że ogranicza się to do około 100 lub 200 kb / s, gdzie nowoczesne konwertery USB-Szeregowe wchodzą w zakres megabitowy. Ale jest bardzo odporny na (niewłaściwe) użycie.

Inną dobrą opcją może być złącze TC2030. Wymaga tylko padów na płytce drukowanej do pracy, ale wymaga pewnej wiedzy (musisz trzymać ją na miejscu, aż do zakończenia programowania).

Interfejsy komunikacyjne

Współczesne mikrokontrolery są również wyposażone w szereg innych interfejsów komunikacyjnych (Ethernet, WiFi, Bluetooth) i zwykle można je flashować za ich pomocą. Przykładem może być ESP32, który kosztuje około 6 USD i jest SoC ze wszystkimi komponentami niezbędnymi do połączenia Wi-Fi. Jest także kompatybilny z Arduino (możesz nawet użyć IDE) i ma bardzo dokładny zestaw przykładów, w tym bootloader WiFi OTA. Potrzebujesz tylko ISP do początkowego wdrożenia bootloadera.

Jeśli - jak to brzmi w twoim pytaniu - twój projekt jest w większości zakończony, prawdopodobnie nie jest to już opcja.

antipattern
źródło
-2

Aby twój produkt był programowalny w terenie / wprowadź opis zdjęcia tutajkabel flash wymaga użycia wspólnego złącza wyjściowego. Pinout Arduino jest dość powszechny. nie ma potrzeby osadzania konwertera USB na szeregowy, jeśli aktualizacje nie są cotygodniowe. W przypadku konfiguracji w terenie zwiększyłbym koszt sprzętu do programowania w terenie, a nie możliwości programowania w terenie


Nie musisz osadzać konwertera szeregowego, jeśli chcesz rzadziej flashować.

Niektóre popularne (i tanie) konwertery USB na szeregowe są oparte na następujących zestawach układów.

FTDI - sterowniki Windows i Linux, ale sterowniki mogą
zepsuć kabel - unikaj CH340 - sterowniki Windows i Linux
PL2303 - sterownik Windows i Linux

Sterowniki są łatwo dostępne dla platform Windows i Linux. Nie mogę powiedzieć wiele o jabłku, ponieważ nie stać mnie na laptopa.

Wolę zrezygnować z USB-Serial poza moim projektem, jeśli prawdopodobieństwo programowania w terenie wynosi <50%.

Chetan Bhargava
źródło