การใช้ CH340G กับผลิตภัณฑ์เชิงพาณิชย์เป็นแนวคิดที่น่ากลัวใช่หรือไม่ [ปิด]


12

ฉันกำลังพัฒนาผลิตภัณฑ์เฉพาะที่จะผลิตในปริมาณที่ค่อนข้างต่ำ (ต่ำหลายร้อย) ฉันใช้ Atmega uC และข้อกำหนดข้อหนึ่งก็คือความสามารถในการใช้งานได้โดยผู้ใช้ แผนของฉันคือการใช้ Arduino bootloader กับ USB-to-UART IC (ขี้เกียจฉันรู้ แต่ในระดับเสียงนี้น่าจะเป็นตัวเลือกที่ดีที่สุด)

มีหลายทางเลือก บอร์ดต้นแบบของฉันตอนนี้ใช้ FTDI FT232RL แต่มันแพงเกินไปสำหรับการผลิตเนื่องจากราคาสำหรับทั้งกระดานอยู่ที่ประมาณ $ 20

ไอซีที่ฉันพิจารณาแล้วรวมถึง:

  • CH340G
    • ตัวเลือกที่ถูกที่สุด แต่สถานะของไดรเวอร์ที่ลงชื่อสำหรับ OSX คืออะไร ฉันไม่สามารถระบุได้ว่าจะเป็นแบบพลักแอนด์เพลย์อย่างสมบูรณ์หรือไม่ ไม่มีใครรู้ว่าสถานะของสิ่งนี้คืออะไร?
  • CP2102
    • ทนทานไม่ต้องกังวลกับไดรเวอร์ที่ลงชื่อ ฯลฯ แต่มันมีราคาแพงกว่า
  • MCP2200
    • แข็งแกร่งไม่ต้องกังวลกับไดรเวอร์ที่ลงนาม ฉันจะเลือกสิ่งนี้กับ CP2102 ได้อย่างไร พวกเขาเกือบจะราคาเดียวกัน

มี "gotchas" อื่น ๆ ที่มีตัวเลือกข้างต้นนอกเหนือจากไดรเวอร์ที่ลงชื่อ? ฉันไม่ต้องการบังคับให้ผู้ใช้ติดตั้งไดรเวอร์ที่ไม่ได้ลงชื่อ / เพิ่มกระบวนการที่อาจเจ็บปวดไปสู่ขั้นตอนการกะพริบอีกครั้ง แต่ฉันก็ไม่ต้องการเพิ่ม $ 2 ให้กับต้นทุน BOM สำหรับความสามารถในการแฟลชของผู้ใช้

คำแนะนำทั่วไป / คำแนะนำใด ๆ จะเป็นประโยชน์ ขอบคุณ


3
คุณสามารถให้สายเคเบิลแยกต่างหากที่สามารถซื้อได้หากผู้ใช้ต้องการจริงหรือไม่? หรือการ reflashing จำเป็นต่อการใช้ผลิตภัณฑ์?
DKNguyen

การ Reflashing นั้นมีความสำคัญต่อการใช้ผลิตภัณฑ์เนื่องจากอาจมีการใช้งานในหลาย ๆ สถานการณ์และลูกค้าต้องกำหนดค่าใหม่ได้อย่างสมบูรณ์ในอนาคตสำหรับการใช้งานที่แตกต่างกัน
willem.hill

ลูกค้ารายหนึ่งมักจะมีอุปกรณ์เพียงชิ้นเดียวหรือหลายอย่าง หากมีการตัดสินใจจำนวนมากต่อลูกค้าChetan Bhargavaอาจเป็นตัวเลือกที่ดี: ทำให้ส่วนต่อโปรแกรมการเขียนโปรแกรมแยกจากอุปกรณ์
jcaron

ตัวอย่างของผลิตภัณฑ์ที่ใช้ CH340 และต้องเปลี่ยนเป็น CP2104 เพื่อแก้ไขปัญหา: github.com/sqfmi/badgy#rev-2b
jcaron

คำถามที่ดีกว่าคือคุณสามารถซื้อชิป CH340 ได้หรือไม่ ไม่มีซัพพลายเออร์สหรัฐที่ดำเนินการครั้งสุดท้ายที่ฉันตรวจสอบ
CrossRoads

คำตอบ:


26

ตัวเลือกที่ง่ายที่สุดและหนึ่งที่ฉันแนะนำที่นี่คือการใช้ไมโครคอนโทรลเลอร์ที่รองรับ USB โดยกำเนิดและสามารถตั้งโปรแกรมด้วย bootloader USB DFU (อัปเดตเฟิร์มแวร์อุปกรณ์) ตัวอย่างหนึ่งของไมโครคอนโทรลเลอร์เช่น ATmega32U4 ดังที่เห็นใน Arduino Leonardo; อีกอันคือ ST STM32F103 แม้ว่าไมโครคอนโทรลเลอร์เหล่านี้จะมีราคาแพงกว่าบิตที่คุณจะใช้เป็นอย่างอื่นการเพิ่มขึ้นของค่าใช้จ่ายอาจน้อยกว่าค่าใช้จ่ายของอินเตอร์เฟส USB แบบแยกส่วน UART การใช้เพียงส่วนเดียวจะช่วยลดขนาดโดยรวมและการใช้พลังงานของอุปกรณ์ของคุณ


