关于ESP8266WIFI转串口的速率问题(含测试数据)

来源:互联网 发布:数据流程图符号含义 编辑:程序博客网 时间:2024/05/01 18:31

最近在测试ESP8266WIFI转串口的速率时发现,设置的波特率到最高,但与理论上计算的传输速度相差甚远。目前仍没有找到准确合理的解释。

测试说明:

ESP8266通过USB TO TTL(芯片为CH340)连接到PC,在PC上用USR-TCP232-Test软件建立TCP Server(UDP也可),ESP8266通过WIFI与PC连接到同一网关的路由,用sscom5.12.1控制ESP8266,发送AT指令,如设置波特率(AT+UART_CUR=9600,8,1,0,0)(数据位8bit,停止位1bit,无校验,无流控),设置透传(AT+CIPMODE=1),建立连接(AT+CIPSTART="TCP","192.168.3.110",8000),开始发送数据(AT+CIPSEND),发送音频文件(大小6640305字节,6.33M,就是一首流行歌的大小,发送音频文件主要是方便查看稳定时的速度,避免文件过小,一下子就发送完了),用360流量防火墙查看下载速度。

各种波特率下的传输速度如下:

波特率为9600时,稳定时下载速度约为0.9KB/S;

波特率为19200时,稳定时下载速度约为1.8~1.9KB/S(平均值取1.85KB/S);

波特率为38400时,稳定时下载速度约为3.8KB/S;

波特率为76800时,稳定时下载速度约为6.2-8.2KB/S(此时下载速度经常变化,7.5KB/S为中间值);

波特率为115200时,稳定时下载速度约为8.5KB/S;

波特率为153600时,稳定时下载速度约为10.5-14.2KB/S(较多在11.4KB/S);

波特率为192000时,稳定时下载速度约为14.2-17.1KB/S(基本在14.2和17.1这两个速率变化);

波特率为230400时,稳定时下载速度约为14.2-17.1KB/S(基本在14.2和17.1这两个速率变化);

波特率为460800时,稳定时下载速度约为14.2-17.1KB/S(基本在14.2和17.1这两个速率变化);

由此可见,在波特率为9600~38400之间,波特率的增长倍数与传输速率的增长倍数基本相同,但是在波特率大于192000以上时,传输速率基本没有任何提高。


若以(起始位1bit(必须的,隐藏位,与之前计算有所更正),数据位8bit,停止位1bit,无校验,无流控)计算,

波特率为9600时,理论下载速度为9600/10/1024=0.9375KB/S;(实际与理论值基本相符)

波特率为19200时,理论下载速度为19200/10/1024=1.875KB/S;(实际与理论值基本相符)

波特率为38400时,理论下载速度为38400/10/1024=3.75KB/S;(实际与理论值基本相符)

波特率为76800时,理论下载速度为76800/10/1024=7.5KB/S;(实际与理论值基本相符)

波特率为115200时,理论下载速度为115200/10/1024=11.25KB/S;(实际与理论值相差较大)

波特率为153600时,理论下载速度为153600/10/1024=15KB/S;(实际与理论值相差较大)

波特率为192000时,理论下载速度为19200010/1024=18.75KB/S;(实际与理论值相差较大)

波特率为230400时,理论下载速度为230400/10/1024=22.5KB/S;(实际与理论值相差较大)

波特率为460800时,理论下载速度为460800/10/1024=45KB/S;(实际与理论值相差较大)

从115200开始,实际传输速率与理论上计算的传输速率相差较大,至于为什么波特率大于192000以上时,传输速率基本没有任何提高,目前仍没有找到准确合理的解释。怀疑是受到PC上接收串口数据的缓冲器大小所限制?

另外,若通过USR-TCP232-Test软件发送同样的音频文件(大小6640305字节,6.33M)到ESP8266接收,则最大上传速度为4KB/S,

波特率为9600时,则通常为接收16KB后即停止接收;

波特率为19200~192000时,通常为接收20KB后即停止接收;

但有时不会停止接收,若停止接收,已接收数据量均为4KB的倍数。

怀疑是ESP8266上接收数据缓冲器的大小为4KB?

(后经大神指点,原来是USR-TCP232-Test这个软件右下角有一个发送间隔XXX毫秒的设置,将其改短一点即可提高上传速度,在UDP传输时可以改得很短,例如3ms,但是在TCP传输时要注意模块是否来得及接收,若PC上传速度过快,模块来不及接收,将会停止接收。原以为这个发送间隔只是对循环发送相同的数据有效。)

若有大神知道个中道理请指点一二,谢谢!

QQ邮箱:81590509@qq.com

原创粉丝点击