5119|2

26

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

发送大量数据,程序中怎么匹配stm32开发板和PC上位机 [复制链接]

USb做虚拟串口。
接着上次帖子http://www.amobbs.com/thread-5485682-1-1.html

void USB_Send_Data(u16* data_buffer, u8 len)  //调用的此函数发送数组

{  
  count_in=len;  
  UserToPMABufferCopy(data_buffer, ENDP1_TXADDR, count_in);  
  SetEPTxCount(ENDP1, count_in);  
  SetEPTxValid(ENDP1);  
}

上面帖子是可以发送64字节数据,不管是u8还是u16类型。
现在要发送的远远不止几十个字节,是8千字节到2万4千字节。
现在是单向传输,从stm32开发板往电脑上微机发送数据,开的单缓冲,缓冲区设置大小为512字节。
//b是数组名,offset是地址的偏置,count计数
USB_Send_Data(b+offset, 64); //每次发送64字节
offset+=64;
count -=64;
delay_1us(100);        //delay 100us  
  发现当发送8000字节时,每发送64个字节要延迟50us,才能保证数据不丢包,8000个字节是完整的,数据的接收是通过串口调试助手接收的,波特率一般设置为115200,通过调试助手保存数据txt.
但是,当发送2万4千个字节时,要保证数据不丢包,每发送64字节要延时600us.
因为包与包之间的延时增加,一定使得USB的传输速率大大降低,所以,请问:每发送64字节为什么要加延时才能保证串口调试助手接受的数据完整不丢包,发送大量数据,程序中怎么匹配stm32开发板和PC上位机,才能保证数据一完整不丢包,不会被冲掉或覆盖掉?
此帖出自stm32/stm8论坛

最新回复

还是用协议比较安全,不然就切割分段发送  详情 回复 发表于 2012-8-17 17:27
点赞 关注
 

回复
举报

50

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
使用硬件握手协议
此帖出自stm32/stm8论坛
 
 

回复

381

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
还是用协议比较安全,不然就切割分段发送
此帖出自stm32/stm8论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表