有手就行!我自制了一个高速USB转4路隔离RS-485的模块。
最近做一个项目要用到USB转多路RS-485接口进行调试,在网上找了一圈,发现市面上现有的产品,缺点还是太明显了,1、USB口大多都是Type-B连接器,2、大多采用塑料外壳,看着不够高级,3、有的不带隔离功能,这样很容易把电脑USB口给干废了,4、RS-485通信的波特率太低,5、上面几个坑都避开的产品,又只转出了一路485。符合我需求的产品竟然没找到,于是我打算自己做一个产品级的高速USB转多路RS-485接口的设备。
其实USB转RS-485的本质是USB转串口,然后串口挂个RS-485收发器就可以实现。所以现在需要找一个合适的USB转多路串口的芯片,一开始想到的是FT4232,这个可以实现USB转4通道12Mbps的串口。

可是当看这个芯片在立创商城的价格之后,我直呼告辞。我是想做一个产品,但是我不想做一个我自己都用不起的产品啊。
当然,还有另外的问题,就是这个FT4232的IO口电平只支持3.3V。这个如果用来调试其他电平的外设会很麻烦,还需要加电平转换电路。
之前用老牌USB厂家沁恒的CH343P自制了一个USB转串口TTL模块,最高波特率能到6Mbps(附链接)粉丝反响极佳,于是目光自然转向了沁恒的高速USB转4串口芯片CH9114,这个系列的芯片支持480Mbps的高速USB通信,可以扩展出4路15Mbps的串口,支持1.2V、1.8V、2.5V、3.3V的IO口电平,它在电脑上的驱动支持VCP和CDC两种。
这里简单科普一下VCP和CDC二者的区别:CDC驱动是部分操作系统的内置USB串口驱动,Windows10及以上版本的系统内置,更早的版本需要手动安装,Linux和Android视具体的系统而定。而VCP驱动是厂商提供的专用USB虚拟串口驱动程序,工作时在Windows系统的“端口(COM和LPT)”一栏会生成COM口,Linux/Android/macOS系统在/dev目录下会生成TTY设备节点。
VCP驱动的特点是支持高速率通信及硬件流控、支持GPIO扩展、仿真标准串口、计算机端串口应用程序完全兼容、驱动只需要安装一次且可联网自动安装、可配合应用层动态库使用,提供USB热拔插、串口号检测、GPIO等扩展功能。所以建议优先选择使用VCP驱动。
另外可能有人要问了,485模块用得着这么高的波特率吗?答案是,有这个需要的,比如多摩川编码器采用的就是波特率固定为2.5MHz或者5MHz的基于RS-485的专用串口通讯协议。(本文末尾附波特率测试环节)

比较爽的是,CH9114有好几种封装形式,其中CH9114L兼容FT4232HL,CH9114W封装兼容FT4232H-56Q,除了这两种封装,还有一个CH9114F是QFN32封装,尺寸非常小,很适合我用来做这个高速USB转多路RS-485接口设备。

最最最关键的是,在立创商城看了一下这个芯片的价格比前面选的FT4232合理多了,十几块钱,是我能用得起的。
芯片选定了,就可以画原理图了。

这个芯片的原理图比较简单,总共加上四个电容就可以了。另外,外挂485收发器时,可以把RI这个信号直接用来做收发器的收发切换,按照上图中绿框中所示,给这个引脚加个下拉电阻就行。

CH9114的手册中提到,如果芯片工作环境相对比较理想,且串口波特率误差能满足使用需求,就可以不焊接外部晶振,只需要将XI引脚连接GND就可以切换内部时钟。但是我要做高性能的收发器,所以不必省钱。于是在PCB上放了扬兴的XL7KI-111-24M晶振,它采用2016超小封装,放在板子上不占面积,而且25℃工况精度为±10ppm,这样整个收发器的波特率精度就会很高。

这个设备用USB2.0通信,使用Type-C接口不需要考虑数据线正反插识别的问题,所以用Type-C口是最爽的。但是要注意,给连接器的两个CC引脚接5.1K的下拉电阻。另外,USB信号线上加一个ESD保护芯片,VBUS电源输入要加个自恢复保险丝。虽然沁恒也有给USB芯片配套的ESD保护芯片CH412,但那个芯片有四路,我只用两路,所以选了个ST的。

这是RS-485隔离收发器的电路。这里采用的隔离收发器是TI的ISO3088DWR,这个收发器符合TIA/EIA RS-485的要求,速率20Mbps,1/8单位负载让总线上可以挂256个这样的节点。一个芯片实现了RS-485收发器的功能+20Mbps速率信号的隔离,用起来还是很爽的。

