请选择 进入手机版 | 继续访问电脑版
搜索
查看: 1032|回复: 1

【ST MCU实战经验】VCP例程用于数据传输时丢失数据的处理

[复制链接]

43

主题

43

帖子

0

好友

Rank: 4

高级会员

注册时间
2013-9-18
发表于 2014-6-8 10:08:32 | 显示全部楼层 |阅读模式
 问题:
某客户工程师在其产品的设计中,使用了STM32F205VET6。据其工程师讲述:他使用ST 的USB 固件库
中的VCP 例程来实现虚拟串口的功能,但是他发现虚拟串口一次输出的数据(从串口到上位机)如果
超过2Kbytes 就会造成数据丢失,只输出尾部的2Kbytes。客户工程师检查代码发现USB 的FIFO 大小
由宏定义APP_RX_DATA_SIZE 决定,而APP_RX_DATA_SIZE 的大小刚好为2Kbytes。所以他认为此FIFO
设计太小而造成的,于是他将FIFO 的大小改成5Kbyte,不过修改后并不能解决问题。
 

问题详细描述以及ST官方解答见文档: VCP例程用于数据传输时丢失数据的处理.pdf (159.79 KB, 下载次数: 117)
回复

使用道具 举报

1

主题

6

帖子

0

好友

Rank: 1

新手上路

注册时间
2015-9-29
发表于 2015-9-29 20:50:29 | 显示全部楼层
如果 需要 直接调用 DCD_EP_Tx 进行数据发送,怎么样进行同步比较合适?也就是,有什么条件可以判断可以调用DCD_EP_Tx, 而不会造成丢失数据的情况。
由于需要通过vcp发送的数据量很大,不是通过uart进来了。而且对速度要求比较高。
在stm32f103上,使用usb_sil.c可以这样实现
    if (GetEPTxStatus(ENDP1) == EP_TX_NAK)
    {
        USB_SIL_Write(EP1_IN, InReport, 64);
        SetEPTxCount((EP1_IN & 0x7F), 64);
        SetEPTxValid(ENDP1);
        return 1;
    }

切换到stm32f405上,使用高速usb,有没有类似的实现方法?

/Jaret
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|意法半导体STM32/STM8技术社区    

GMT+8, 2017-7-23 22:58 , Processed in 0.106536 second(s), 13 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表