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

【F769IDISCOVERY评测】高速USB VCP和全速USB VCP 速度对比  

[复制链接]
creep 提问时间:2016-12-3 18:36 /
阅读主题, 点击返回1楼
2 收藏 13 评论60 发布时间:2016-12-3 18:36
60个回答
zengyi703-16313 回答时间:2016-12-5 07:10:07
谢楼主分享
anny 回答时间:2016-12-5 08:33:43
牛逼了,把机都搞死了
creep 回答时间:2016-12-5 08:42:54
anny 发表于 2016-12-5 08:33
牛逼了,把机都搞死了

                             
andypanfan 回答时间:2016-12-5 08:48:03
跟着大神学USB
湛无双 回答时间:2016-12-9 20:31:20
感谢楼主分享 高速USB做得不错
seawwh 回答时间:2017-1-12 15:40:49
关于STM32 VCP FULL SPEED 最高上传速率

我的测试环境 F205,120M运行, Host: XP, AMD 2GHz

我测试的结果,在Host不很繁忙的情况下,F205发往Host的速率可达670K字节以上。
测试的方法是:

  循环下列动作:
  Host 发送一个传输命令,F205立即发送8K字节的数据到Host.
  Host 接收到数据后效验。
  10000次循环之后累计数据流量。
  其中Host 等待和发送命令有一些开销。每次传输的数据块愈长,这些开销占比例愈小。

  那么,在Full speed 下USB Bulk 传输的最大速度是多少呢?
  这取决于Host 发出 In 令牌的速率,据我测试 In 令牌大约是15-16个/ms
核算出速率约为 1M Byte/s; 这应该是极限速率。
daddyk 回答时间:2017-1-17 11:18:26
楼主你好,我用STM32F7 +CY7C68003(USB PHY)来实现高速usb通信,发现枚举不到usb设备。
我是根据你“ STM32F769 Discovery VCP-HS.rar ’’的例子改的不知道为什么。
STM32用26M晶振时钟配置如下:
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
  HAL_StatusTypeDef  ret = HAL_OK;
  
  /* Enable Power Control clock */
  __HAL_RCC_PWR_CLK_ENABLE();
  
  /* The voltage scaling allows optimizing the power consumption when the device is
     clocked below the maximum system frequency, to update the voltage scaling value
     regarding system frequency refer to product datasheet.  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  /* Enable HSE Oscillator and activate PLL with HSE as source */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 26;
  RCC_OscInitStruct.PLL.PLLN = 432;  
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 9;
  RCC_OscInitStruct.PLL.PLLR = 7;
  
  ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
  if(ret != HAL_OK)
  {
    while(1) { ; }
  }
  
  /* Activate the OverDrive to reach the 216 MHz Frequency */  
  ret = HAL_PWREx_EnableOverDrive();
  if(ret != HAL_OK)
  {
    while(1) { ; }
  }
  /* Select PLLSAI output as USB clock source */
  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_CLK48;
  PeriphClkInitStruct.Clk48ClockSelection = RCC_CLK48SOURCE_PLLSAIP;
  PeriphClkInitStruct.PLLSAI.PLLSAIN = 432;
  PeriphClkInitStruct.PLLSAI.PLLSAIQ = 9;
  PeriphClkInitStruct.PLLSAI.PLLSAIP = RCC_PLLSAIP_DIV2;
  if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct)  != HAL_OK)
  {
    while(1) { ; }
  }
  
  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
  
  ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7);
  if(ret != HAL_OK)
  {
    while(1) { ; }
  }  

usb硬件初始化如下:
   /* Configure USB HS GPIOs */
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    __HAL_RCC_GPIOC_CLK_ENABLE();
   // __HAL_RCC_GPIOH_CLK_ENABLE();
         //        __HAL_RCC_GPIOI_CLK_ENABLE();

   
    /* CLK */
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
   
    /* D0 */
    GPIO_InitStruct.Pin = GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
   
    /* D1 D2 D3 D4 D5 D6 D7 */
    GPIO_InitStruct.Pin = GPIO_PIN_0  | GPIO_PIN_1  | GPIO_PIN_5 |\
      GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
   
    /* STP */
    GPIO_InitStruct.Pin = GPIO_PIN_0;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
   
    /* NXT */
    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
   
    /* DIR */
    GPIO_InitStruct.Pin = GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE();
creep 回答时间:2017-1-17 12:28:26
daddyk 发表于 2017-1-17 11:18
楼主你好,我用STM32F7 +CY7C68003(USB PHY)来实现高速usb通信,发现枚举不到usb设备。
我是根据你“ STM32 ...

设备管理器中显示不到USB设备吗?
daddyk 回答时间:2017-1-17 12:40:55
是的,没反应
daddyk 回答时间:2017-1-17 12:41:41
程序还需要哪里做需改么
daddyk 回答时间:2017-1-17 12:43:11
creep 发表于 2017-1-17 12:28
设备管理器中显示不到USB设备吗?

是的,没有反应,程序上哪里还需要注意的?
creep 回答时间:2017-1-17 13:45:13
daddyk 发表于 2017-1-17 12:43
是的,没有反应,程序上哪里还需要注意的?

如果设备连上电脑完全没有反应,你应该首先检查下硬件了,我使用的STM32F769-Discovery板子,你可以找下原理图参考下。
daddyk 回答时间:2017-1-17 14:03:14
creep 发表于 2017-1-17 13:45
如果设备连上电脑完全没有反应,你应该首先检查下硬件了,我使用的STM32F769-Discovery板子,你可以找下 ...

原理图仔细检查过了,而且ulpi clock输出已经60mhz(phy输出的)了。现在不知道怎么入手去查找问题
平山村栋爷 回答时间:2017-3-6 21:10:43
F7系列不是自带了PHY设备了,还必须要外界一个PHY吗?
creep 回答时间:2017-3-6 21:23:55
平山村栋爷 发表于 2017-3-6 21:10
F7系列不是自带了PHY设备了,还必须要外界一个PHY吗?

截止到目前(2017-03-06 21:22:37),好像只看到STM32F732 内部带高速PHY.
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版