[应用相关] usb VirtualCOMPort 例子会丢失数据,请高手帮忙分析原因

[复制链接]
4753|11
 楼主| shanggzq 发表于 2008-10-29 22:14 | 显示全部楼层 |阅读模式
 楼主| shanggzq 发表于 2008-10-29 23:12 | 显示全部楼层

没人碰到这问题吗?

yangbo_zd 发表于 2008-10-30 13:45 | 显示全部楼层

例程本来速度就不高,丢数是正常的

 楼主| shanggzq 发表于 2008-10-30 14:46 | 显示全部楼层

能请你具体说一下,有办法克服吗?

香水城 发表于 2008-10-30 16:40 | 显示全部楼层

VirtualCOMPort 例子丢失数据的可能原因

刚刚收到武汉力源的朋友发来的email如下,楼主可以试试:

STM32虚拟串口提供的代码存在丢失串口数据的问题,其可能原因如下:
 
    以下是串口接收中断调用的函数及USB发送完回调函数
void USART_To_USB_Send_Data(void)
{
 if (linecoding.datatype == 7)
  {
    buffer_in[count_in] = USART_ReceiveData(USART1) & 0x7F;
  }
  else if (linecoding.datatype == 8)
  {
    buffer_in[count_in] = USART_ReceiveData(USART1);
  }
  count_in++;
  
  UserToPMABufferCopy(buffer_in, ENDP1_TXADDR, count_in);
  
  SetEPTxCount(ENDP1, count_in);
  SetEPTxValid(ENDP1);
}
 
void EP1_IN_Callback(void)
{
  count_in = 0;
}

    其中 count_in为串口接收数据指针,串口接收中断及USB发送完回调函数都会修改count_in指针,这样就会造成数据丢失。
    
    以上代码版本为V2.2.1
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* File Name          : main.c
* Author             : MCD Application Team
* Version            : V2.2.1
* Date               : 09/22/2008
* Description        : Virtual Com Port Demo main file
********************************************************************************
national6 发表于 2008-10-30 17:00 | 显示全部楼层

楼主 帮帮我啊,

你那个 usb VirtualCOMPort 是怎么装的啊,,我一直没有搞懂   ,我装的是VCPDriver_V1.1_Setup  插上USB后没有反应呢?

national6 发表于 2008-10-30 17:27 | 显示全部楼层

USB虚拟COM端口驱动 那里下啊 ??

USB虚拟COM端口驱动 那里下啊??
lixun00 发表于 2008-10-31 20:07 | 显示全部楼层

这个例子有些错误,你用bus hound 检测就会发现...

还有就是不稳定,以要是不停的向uSB写数据(不是通过硬件,虚拟写,1s钟写32BYTES,够慢吧)我测了一晚上,第二天就发现CPU占用率超高...也不知是哪里的原因
pheavecn 发表于 2008-11-2 21:01 | 显示全部楼层

这个例子就是个玩具,不具实用价值。

得好好改写。
静默 发表于 2008-11-2 23:08 | 显示全部楼层

按照5楼的思路,加上超时判断,还是可实用的。


附图是上周五半双工情况下测的结果。
全双工的情况差一点点,发的正确率在99.9%以上,收的正确率在99.5左右。
 
相关链接:https://bbs.21ic.com/upfiles/img/200712/20071218232522885.rar
simon21ic 发表于 2008-11-3 00:48 | 显示全部楼层

我好像没有碰到过这个问题

我也是使用VCOM虚拟一个串口,在这个串口上实现ST的ISP功能。至今没有发现过这个问题
 楼主| shanggzq 发表于 2008-11-3 14:54 | 显示全部楼层

回6楼

你把VirtualCOMPort例程编译好以后写入STM32,就可以提示你安装驱动程序了,要不系统就不提示了,或者有UNKOWN DEVICE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

71

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部