logo

CH340E芯片在Linux Ubuntu16.04下高波特率下接收数据丢失

使用CH340E芯片开发了一款工具,波特率用的比较高1500000,在Window上使用没有任何问题。但在Ubuntu16.04上使用,发现接收数据时存在数据丢失的情况。发送端数据是每秒发送2500个21个Byte组成的数据包,安装了官方的驱动也是这样,用Python、C++都重写了串口收发代码,现象还是一样的。同样的Python代码在windows上运行没有问题。数据丢失情况如下:

160            //接收了160个Byte

66cc0011b10103000006660801020a0b0c0d0e0f88    //正常的数据

66cc0011b101030000066666cc0011b10103000006660801020a0b0c0d0e0f88    //不正常的数据 0666后数据丢失

66cc0011b101030000066666cc0011b10103000006660801020a0b0c0d0e0f88    //不正常的数据 0666后数据丢失

66cc0011b101030000066666cc0011b10103000006660801020a0b0c0d0e0f88     //不正常的数据 0666后数据丢失

66cc0011b10103000006660801020a0b0c0d0e0f88  //正常的数据

66cc0011b10103000006660801020a0b0c0d0e0f88  //正常的数据

66

有没有碰到类似问题的,谢谢!


这人很懒,什么都没留下

该问题是usb驱动效率的问题,因为系统自带的340串口驱动读取不够快,导致应用层接收数据丢失,可以尝试使用如下链接的驱动:

ch34x-acm_V1.01.tar.gz


USB转接芯片/PCI&PCIE控制与转接芯片/安卓及Linux技术支持。联系方式:张工 025-52638360/zhangj@wch.cn

谢谢,我试一下。

这人很懒,什么都没留下

您好,这个是驱动吗?解压后是一个1556418582177606的文件,还有乱码。麻烦重新提供一下,谢谢。

这人很懒,什么都没留下

您好,重命名文件后可以了。里面有2个驱动,ch34x-acm和cdc-acm,ch34x-acm编译成功,cdc-acm编译不成功。将ch34x-acm.ko重命名后替换掉 /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch341.ko 下面的老驱动,重启后设备识别为/dev/ttyUSBACM0,应该是加载成功了。但测试现象依旧会出现数据丢失的情况,没有改善。请问是哪里操作不对吗?谢谢。

这人很懒,什么都没留下
只有登录才能回复,可以选择微信和github账号登录