zengyi703-16313 发表于 2016-12-5 07:10:07

谢楼主分享

anny 发表于 2016-12-5 08:33:43

牛逼了,把机都搞死了:lol:lol:lol:lol

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_StatusTypeDefret = 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.
页: 1 [2] 3 4
查看完整版本: 【F769IDISCOVERY评测】高速USB VCP和全速USB VCP 速度对比