F7上移植OTG_HS没有反应

2019-07-20 08:46发布

OTG_HS的移植在原子F7的  实验56 USB读卡器(Slave)  的基础上做的修改,因为原子的是没有外接PHY芯片的,我自己的开发板上现在是有接一个USB3300的芯片

2018-04-09_112550.png       

2018-04-09_112621.png
这个是USB3300芯片。


我现在这端的接口都是直接接在F7上的。宏定义在工程中添加了USE_ULPI_PHY,USE_USB_OTG_HS这两个。在usb.bsp.c中做了相关初始化如下
[mw_shl_code=applescript,true]//USB OTG 底层IO初始化
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
     GPIO_InitTypeDef  GPIO_InitStruct;
    __HAL_RCC_GPIOA_CLK_ENABLE();                   //使能GPIOA时钟
        __HAL_RCC_GPIOB_CLK_ENABLE();
        __HAL_RCC_GPIOC_CLK_ENABLE();
        __HAL_RCC_GPIOH_CLK_ENABLE();
        __HAL_RCC_GPIOI_CLK_ENABLE();
    __HAL_RCC_USB_OTG_FS_CLK_ENABLE();              //使能OTG FS时钟
       
       
        //D0
    GPIO_InitStruct.Pin=GPIO_PIN_3;    //PA3
    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;     //复用为OTG FS
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);         //初始化
       
       
        //D1-D7   //PB0,1,5,10,11,12,13
    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.Speed=GPIO_SPEED_HIGH;          //高速
    GPIO_InitStruct.Alternate=GPIO_AF10_OTG_HS;     //复用为OTG FS
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);         //初始化
       
       
        //CLK
    GPIO_InitStruct.Pin=GPIO_PIN_5;    //PA5
    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;     //复用为OTG FS
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);         //初始化
       
    //STP
    GPIO_InitStruct.Pin=GPIO_PIN_0;    //PC0
    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;     //复用为OTG FS
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);         //初始化
       
        //NXT
    GPIO_InitStruct.Pin=GPIO_PIN_4;    //PH4
    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;     //复用为OTG FS
    HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);         //初始化
       
         //DIR
    GPIO_InitStruct.Pin=GPIO_PIN_11;    //PI11
    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;     //复用为OTG FS
    HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);         //初始化

}

//USB OTG 中断设置,开启USB FS中断
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{         
    HAL_NVIC_SetPriority(OTG_HS_IRQn,0,0);          //抢占优先级0,子优先级3
    HAL_NVIC_EnableIRQ(OTG_HS_IRQn);                //使能OTG USB FS中断
}

//USB OTG 中断设置,开启USB FS中断
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_DisableInterrupt(void)
{
}
//USB OTG 端口供电设置(本例程未用到)
//pdev:USB OTG内核结构体指针
//state:0,断电;1,上电
void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev, uint8_t state)
{
}
//USB_OTG 端口供电IO配置(本例程未用到)
//pdev:USB OTG内核结构体指针
void  USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev)
{
}
//USB_OTG us级延时函数
//本例程采用SYSTEM文件夹的delay.c里面的delay_us函数实现
//官方例程采用的是定时器2来实现的.
//usec:要延时的us数.
void USB_OTG_BSP_uDelay (const uint32_t usec)
{
           delay_us(usec);
}
//USB_OTG ms级延时函数
//本例程采用SYSTEM文件夹的delay.c里面的delay_ms函数实现
//官方例程采用的是定时器2来实现的.
//msec:要延时的ms数.
void USB_OTG_BSP_mDelay (const uint32_t msec)
{  
        delay_ms(msec);
}[/mw_shl_code]
查询了下相关资料不知道还有其他什么需要配置的部分了。来个大佬指点下!








0条回答

一周热门 更多>