【关于USB转485串口的一点认识/疑问】

一、前言

手里有两款USB转485串口,不同品牌,不同芯片,一个是UT-890购于JD芯片为FT232+SP213,一个是信泰微购于TB芯片为CH340,二者价格差异也较大,前者远高于后者
以下为测试环境:
串口设置:波特率115200,数据位8,停止位1,无校验,无流控
数据情况:整帧数据长度为9字节,地址(1字节)+指令(1字节)+数据长度(1字节)+数据(4字节)+crc(2字节)
传输频率:单个设备主动不停发送数据,频率约10ms
接收线程:sleep 3ms,相当于隔3ms读取一次数据

二、现象

信泰微:
一开始用的就是该USB转485没有其他参照所以并未意识到该问题,将串口读到数据打印出来,下面是三分钟数据内的一部分,可以看到基本收到的是整帧数据,偶尔会收到多倍的整帧数据,但可以明显看出每次读到的缓冲区内的数据是完整的
在这里插入图片描述
应该是由于驱动的区别该USB转485的高级设置如下
在这里插入图片描述

UT-890:
这里涉及了串口转485的一个小小的配置问题,我的电脑-管理-设备管理器-端口-右键属性-端口设置-高级
在这里插入图片描述
本来延时计时器默认参数为16ms,采集得到数据总是大于9字节网上搜索一番发现修改此处配置可提高串口响应速度(大概相当于提升底层驱动放到缓冲区的频率?个人猜测

修改延时计时器为1ms后,大部分从缓冲区里读到的数据小于或等于9字节,偶尔也有长度远超整帧数据(不一定为整倍数),但总之缓冲区中得到的数据非整帧长度是非常的多
在这里插入图片描述

三、分析

首先研究了一下用的串口类的读数据超时是Readfile立即返回不会有延时,也就是缓冲区有什么就读什么;
同时比较计算过二者相同时间读到的数据条数并未发现有数据丢失情况,也就是应该不存在芯片缓存区过小
也换过设备和另一根USB转485得到结果相同
然后询问USB转485厂家无果,只推荐字节流解析,但未给出原因
和其他人交流后也感觉原因可能是在二者底层驱动或者芯片逻辑上有区别

四、结论

个人觉得这样可以下结论这个问题就是出在两个USB转串口的底层数据传输机制上了,或者应该可以说跟二者的驱动关系很大
这是个很有趣的现象,特此记录下来看以后有没有更深入或者正确的认识,也分享出来看有没有大神可以解惑,感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值