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.