调CAN总线的场合,十有八九还得再挂一个串口——读调试日志、接传感器、拉一路RS485,都是常事。于是调试电脑的USB口总是不够用,HUB上挂着CAN盒子和串口线两根线,换个工位就得重新认一遍设备。
CH9433是沁恒针对这个场景的方案:单芯片从USB扩展出一路CAN控制器和一组全功能9线异步串口,两者可以同时工作,另外还有最多10路GPIO。CAN的关键规格在概况表里一眼能看完,这篇文章主要把串口、软件驱动、硬件设计和市面上的方案对比拆开讲。
一、芯片概况
CH9433是一颗固定功能的USB转接芯片,不需要用户写固件,寄存器全部通过USB由驱动接口读写。QFN32封装,塑体只有4×4mm。
| 维度 | 规格 |
|---|---|
| USB | USB设备接口(UD+/UD-),寄存器配置和功能数据都走这一路 |
| CAN | 兼容CAN 2.0A/2.0B,最高1Mbps,标准帧/扩展帧,数据帧/远程帧 |
| 串口 | 一组全双工9线异步串口,最高6Mbps,收发独立FIFO |
| RS485 | TNOW半双工收发自动切换引脚 |
| GPIO | 最多10路,与MODEM联络信号、LED引脚复用,用满全功能串口+LED时只剩1路(见第三节) |
| 时钟 | 外接16MHz晶体(无内置晶振) |
| 供电 | 额定3.3V(3.0~3.6V),工作电流典型8.6mA |
| 工作温度 | -40℃ ~ 85℃(工业级) |
| ESD | HBM 4KV |
| 封装 | QFN32(4×4mm,0.4mm引脚节距),订货型号CH9433F |
两个要注意的点:一是CAN_TX/CAN_RX是逻辑电平,芯片内部是CAN协议控制器,上总线还需要外接一颗CAN收发器;二是没有内置晶振,16MHz晶体省不掉。
二、串口部分:不是附赠的残血口
很多二合一芯片的第二功能是凑数的,CH9433这组串口不是。
- 9线全功能:TXD/RXD之外,CTS、RTS、DSR、DTR、DCD、RI六条MODEM联络信号齐全,由上位机应用程序控制
- 速率高:波特率最高6Mbps,常用档位从2400到6M都有
- 硬件自动流控:CTS/RTS可以开自动模式。CTS无效就暂停发送;接收缓冲区超过触发阈值自动抬起RTS让对方停发,低于阈值再放下。接线就两根交叉:本端RTS接对端CTS,本端CTS接对端RTS,高波特率持续传输不靠软件盯着缓冲区
- TNOW引脚:接RS485收发器的DE/RE,发送时自动切换方向,省掉软件控制方向的时序问题
6Mbps这个数字顺带说一句:它与常见的CH343(6Mbps)同档,远高于CH340的2Mbps。接高波特率的调试口或者4G模组透传,这个余量是实用的。
三、GPIO与LED
GPIO最多10路,但需注意:
这10路和串口联络信号、LED指示是同一批引脚——CTS/GPIO0、RTS/GPIO1、ACT/GPIO3、RXS/GPIO4、TXS/GPIO5、RI/GPIO6、DSR/GPIO7、DTR/GPIO8、DCD/GPIO9全是复用脚,只有GPIO2独占。
所以GPIO数量和串口用法此消彼长:3线串口(只用TXD/RXD)加不要LED时,联络信号和LED引脚全部让位,凑满10路;
9线全功能加3个LED全用上时,就只剩GPIO2一路。
GPIO通过USB配置寄存器设方向、读电平。可用于外部控制,但需注意GPIO自身电平最高为3.3V。
LED引脚有三个,均为低电平驱动:TXS/RXS对应串口收发,有数据时按50ms亮、50ms灭的周期闪烁;ACT指示USB状态,USB挂起时输出高电平、LED灭,枚举成功后输出低电平、LED亮。做外壳上的状态灯不用额外占MCU。
四、驱动与软件生态:提供了什么、有什么用、怎么用
官方把两个平台的资料都备齐了,先用一张表看清全貌:
| 平台 | 提供什么 | 装完得到什么 |
|---|---|---|
| Windows | CH343SER厂商驱动(VCP,带微软数字签名)、CH372DRV厂商驱动(CAN驱动,带微软数字签名)、CH9433EVT评估板资料包(上位机Demo例程、硬件原理图) | 串口直接变COM口;CAN按Demo例程调DLL接口收发 |
| Linux | 两个开源内核驱动:ch9433_linux(CAN)、ch343ser_linux(串口) | CAN注册成标准SocketCAN接口can0;串口出tty设备 |
Windows怎么用:串口装CH343SER.EXE,CAN装CH372DRV.EXE;插上设备后设备管理器里多出COM口,任何串口软件打开即用,Windows 11到XP全版本覆盖。CAN走DLL接口收发,DLL库和例程在CH372DRV.ZIP里,CH9433EVT.ZIP评估板资料包的上位机Demo例程演示了完整的初始化和收发流程,照着改成自己的工具即可。
Linux怎么用:ch9433_linux CAN驱动是开源的,make编译、insmod加载,插上设备就注册出can0;ip link set can0 type can bitrate 1000000配上波特率,candump、cansend直接收发,can-utils、python-can这套生态全部兼容。驱动还提供了一个/dev/ch9433_iodevN字符设备,用来做设备级的控制传输。
如果CH9433板载进工控机或嵌入式板卡,Github仓库里给了把驱动编进内核树的完整步骤,驱动随固件一起出货,现场上电就是can0。串口部分装ch343ser_linux驱动,之后和普通tty串口用法一致。
五、硬件设计要点
- CAN收发器必配:CAN_TX/CAN_RX是3.3V逻辑电平,接外部收发器(TJA1051、SIT1051这类)上总线,工业现场建议选带隔离的收发方案
- 晶振:使用16MHz无源晶体
- 电源:单3.3V供电,VCC外接一般为10uF+0.1uF退耦电容
- NC脚:相关NC脚直接NC处理
- 电平:芯片是3.3V供电方案,如果连接5V记得做电平转换
- ESD:HBM 4KV,USB口和CAN口在面板上裸露的话,建议加ESD器件
- 参考设计如下:
六、市面单一芯片方案对比
给电脑或嵌入式主机扩CAN,目前主要有四种方案,CH9433属于其中"专用桥接芯片"这一路。四个方案逐一看:
① 专用桥接芯片:CH9433(USB→CAN+串口)
- 构成:1颗芯片 + CAN收发器
- CAN能力:经典CAN 2.0B,1Mbps
- 软件开发量:几乎为零,官方驱动 + Demo例程
- 特点:免固件开发;附带9线串口和GPIO;Windows驱动成熟
② 通用MCU烧固件:STM32F042/F072 + candleLight(CANable开源方案)
- 构成:1颗芯片 + CAN收发器
- CAN能力:经典CAN 2.0B
- 软件开发量:烧现成固件即可,改功能要自己写代码
- 特点:Linux下走gs_usb/SocketCAN免驱(需内核≥3.18且编了gs_usb模块,桌面发行版都满足,裁剪内核要自己补);Windows走WinUSB
③ MCU + 外置CAN控制器:任意USB MCU + MCP2515 / MCP2518FD(SPI)
- 构成:2颗芯片(MCU + CAN控制器)+ CAN收发器
- CAN能力:MCP2515经典CAN;MCP2518FD支持CAN FD
- 软件开发量:固件全自己写
- 特点:最灵活,MCP2518FD能上CAN FD 5Mbps;但BOM两颗起,开发周期最长
④ CAN FD高性能MCU:STM32G4等内置FD CAN的MCU
- 构成:1颗芯片 + CAN收发器
- CAN能力:CAN FD,数据段5Mbps
- 软件开发量:固件全自己写
- 特点:性能上限最高,但要养一支会写固件的团队
几个参考判断:
- 不想写固件、想快速落地:专用桥接芯片比较省事。CH9433配合官方驱动和Demo例程,装好驱动插上就能收发,可见即可用;另外还附带一个6Mbps全功能串口。做USBCAN调试器、产线测试工装这类产品,BOM和开发周期都比较短。
- 要Linux SocketCAN生态:两条路都通。CH9433官方驱动注册为标准SocketCAN接口,不过是out-of-tree模块,要自己编译加载。
- 成本:成品USBCAN适配器(PCAN、Kvaser、ZLG等)价格通常在几百到几千元。用CH9433自己做,芯片加外围的BOM成本会低不少。
七、应用场景
- USBCAN调试适配器:电力、工控现场工程师的标准装备,CH9433一颗芯片就是完整方案
- 电池管理(BMS):电池包CAN通讯测试、产线老化监测,手册点名应用方向
- 充电桩 / 储能设备:CAN监测 + 串口调试二合一,工装和运维工具都能用
- 工业自动化:PLC、伺服、变频器的CAN网络接入上位机;串口侧顺带接RS485传感器
- 多协议采集网关:CAN设备数据 + 串口设备数据从一个USB口进工控机
- 工控机 / 嵌入式板卡板载:CH9433直接焊上主板,设备出厂自带CAN和9线串口,Linux驱动编进内核,省掉外挂适配器,现场可靠性也高一档
八、小结
| 维度 | 结论 |
|---|---|
| 定位 | USB转CAN + 9线串口二合一桥接芯片,免固件开发 |
| CAN | 2.0A/B,1Mbps,3发送邮箱 + 100级接收FIFO,SOF时间戳 |
| 串口 | 9线全功能,最高6Mbps,硬件流控,TNOW支持RS485 |
| 扩展 | 最多10路GPIO(与串口联络/LED引脚复用),3个状态LED引脚 |
| 边界 | 经典CAN不支持FD;CAN控制器需外接收发器; |
| 电气 | 3.3V,典型工作电流8.6mA,-40~85℃工业级,ESD HBM 4KV |
| 封装 | QFN32 4×4mm(CH9433F) |
CH9433的思路很直白:把CAN和串口做成一颗固定功能芯片,装上驱动就能用,可见即可用。对做调试工具和产线工装的人来说,自己用一颗芯片做适配器,比买成品盒子灵活,成本也可控。
参考
- 技术手册:CH9433DS1.PDF
- 评估板资料:CH9433EVT.ZIP(含上位机Demo例程与硬件原理图)
- 驱动:
- Windows(串口):CH343SER.EXE
- Windows(CAN):CH372DRV.EXE(DLL库及例程:CH372DRV.ZIP)
- Linux(串口):ch343ser_linux
- Linux(CAN,SocketCAN):ch9433_linux
- CH9433产品页:CH9433
- 同门SPI扩展方案:CH9431(SPI转CAN)、CH9434(SPI转四串口,D型含一路CAN)