Apakah menggunakan CH340G pada produk komersial merupakan ide yang mengerikan? [Tutup]

12

Saya mengembangkan produk khusus yang akan diproduksi pada volume yang cukup rendah (ratusan rendah). Saya menggunakan Atmega uC, dan salah satu persyaratannya adalah kemampuan untuk dapat di-flashable oleh pengguna. Rencana saya adalah menggunakan bootloader Arduino dengan IC USB-ke-UART (malas, saya tahu, tetapi pada volume ini mungkin merupakan pilihan terbaik).

Ada banyak pilihan. Papan prototipe saya sekarang menggunakan FTDI FT232RL, tapi itu terlalu mahal untuk produksi, karena titik harga untuk seluruh papan adalah sekitar $ 20.

IC yang saya pertimbangkan meliputi:

  • CH340G
    • Opsi termurah, tapi apa status driver yang ditandatangani untuk OSX? Saya tidak dapat menentukan apakah ini sepenuhnya plug and play. Adakah yang tahu status apa ini?
  • CP2102
    • Kuat, tidak ada kekhawatiran tentang driver yang masuk dll. Tapi itu lebih mahal.
  • MCP2200
    • Juga tangguh, tidak ada kekhawatiran tentang driver yang masuk. Bagaimana saya memilih ini dibandingkan CP2102? Mereka hampir harga yang sama.

Apakah ada "gotcha" lain dengan pilihan di atas selain dari driver yang terdaftar? Saya tidak ingin memaksa pengguna untuk menginstal driver yang tidak ditandatangani / menambahkan proses yang berpotensi menyakitkan pada prosedur re-flashing, tetapi saya juga tidak benar-benar ingin menambahkan $ 2 ke biaya BOM hanya untuk flashability pengguna.

Bimbingan / saran umum apa pun akan bermanfaat. Terima kasih.

willem.hill
sumber
3
Bisakah Anda menyediakan kabel terpisah yang dapat dibeli jika pengguna benar-benar ingin merombaknya? Atau apakah reflashing penting untuk penggunaan produk?
DKNguyen
Reflashing sangat penting untuk penggunaan produk, karena dapat digunakan dalam banyak skenario yang berbeda, dan harus sepenuhnya dikonfigurasi ulang oleh pelanggan di masa mendatang untuk aplikasi yang berbeda.
willem.hill
Apakah satu pelanggan biasanya hanya memiliki satu perangkat, atau banyak? Jika ada banyak keputusan per pelanggan, Chetan Bhargava mungkin merupakan pilihan yang baik: buat antarmuka pemrograman terpisah dari perangkat itu sendiri.
jcaron
Contoh produk yang menggunakan CH340 dan harus beralih ke CP2104 untuk menyelesaikan masalah: github.com/sqfmi/badgy#rev-2b
jcaron
Pertanyaan yang lebih baik adalah Anda dapat membeli chip CH340? Tidak ada pemasok AS yang mengangkutnya terakhir kali saya periksa.
CrossRoads

Jawaban:

26

Opsi paling sederhana, dan yang saya rekomendasikan di sini, adalah menggunakan mikrokontroler yang mendukung USB secara asli dan dapat diprogram dengan bootloader DFU (Device Firmware Update) USB. Salah satu contoh dari mikrokontroler tersebut adalah ATmega32U4, seperti yang terlihat pada Arduino Leonardo; yang lain adalah ST STM32F103. Bahkan jika mikrokontroler ini sedikit lebih mahal daripada yang Anda akan gunakan sebaliknya, peningkatan biaya mungkin lebih kecil daripada biaya antarmuka USB UART diskrit. Menggunakan satu bagian juga akan mengurangi ukuran keseluruhan dan konsumsi daya perangkat Anda.

duskwuff -inactive-
sumber
16U2 adalah opsi umum yang digunakan pada Arduino Uno dan Mega, yang kompatibel dengan OS X - bahkan versi yang lebih lama.
Greenonline
1
@ Greenonline Keluarga yang sama dengan 32U4 yang saya sebutkan, hanya versi yang lebih kecil.
duskwuff -inactive-
8

Ada driver yang disediakan Apple untuk CH340 termasuk versi terbaru dari MacOS. "AppleUSBCHCOM".

Kevin White
sumber
2

Secara umum, jika Anda memberi pelanggan Anda kemampuan untuk mem-flash perangkat Anda, Anda ingin mereka tidak merusaknya.

Dengan demikian, penyediaan prioritas utama adalah koneksi yang kuat dan aman ke perangkat host. Dalam pengalaman saya, semua chip bekerja dengan baik di pengaturan perkotaan dan laboratorium yang saya anggap Anda targetkan.

Pertimbangkan juga waktu yang dibutuhkan untuk membuat komponen bekerja dengan benar - jumlah produksi Anda dalam ratusan rendah, dan Anda menambahkan $ 2 untuk masing-masing. Apakah "kerugian" itu bernilai lebih dari waktu Anda (atau pengembang)? Chip yang terdokumentasi dengan baik mungkin sebenarnya merupakan pilihan yang lebih baik, bahkan jika harganya lebih mahal.

CH340

