有关于STM32F407-USB CDC虚拟串口速度问题!

2019-12-11 18:28发布

本帖最后由 fenjinzhe 于 2013-4-11 01:15 编辑

  之前做过了HID程序传输一个12K的文件需要6秒多钟,不知道怎么这么慢,所以改为CDC类,据说速度还可以。

参考了ST官方例程VCP移植,发送和接收都很正常,今天用BusHound软件测试了一下速度,结果很惊讶。

看图
一开始速度在300+K/sec觉得挺正常。可是后来速度不停的上涨
QQ截图20130410235914.jpg (15.99 KB, 下载次数: 4) 下载附件 2013-4-11 01:07 上传


主循环内只有一句 USB_DataTx(&Buff[0], 64);
  1. #define USBD_CFG_MAX_NUM                1
  2. #define USBD_ITF_MAX_NUM                1

  3. #define USBD_SELF_POWERED               

  4. #define USB_MAX_STR_DESC_SIZ            65535



  5. /** @defgroup USB_VCP_Class_Layer_Parameter
  6.   * @{
  7.   */
  8. #define CDC_IN_EP                       0x81  /* EP1 for data IN */
  9. #define CDC_OUT_EP                      0x01  /* EP1 for data OUT */
  10. #define CDC_CMD_EP                      0x82  /* EP2 for CDC commands */

  11. /* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */
  12. #ifdef USE_USB_OTG_HS
  13. #define CDC_DATA_MAX_PACKET_SIZE       512  /* Endpoint IN & OUT Packet size */
  14. #define CDC_CMD_PACKET_SZE             8    /* Control Endpoint Packet size */

  15. #define CDC_IN_FRAME_INTERVAL          40   /* Number of micro-frames between IN transfers */
  16. #define APP_RX_DATA_SIZE               2048 /* Total size of IN buffer:
  17.                                                 APP_RX_DATA_SIZE*8/MAX_BAUDARATE*1000 should be > CDC_IN_FRAME_INTERVAL*8 */
  18. #else
  19. #define CDC_DATA_MAX_PACKET_SIZE       64   /* Endpoint IN & OUT Packet size */
  20. #define CDC_CMD_PACKET_SZE             8    /* Control Endpoint Packet size */

  21. #define CDC_IN_FRAME_INTERVAL          5    /* Number of frames between IN transfers */
  22. #define APP_RX_DATA_SIZE               2048 /* Total size of IN buffer:
  23.                                                 APP_RX_DATA_SIZE*8/MAX_BAUDARATE*1000 should be > CDC_IN_FRAME_INTERVAL */
  24. #endif /* USE_USB_OTG_HS */
复制代码
  1. #ifdef USB_OTG_FS_CORE
  2. #define RX_FIFO_FS_SIZE                          128
  3. #define TX0_FIFO_FS_SIZE                          64
  4. #define TX1_FIFO_FS_SIZE                         128
  5. #define TX2_FIFO_FS_SIZE                          0
  6. #define TX3_FIFO_FS_SIZE                          0
复制代码请问我这正常吗,高手解答下呗!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
tiancaigao7
1楼-- · 2019-12-11 23:23
 精彩回答 2  元偷偷看……
sblpp
2楼-- · 2019-12-12 03:35
tiancaigao7 发表于 2013-4-11 07:06
正常,CDC虚拟串口理论上可以实现USB的全部速度,就连F1上面的都可以做到1.2MB/s,更何况F4是高速的USB。 ...

楼主用的是全速USB接口。
F4上的高速USB得接高速USB PHY的,接口都不一样。
qllaoda1
3楼-- · 2019-12-12 07:58
HID也不至于12K的文件都要6秒吧,程序问题。我以前用51,HID模式下都可以达到每秒250KB。
fenjinzhe
4楼-- · 2019-12-12 13:07
我是用调试助手测试的,发送的数据包长度过大的话,PC端串口助手还会死机。
tiancaigao7
5楼-- · 2019-12-12 15:12
sblpp 发表于 2013-4-11 08:38
楼主用的是全速USB接口。
F4上的高速USB得接高速USB PHY的,接口都不一样。

楼主只是怀疑自己的速度这么快是不是正常,我告诉他按照USB的速度和CDC的原理来看是正常的。这个没有问题呀?你在质疑什么?
telcat
6楼-- · 2019-12-12 19:50
 精彩回答 2  元偷偷看……

一周热门 更多>