你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2658|回复: 1

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

[复制链接]

43

主题

0

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 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, 下载次数: 194)
<
回复

使用道具 举报

1

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
2020-1-15
发表于 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
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版