有关于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
复制代码请问我这正常吗,高手解答下呗!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。