本帖最后由 戚醉醉 于 2019-3-10 15:45 编辑
新手刚开始学习USB协议准备毕设,使用的是学校老师制作的STM32F29开发板(附件含硬件PDF),外接晶振25M。学习的材料是一份CSDN下载的可以供F429 discovery使用并成功识别的USB_HID工程(附件含工程),但是和我用的开发板还是有一定的区别,本人能力十分有限,下面是已经做过的调试,如下:1.原工程是晶振是8M主频168M,目标开发板晶振是25M主频180M,于是修改了时钟分频和晶振参数,
#define HSE_VALUE ((uint32_t)25000000)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M 25
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
2.检查了硬件DP、DM、VBUS引脚,使用片上内置的物理层,用USE_EMBEDDED_PHY,在高速模式配置成全速模式。
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB , ENABLE) ;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_OTG_HS, ENABLE) ;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | //OTG_HS_DM
GPIO_Pin_15; //OTG_HS_DP
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_OTG_HS_FS) ;
GPIO_PinAFConfig(GPIOB,GPIO_PinSource15,GPIO_AF_OTG_HS_FS) ;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //OTG_HS_VBUS
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
目前几个疑问就是,第一,硬件上PB13(OTG_HS_VBUS)没有上拉电阻,配置成GPIO_PuPd_NOPULL合理吗?除了以上需要两点,还需要注意哪些地方呢?
初来乍到,自己对USB协议了解太少了,又要毕设使用,还是有点着急,附件里包含了工程和硬件PDF,烦请大神们解答一下,谢谢!
一周热门 更多>