在商业产品上使用 CH340G 是一个可怕的想法吗?

电器工程 USB UART 界面 ftdi
2022-02-02 07:02:27

我正在开发一种小众产品,该产品将以相当低的产量(低数百)生产。我正在使用 Atmega uC,其中一项要求是用户能够现场闪存。我的计划是使用带有 USB 转 UART IC 的 Arduino 引导加载程序(我知道这很懒,但在这个体积上它可能是最好的选择)。

有很多选择。我的原型板现在使用的是 FTDI FT232RL,但这对于生产来说太贵了,因为整个板的价格点在 20 美元左右。

我考虑过的IC包括:

  • CH340G
    • 最便宜的选择,但 OSX 签名驱动程序的状态如何?我无法确定这是否会完全即插即用。有谁知道这是什么状态?
  • CP2102
    • 强大,不用担心签名驱动程序等。但它更贵。
  • MCP2200
    • 也很强大,不用担心签名的驱动程序。我如何选择它与 CP2102?它们的价格几乎相同。

除了签名的驱动程序之外,上述选择是否还有其他“陷阱”?我不想强迫用户安装未签名的驱动程序/在重新刷写过程中添加一个潜在的痛苦过程,但我也不想仅仅为了用户刷写而在 BOM 成本中增加 2 美元。

任何一般性指导/建议都会很有用。谢谢。

3个回答

最简单的选择,也是我在这里推荐的选择,是使用原生支持 USB 并且可以使用 USB DFU(设备固件更新)引导加载程序进行编程的微控制器。这种微控制器的一个例子是 ATmega32U4,就像在 Arduino Leonardo 上看到的那样。另一个是 ST STM32F103。即使这些微控制器比您原本使用的微控制器贵一点,成本的增加也可能低于分立 USB UART 接口的成本。使用单个部件还可以减少设备的整体尺寸和功耗。

有一个 Apple 提供的 CH340 驱动程序,包括最新版本的 MacOS。“AppleUSBCHCOM”。

一般来说,如果你让你的客户能够刷你的设备,你希望他们不要把它变砖。

因此,提供的主要优先级是与主机设备的稳健且安全的连接。以我的经验,所有芯片在我假设您所针对的城市和实验室环境中都能很好地工作。

还要考虑让组件正常工作所需的时间——你的生产数量只有几百个,每个加起来 2 美元。这种“损失”是否比您(或开发人员)的时间更有价值?一个有据可查的芯片实际上可能是一个更好的选择,即使它的成本更高。

CH340

是的,这确实是个坏主意,至少如果您想要即插即用的话。对于我在 Win 8.1 上的情况,我需要手动安装驱动程序(CH340SER.exe),我必须从(当时)没有英文翻译的(中国)制造商的网站下载该驱动程序。

它在中国举办,对于有安全意识的个人以及受组织和/或政治规则约束的人来说,这可能是一个问题。此外,许多可疑的“免费”驱动程序下载网站的搜索结果也超过了它。

如果这是任何严肃的设备(与“只是”一个 Arduino 相对),那我的眉毛就会抬到天花板上。如果您的客户没有专门的刷机设备,手动安装也可能很烦人。

否则,该芯片按预期工作。

CP2102

没什么可说的,开箱即用,没有提出任何问题。可能是我对普通设计的选择。

FTDI

我在一个独立的 USB 串行转换器板上有这个,它运行良好。正如您所写,它相当昂贵,但我相信它在恶劣的环境中可能是更好的选择(例如连接器上的腐蚀触点,还有 EMI)。可能会给你一种温暖模糊的感觉,因为你支持原始开发者。

其他想法

互联网服务提供商

根据@Chetan Bhargava 的回答,一个选项是为 SPI 提供一个连接器,然后使用独立的 USB 串行转换器。

这还要求您提供一个可靠且安全使用的连接器供 ISP 连接。显然,您可以在这里使用排针便宜,但如果您想做得对(和/或不足够信任您的客户),那么此连接器可能比附加芯片和库存 USB 连接器更昂贵。如果串行连接不工作,则非常难以调试,而 USB 则相反,客户至少会收到 USB 设备不工作的通知。

如果您将独立转换器与您的电路板捆绑在一起,您也必须为转换器板支付价格。我认为这不会比集成芯片便宜。如果每个客户都拥有您的许多板,这可能会起作用,因此转换器可以重复使用,或者如果您可以将获取程序员的成本推到客户方面。

如果这个选项是可能的,那么在这一点上,还有 Atmel 自己的 AVRISP,这是一个不错的选择,而不是普通的 USB-to-Serial,虽然有点过时了。我认为它的上限约为 100 或 200 kbps,现代 USB 串行转换器进入兆位范围。但它在(误用)使用方面非常稳健。

另一个不错的选择可能是 TC2030 连接器。它只需要 PCB 上的焊盘即可使用,但需要一些专业知识(您必须在现场握住它直到编程完成)。

通讯接口

现代微控制器还带有许多其他通信接口(以太网、WiFi、蓝牙),通常可以使用这些接口进行闪存。一个例子是ESP32,它的成本约为 6 美元,是一个 SoC,包含 wifi 连接所需的所有组件。此外,它与 Arduino 兼容(您甚至可以使用 IDE)并且有一个非常完整的示例集,包括 WiFi OTA 引导加载程序。您只需要一个 ISP 来进行引导加载程序的初始部署。

如果 - 正如您的问题中所说的那样 - 您的项目大部分已完成,那么这可能不再是一个选择。