最近调试STM32F107 USB HOST 读U盘功能,插上U盘后检测不到设备插入
1、在中断处理函数处加了一条print,没有打印,说明没有触发中断;
2、量了一下管脚,没插入U盘时两个脚均为低,接上U盘后D+为高,D-为低,同时5V供电正常;
3、查了下手册以及官网的程序,官网的程序应该是按照25M晶振写的,我用的是8M晶振,于是按照用户手册TABLE 69 修改了时钟配置,还是不行,代码如下:
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE , RCC_PREDIV1_Div1);
RCC_PLLConfig(RCC_PLLSource_PREDIV1 , RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);
RCC_PLL2Cmd(DISABLE);
RCC_PLL3Cmd(DISABLE);
RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE) ;
4、硬件连接方法:只接了D+和D-,接口的5V没有通过引脚控制,一直保持上电状态,同时ID和VBUS是悬空的(实际上该两个管脚跟UART1复用,我占用作UART1了),接口用的是普通的USB A母座,而不是OTG座
主要疑惑点:
1、F107是怎么区分OTG还是单纯的HOST的呢?因为HOST不需要ID和VBUS脚,我硬件这么接是否有问题
2、检测不到U盘插入,主要会是什么原因呢,目前我主要怀疑是硬件连接错误或者是USB初始化有问题
3、请帮忙看下我的硬件连接和USB初始化是不是有问题呢?其他的库文件用的都是官网的库,应该大家都是一样的
多谢大家帮忙哈 |