原理图搞定之后,PCB设计就比较简单了,所有器件放在顶层就可以了。隔离电源和485隔离收发器放在同一列,这样方便做隔离。布局布线完成之后进行投板就行。
板子为啥设计成这样子呢?这就有点像航天发动机的尺寸设计最终要追溯到古代的两匹马的屁股距离是一个道理。首先,把4个3.81的凤凰端子放在板子右侧之后,这四个凤凰端子的距离基本确定了,于是板子的大概宽度就有了。根据器件的简单布局,可以确定出板子的大概长度。再根据这个大概的宽度和长度,选择一款合适的铝合金型材,作为他的外壳。

这是选择的外壳的横截面,它上下可以分离,这样方便安装焊接了直插LED的电路板。安装电路板的槽,宽度确定是56.6mm,这样板子可以做56mm。厚度2mm上差+0.1左右,于是我选择做2mm厚的PCB,在安装处不带铜皮和绿油的情况下是2mm-0.1mm左右,安装起来会比较舒服。
这里不得不吐槽一句,2mm的板子打样批量都比1.6mm的板子贵了好多啊,但是好处是,也结实了好多,不怕频繁拔插端子导致板子焊接点不良。同步设计好PCB和外壳之后,就等着它们到货了。

拿到的PCB很漂亮,不知道是谁设计出这么漂亮的PCB板。

上好锡膏,麻利的摆好了物料,丢进炉子焊接好之后,再手动焊接一下凤凰端子、隔离电源,LED指示灯,这个板子就成了。

准备好电路板,铝合金型材外壳,螺丝,就可以开始安装了。

再把面板贴上去,这样一个满满工业风的,速度高达15Mbps的USB转4路隔离RS-485模块就做好了。

这个挡板上Type-C口开得很完美,看着舒服感拉满了。

我给后壳上开了两个螺丝孔,这样可以安装一个标准导轨卡扣,可以方便地安装在35mm导轨上了。
性能体验:

插上电脑直接显示出了四路串口,分别用ABCD区分。这与我面板上的CH-A,CH-B,CH-C,CH-D一一对应。

把模块的CH-A和CH-C用端子线连接起来,然后打开两个串口上位机,其中一个打开CH-A对应的串口,另一个打开CH-C对应的串口,两个串口的波特率都手动输入15000000,表示15Mbps。然后使用CH-A定时50ms发送一次数据,发送内容为“这是一次高速485通信测试!”,共计发送13988个字节,接收端也显示接收到13988个字节,无丢帧。

做一个传输文件的测试,其中左边的窗口打开CH-A通道,右边的串口打开CH-C通道,波特率都设置为15Mbps,左边窗口作为发送端,发送一个338MB的视频文件,右边窗口接收文件,开始发送后,通信速度稳定在1427KB/s的速度,传输结束后显示用时252s,传输完成后,在右边的窗口中,保存接收的文件为aaa.mp4,然后打开这个视频可正常播放,说明没有任何误码、错码的问题。使用RS485传输数据,能达到这个速度很赞了。

另外这个COMTransmit上位机是支持远程操作串口或者把串口数据中继给远端的功能。我顺便测试了一下这个远程串口功能。在位于西安的A电脑上打开COMTransmit上位机,选中远程串口的功能之后,会弹出一个IoCHub远程串口的窗口,然后点击启用远程连接服务,把自己的本地识别码复制发送给位于武汉的B电脑。

B电脑远程连接A电脑之后,打开了A电脑上连接的485串口CH-A通道,然后100ms发送一次数据。

A电脑上可以显示远程连接的信息,在485模块上把CH-A和CH-C用双绞线连接之后,使用另一个串口工具打开CH-C可以接收到数据,说明远程操作成功,那这意味着什么呢,意味着有了这个功能之后,有时候原本需要出差的一些调试工作,现在远程串口直接搞定。

根据这个手册里的描述,CH9114内置EEPROM,可配置芯片VID、PID、最大电流值、厂商和产品信息字符串等参数。这样的话,后面如果大批量出货,完全可以通过写入内置EEPROM来让它插入电脑后显示属于自己的产品识别码和厂商信息等等,咨询过芯片厂家,有信息修改工具配套,软硬件全方面支持,还是挺不错的。

这个产品,我已经把它上传到我的淘宝店进行预售,大家可以在淘宝搜索“小马哥CH9114F方案USB转四通道铝合金外壳RS-485高速隔离模块预售”找到淘宝页面参与预售,15天内可以发货。预售的价格暂定168元,预售结束后正常售价目前暂定348,产品清单里除了这个模块本身,还包含了一根AC硅胶数据线、四个凤凰端子、以及一个配套的轨道卡扣。当然,在这个文章中,我也把关键的原理图展示给大家了,PCB设计和外壳选型也都详细的说了,大家感兴趣的也可以自己制作,欢迎共同交流提高。

浙公网安备 33010602011771号