16U2 เป็นตัวเลือกทั่วไปที่ใช้กับ Arduino Uno และ Mega ซึ่งรองรับ OS X - แม้เป็นเวอร์ชั่นที่เก่ากว่า
Greenonline

1
@Greenonline ตระกูลเดียวกับรุ่น 32U4 ที่ฉันพูดถึงเป็นรุ่นที่เล็กกว่า
duskwuff -inactive-


2

โดยทั่วไปถ้าคุณให้ความสามารถแก่ลูกค้าของคุณในการแฟลชอุปกรณ์ของคุณคุณต้องการให้ลูกค้าไม่ทำการก่ออิฐ

ดังนั้นการจัดลำดับความสำคัญหลักคือการเชื่อมต่อที่มีประสิทธิภาพและปลอดภัยกับอุปกรณ์โฮสต์ จากประสบการณ์ของฉันชิปทั้งหมดทำงานได้ดีในการตั้งค่าในเมืองและห้องปฏิบัติการซึ่งฉันคิดว่าคุณกำลังกำหนดเป้าหมาย

พิจารณาเวลาที่ต้องใช้เพื่อให้ส่วนประกอบทำงานได้ถูกต้อง - จำนวนการผลิตของคุณอยู่ที่ร้อยต่ำและคุณเพิ่ม $ 2 ต่อชิ้น นั่นคือ "การสูญเสีย" มีค่ามากกว่าเวลา (หรือของนักพัฒนา) หรือไม่? ชิปที่มีเอกสารที่ดีอาจเป็นตัวเลือกที่ดีกว่าแม้ว่าจะมีราคาสูงกว่าก็ตาม

CH340

ใช่มันเป็นความคิดที่แย่จริงๆอย่างน้อยถ้าคุณต้องการ Plug-And-Play สำหรับฉันใน Win 8.1 ฉันต้องติดตั้งไดรเวอร์ ( CH340SER.exe) ด้วยตนเองซึ่งฉันต้องดาวน์โหลดจากเว็บไซต์ของผู้ผลิต (จีน) ซึ่งมี (ในเวลานั้น) ไม่มีการแปลภาษาอังกฤษ

มันถูกโฮสต์ในประเทศจีนซึ่งอาจเป็นปัญหาสำหรับบุคคลที่มีความปลอดภัยและผู้ที่ผูกพันตามกฎระเบียบขององค์กรและ / หรือการเมือง นอกจากนี้ยังได้รับการจัดอันดับให้เป็นผลการค้นหาโดยเว็บไซต์ดาวน์โหลดไดรเวอร์ "ฟรี" ที่น่าสงสัยมากมาย

ถ้านี่เป็นอุปกรณ์ที่จริงจัง (ตรงข้ามกับ "แค่" Arduino) นั่นคือการยกคิ้วของฉันขึ้นไปบนเพดาน การติดตั้งด้วยตนเองอาจน่ารำคาญมากหากลูกค้าของคุณไม่มีอุปกรณ์เฉพาะสำหรับการกะพริบ

มิฉะนั้นชิปนี้ทำงานตามที่คาดไว้

CP2102

ไม่มากที่จะพูดเกี่ยวกับการทำงานออกจากกล่องและไม่ได้นำปัญหาใด ๆ อาจเป็นทางเลือกของฉันสำหรับการออกแบบโดยเฉลี่ย

FTDI

ฉันมีอันนี้อยู่บนบอร์ดแปลง USB-Serial แบบสแตนด์อโลนและทำงานได้ดี อย่างที่คุณเขียนมันค่อนข้างแพง แต่ฉันเชื่อว่ามันอาจเป็นทางเลือกที่ดีกว่าในสภาพแวดล้อมที่ขรุขระ (เช่นผู้ติดต่อที่สึกกร่อนบนตัวเชื่อมต่อหรือ EMI) อาจให้ความรู้สึกอบอุ่นเป็นฝอยเพราะคุณสนับสนุนนักพัฒนาดั้งเดิม

ความคิดอื่น ๆ

ผู้ให้บริการอินเทอร์เน็ต

ตามคำตอบของ @Chetan Bhargava ตัวเลือกจะมีตัวเชื่อมต่อสำหรับ SPI แล้วใช้ตัวแปลง USB-Serial แบบสแตนด์อโลน

