CH340串口芯片导致CPU占用高与蓝屏现象排查
2021-12-28 11:42:21 Author: www.chenxublog.com(查看原文) 阅读量:11 收藏

起因

最近在为iot power编写客户端,波特率是921600,上报的数据量差不多有40KB/s。

遇到了两件没法解决的事:

cpu占用很高

CPU占用高

如图,要说原因的话,我一开始以为是刷图占用的cpu就这么高,不过原因并不是这个,接着看吧

蓝屏

蓝屏

这个问题就严重了,因为之前有一次蓝屏,导致vs工程代码全变成了0x00,害我重写了一遍,自从串口数据变多后,那一天电脑蓝屏了三次

测试

因为板子上用的是CH340N(立创买的,不可能是假货),所以第一怀疑对象就是它,所以我把串口三根线引了出来,外接了一块带CP2102的板子测试:

外接CP2102

测试结果很明显,就是CH340N导致的,看看CPU占用就懂了

CPU占用正常

低了将近一半

其他人遇到过吗?

搜了搜,还真有人发现过这问题:CH340的驱动CPU占用率比竞品高很多,但是这篇帖子最后也没有得出结论,看沁恒官方的回复,全是邮件私联,完全没有公开解释的样子

那原因是啥呢?

对比测试

接下来又测试了FT232,发现会严重粘包,就知道事情不是这么简单了。

打开设备管理器的设置界面,原来相差这么大:

CH340N和CP2102的设置界面都是很简单的

而FT232。。。好家伙不愧是最贵的芯片

下面是测试结果:

芯片占用接收缓冲延迟计时器
CH34050-60%不能改不能改
CH34350%左右不能改不能改
CP210230%左右不能改不能改
FT23250%左右40961ms
FT23220-30%102410ms

为啥蓝屏?

不知道,我也搞不明白,官网最新的驱动装上也会蓝

结论

低速用用340没啥问题,但如果你要无人看守/高速传输。。。那就要慎重考虑了


文章来源: https://www.chenxublog.com/2021/12/28/ch340-cpu-high-crash-bluescreen.html
如有侵权请联系:admin#unsafe.sh