本人遇到的蓝屏问题经官方处理已被修复,可前往沁恒官网下载最新驱动,手动更新驱动,即可避免蓝屏
坑,全是坑
起因
最近在为iot power编写客户端,波特率是921600,上报的数据量差不多有40KB/s。
遇到了两件没法解决的事:
cpu占用很高
如图,要说原因的话,我一开始以为是刷图占用的cpu就这么高,不过原因并不是这个,接着看吧
蓝屏
这个问题就严重了,因为之前有一次蓝屏,导致vs工程代码全变成了0x00,害我重写了一遍,自从串口数据变多后,那一天电脑蓝屏了三次
测试
因为板子上用的是CH340N(立创买的,不可能是假货),所以第一怀疑对象就是它,所以我把串口三根线引了出来,外接了一块带CP2102的板子测试:
测试结果很明显,就是CH340N导致的,看看CPU占用就懂了
低了将近一半
其他人遇到过吗?
搜了搜,还真有人发现过这问题:CH340的驱动CPU占用率比竞品高很多,但是这篇帖子最后也没有得出结论,看沁恒官方的回复,全是邮件私联,完全没有公开解释的样子
那原因是啥呢?
对比测试
接下来又测试了FT232,发现会严重粘包,就知道事情不是这么简单了。
打开设备管理器的设置界面,原来相差这么大:
CH340N和CP2102的设置界面都是很简单的
而FT232。。。好家伙不愧是最贵的芯片
下面是测试结果:
芯片 | 占用 | 接收缓冲 | 延迟计时器 |
---|---|---|---|
CH340 | 50-60% | 不能改 | 不能改 |
CH343 | 50%左右 | 不能改 | 不能改 |
CP2102 | 30%左右 | 不能改 | 不能改 |
FT232 | 50%左右 | 4096 | 1ms |
FT232 | 20-30% | 1024 | 10ms |
为啥蓝屏?
不知道,我也搞不明白,官网最新的驱动装上也会蓝
结论
低速用用340没啥问题,但如果你要无人看守/高速传输。。。那就要慎重考虑了
转载保留版权:晨旭的博客 » 《CH340串口芯片导致CPU占用高与蓝屏现象排查》如果喜欢可以: 点击右侧上方的邮件订阅,订阅本站
老哥,确认下你的驱动版本是不是官方最新V3.6版本。你的应用和我们很像,还没有发现有蓝屏问题。关于你转发的链接,我们之前也看到了,只有数据量大显示频繁的时候才会导致CPU占用率高。CH340的串口数据返回快,刷新频繁,才会有你这个情况出现。
驱动新的老的都试过,甚至2011年的版本也测试过,结果没有区别,而且蓝屏触发规律基本摸出来了,就是接收数据同时读写硬盘,会大概率蓝屏。
本身就是数据量大的应用场景,沁恒家的芯片测试下来一个都不满足要求,CPU占用全都高得离谱(相对而言)
你有空试下官网这个V3.6:http://www.wch.cn/downloads/CH341SER_EXE.html,我们以前遇到过蓝屏,和沁恒厂家沟通过。用这个版本我怎么折腾也不会蓝屏。这个版本是刚更新不久的,我感觉你用的不是这个版本。
就算不蓝屏,这CPU占用给用户的体验也是烂
然并卵,该蓝还是蓝
怪不得工业场合都用串口服务器,转成tcp。
40K的流量你开921600的波特率,这可真够搞笑的
你再算算😅
佩服,大神级别的操作