一般来说,如果你让你的客户能够刷你的设备,你希望他们不要把它变砖。
因此,提供的主要优先级是与主机设备的稳健且安全的连接。以我的经验,所有芯片在我假设您所针对的城市和实验室环境中都能很好地工作。
还要考虑让组件正常工作所需的时间——你的生产数量只有几百个,每个加起来 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 来进行引导加载程序的初始部署。
如果 - 正如您的问题中所说的那样 - 您的项目大部分已完成,那么这可能不再是一个选择。