นอกจากนี้ยังกำหนดให้คุณต้องเชื่อมต่อตัวเชื่อมต่อที่เชื่อถือได้และปลอดภัยสำหรับ ISP เห็นได้ชัดว่าคุณสามารถใช้หัวหมุดปักราคาถูกได้ที่นี่ แต่ถ้าคุณต้องการทำถูกต้อง (และ / หรือไม่ไว้วางใจลูกค้าของคุณพอ ) ตัวเชื่อมต่อนี้อาจมีราคาแพงกว่าชิปเพิ่มเติมและตัวเชื่อมต่อ USB หุ้น การเชื่อมต่อแบบอนุกรมนั้นยากที่จะทำการดีบักหากไม่ทำงานซึ่งตรงข้ามกับ USB ที่ลูกค้าจะได้รับแจ้งอย่างน้อยว่าอุปกรณ์ USB นั้นไม่ทำงาน

หากคุณรวมตัวแปลงแบบสแตนด์อโลนกับบอร์ดของคุณคุณจะต้องจ่ายราคาสำหรับบอร์ดแปลงด้วย ฉันคิดว่านี่จะไม่ถูกกว่าการรวมชิป วิธีนี้สามารถใช้งานได้หากลูกค้าแต่ละรายมีบอร์ดของคุณจำนวนมากดังนั้นตัวแปลงสามารถนำกลับมาใช้ใหม่ได้หรือถ้าคุณเพียงแค่ผลักค่าใช้จ่ายในการรับโปรแกรมเมอร์ไปยังด้านลูกค้า

ถ้าตัวเลือกนี้มีความเป็นไปได้ ณ จุดนี้ยังมี AVRISP ของ Atmel ซึ่งเป็นตัวเลือกที่ดีที่นี่แทนที่จะเป็น USB-to-Serial ธรรมดาแม้ว่าจะล้าสมัยไปเล็กน้อย ฉันคิดว่ามันปะปนอยู่ที่ประมาณ 100 หรือ 200 kbps ที่ตัวแปลง USB-Serial ที่ทันสมัยเข้าสู่ช่วงเมกะบิต แต่มันมีความแข็งแกร่งมากในเรื่องการใช้งาน (mis-)

อีกตัวเลือกที่ดีอาจเป็นตัวเชื่อมต่อ TC2030 มันต้องการเพียงแผ่นอิเล็กโทรดบน PCB เพื่อทำงานด้วย แต่ต้องใช้ความเชี่ยวชาญบางอย่าง (คุณต้องถือไว้ตรงจุดจนกว่าการเขียนโปรแกรมจะเสร็จสิ้น)

อินเตอร์เฟสการสื่อสาร

ไมโครคอนโทรลเลอร์ที่ทันสมัยยังมาพร้อมกับอินเทอร์เฟซการสื่อสารอื่น ๆ จำนวนมาก (Ethernet, WiFi, Bluetooth) และสามารถใช้แฟลชเหล่านี้ได้ ตัวอย่างเช่นESP32ซึ่งมีราคาประมาณ 6 USD และเป็น SoC ที่มีส่วนประกอบทั้งหมดที่จำเป็นสำหรับการเชื่อมต่อ wifi นอกจากนี้มันยังเข้ากันได้กับ Arduino (คุณสามารถใช้ IDE) และมีชุดตัวอย่างที่ละเอียดมากรวมถึง WiFi OTA bootloader คุณจะต้องมี ISP สำหรับการปรับใช้ bootloader ครั้งแรกเท่านั้น

ถ้าหากเป็นไปตามที่คำถามของคุณ - โครงการของคุณส่วนใหญ่แล้วเสร็จนี่อาจไม่ใช่ตัวเลือกอีกต่อไป


-2

เพื่อให้ผลิตภัณฑ์ของคุณเป็นป้อนคำอธิบายรูปภาพที่นี่สายที่ตั้งโปรแกรมได้ / สายแฟลชคือการใช้หมุดส่วนหัวทั่วไปออก Arduino pinout นั้นค่อนข้างธรรมดา ไม่จำเป็นต้องฝัง USB เข้ากับตัวแปลงอนุกรมหากการอัปเดตของคุณไม่ใช่รายสัปดาห์ สำหรับการติดตั้งภาคสนามฉันจะเพิ่มต้นทุนของอุปกรณ์การเขียนโปรแกรมภาคสนามมากกว่าความสามารถของโปรแกรมลงในฟิลด์


ไม่จำเป็นต้องฝังตัวแปลงอนุกรมหากคุณต้องการแฟลชบ่อยขึ้น

ตัวแปลง USB เป็นอนุกรม (และราคาต่ำ) ทั่วไปบางตัวจะใช้ชุดชิปต่อไปนี้

FTDI - ไดรเวอร์ Windows และ Linux แต่ไดรเวอร์สามารถ
ยึดสายเคเบิลของคุณได้ - หลีกเลี่ยงCH340 - ไดรเวอร์ Windows และ Linux
PL2303 - ไดรเวอร์Windows และ Linux

ไดรเวอร์นั้นใช้งานได้ง่ายสำหรับแพลตฟอร์ม Windows และ Linux ฉันไม่สามารถพูดอะไรได้มากเกี่ยวกับแอปเปิ้ล

ฉันควรปล่อยให้ USB-Serial ออกจากโครงการของฉันหากความน่าจะเป็นที่จะเขียนโปรแกรมในฟิลด์คือ <50%

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.