Ya, itu benar-benar Ide yang buruk, setidaknya jika Anda ingin Plug-And-Play. Bagi saya di Win 8.1, saya perlu menginstal driver ( CH340SER.exe) yang harus saya unduh secara manual dari situs web produsen (China) yang (pada waktu itu) tidak memiliki terjemahan bahasa Inggris.

Itu diselenggarakan di Cina, yang mungkin menjadi masalah bagi individu yang berpikiran keamanan dan mereka yang terikat oleh aturan organisasi dan / atau politik. Juga diunggulkan sebagai hasil pencarian oleh banyak situs unduhan driver "meragukan".

Jika ini adalah peralatan yang serius (berlawanan dengan "hanya" Arduino), itu akan menaikkan alisku ke langit-langit. Menginstal secara manual mungkin juga sangat menjengkelkan jika pelanggan Anda tidak memiliki Peralatan khusus untuk menginstal.

Kalau tidak, chip ini berfungsi seperti yang diharapkan.

CP2102

Tidak banyak bicara, bekerja di luar kotak dan tidak memunculkan masalah. Mungkin akan menjadi pilihan saya untuk desain rata-rata.

FTDI

Saya memilikinya di papan konverter USB-Serial mandiri dan berkinerja baik. Seperti yang Anda tulis, ini agak mahal, tetapi saya percaya ini mungkin pilihan yang lebih baik di lingkungan yang kasar (misalnya kontak yang terkorosi pada konektor, juga EMI). Mungkin memberi Anda perasaan fuzzy hangat karena Anda mendukung pengembang asli.

Ide lain

ISP

Sesuai jawaban @Chetan Bhargava, sebuah opsi adalah memiliki konektor untuk SPI dan kemudian menggunakan konverter USB-Serial mandiri.

Ini juga mengharuskan Anda untuk menyediakan konektor yang dapat diandalkan dan aman digunakan untuk dilampirkan oleh ISP. Jelas Anda bisa menjadi murah dengan pin header di sini, tetapi jika Anda ingin melakukannya dengan benar (dan / atau tidak cukup mempercayai pelanggan Anda ), maka konektor ini mungkin lebih mahal daripada chip tambahan dan konektor USB stock. Koneksi serial sangat sulit untuk di-debug jika tidak berfungsi, berlawanan dengan USB tempat pelanggan setidaknya akan diberi tahu bahwa perangkat USB tidak berfungsi.

Jika Anda membundel konverter mandiri dengan papan Anda, Anda harus membayar harga untuk papan konverter juga. Saya berasumsi ini tidak akan lebih murah daripada mengintegrasikan chip. Ini bisa berfungsi jika setiap pelanggan memiliki banyak papan Anda, sehingga konverter dapat digunakan kembali, atau jika Anda bisa mendorong biaya untuk mendapatkan programmer ke sisi pelanggan.

Jika opsi ini kemungkinan, pada titik ini, ada juga Atmel sendiri AVRISP yang merupakan pilihan yang baik di sini daripada USB-to-Serial, meskipun agak ketinggalan jaman. Saya pikir itu berakhir pada sekitar 100 atau 200 kbps di mana konverter USB-Serial modern masuk ke kisaran megabit. Tetapi sangat kuat dalam hal penggunaan (mis-).

Pilihan lain yang bagus adalah konektor TC2030. Ini hanya membutuhkan bantalan pada PCB untuk bekerja dengan, tetapi membutuhkan keahlian (Anda harus menahannya di tempat sampai pemrograman selesai).

Antarmuka komunikasi

Mikrokontroler modern juga dilengkapi dengan sejumlah antarmuka komunikasi lainnya (Ethernet, WiFi, Bluetooth) dan biasanya dapat di-flash menggunakan ini. Contohnya adalah ESP32 yang datang dengan biaya sekitar 6 USD dan merupakan SoC dengan semua komponen yang diperlukan untuk koneksi wifi. Juga kompatibel dengan Arduino (Anda bahkan dapat menggunakan IDE) dan memiliki contoh yang sangat teliti, termasuk bootloader OTA WiFi. Anda hanya perlu ISP untuk penyebaran awal bootloader.

Jika - seperti yang terdengar dalam pertanyaan Anda - proyek Anda sebagian besar sudah selesai, ini mungkin bukan pilihan lagi.

antipattern
sumber
-2

Agar produk Anda menjadi bidang yang bisa diprogram / masukkan deskripsi gambar di sinikabel flash adalah dengan menggunakan pin header umum. Pinout Arduino cukup umum. tidak perlu menanamkan konverter USB ke serial jika pembaruan Anda tidak setiap minggu. Untuk pengaturan lapangan saya akan meningkatkan biaya peralatan pemrograman lapangan daripada kemampuan program lapangan menjadi


Tidak perlu menyematkan konverter serial jika Anda perlu flash lebih jarang.

Beberapa konverter USB ke serial yang umum (dan murah) didasarkan pada set-chip berikut.

FTDI - driver Windows dan Linux tetapi driver dapat
merusak kabel Anda - hindari CH340 - driver Windows dan Linux
PL2303 - driver Windows dan Linux

Driver mudah tersedia untuk platform Windows dan Linux. Saya tidak bisa bicara banyak tentang apel karena saya tidak mampu membeli laptop apel.

Saya lebih suka meninggalkan USB-Serial dari proyek saya jika probabilitas untuk memprogram di lapangan adalah <50%.

Chetan Bhargava
sumber