问题: 某客户工程师在其产品的设计中,使用了STM32F205VET6。据其工程师讲述:他使用ST 的USB 固件库 中的VCP 例程来实现虚拟串口的功能,但是他发现虚拟串口一次输出的数据(从串口到上位机)如果 超过2Kbytes 就会造成数据丢失,只输出尾部的2Kbytes。客户工程师检查代码发现USB 的FIFO 大小 由宏定义APP_RX_DATA_SIZE 决定,而APP_RX_DATA_SIZE 的大小刚好为2Kbytes。所以他认为此FIFO 设计太小而造成的,于是他将FIFO 的大小改成5Kbyte,不过修改后并不能解决问题。 问题详细描述以及ST官方解答见文档: |
由于需要通过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