打印

STM32 USB 实验提示:无法识别的USB设备

[复制链接]
22952|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CreatAll|  楼主 | 2011-7-13 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的 JoyStickMouse 程序
STM32 USB 实验提示:无法识别的USB设备

usb上拉电阻接在D+上通过三极管接3.3V电压,一IO口控制。程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

请教,谢谢!!
沙发
香水城| | 2011-7-13 11:30 | 只看该作者
请具体描述你的操作过程。

使用特权

评论回复
板凳
CreatAll|  楼主 | 2011-7-13 12:14 | 只看该作者
用的是STM32提供的JoyStickMouse 程序
唯一不同的是USB设计的时候加了个三极管控制端口(PC13),我初始化PC13的时候设置好了初始化后就输出0,让三极管导通,也就是PC13初始化后则D+上的上拉电阻就OK了(这些都测试OK了,上拉也电阻OK了)

PC13初始化后,我就初始化USB,下载后,重新上电电脑就提示:无法识别的USB设备

使用特权

评论回复
地板
香水城| | 2011-7-13 12:23 | 只看该作者
很可能你的程序没有运行或被你暂停了,比如单步或断点操作。

使用特权

评论回复
5
CreatAll|  楼主 | 2011-7-13 13:18 | 只看该作者
实在不明白

难道说是提供的库函数,期间我哪里设置了使其暂停?

使用特权

评论回复
6
CreatAll|  楼主 | 2011-7-13 14:32 | 只看该作者
int main(void)
{                          
        Stm32_Clock_Init;                //系统时钟设置
        delay_init();                     //延时初始化
        LED_Init();                      //初始化与LED连接的硬件接口
        KEY_Init();                      //初始化与按键连接的硬件接口
        EXTIX_Init();                  //外部中断初始化
        USB_EN_Init();              //USB控制脚初始化
        delay_ms(1000);
  
        //USB配置
        USB_Interrupts_Config();   
        Set_USBClock();   
        USB_Init();        

        while(1)
        {
                ;               
        }         
}

使用特权

评论回复
7
香水城| | 2011-7-13 14:47 | 只看该作者
实在不明白

难道说是提供的库函数,期间我哪里设置了使其暂停?
CreatAll 发表于 2011-7-13 13:18


我是问你的实验步骤,而不是你在程序中做了什么。

使用特权

评论回复
8
CreatAll|  楼主 | 2011-7-13 14:59 | 只看该作者
我没有调试,而是直接编译下载,重新上电的

使用特权

评论回复
9
vigia| | 2011-7-13 17:06 | 只看该作者
程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

反了,必须先初始化USB,再使能上拉电阻。或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

D+一上拉,主机就开始枚举设备了,你的USB又没有初始化,当然不会响应主机的枚举,主机不能枚举设备,当然就是一个无法识别的USB设备了。

使用特权

评论回复
10
CreatAll|  楼主 | 2011-7-13 17:22 | 只看该作者
//USB配置

     USB_Interrupts_Config();   
        Set_USBClock();   
        USB_Init();

       USB_ON;    //使能usb控制端IO

我先USB设置后在让D+接3.3V后还是提示:无法识别的USB设备

使用特权

评论回复
11
CreatAll|  楼主 | 2011-7-13 17:23 | 只看该作者
程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

反了,必须先初始化USB,再使能上拉电阻。或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

D+一上拉,主机就开始枚举设备了,你的U ...
vigia 发表于 2011-7-13 17:06

===============================

或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

这个不明白中……

使用特权

评论回复
12
香水城| | 2011-7-13 17:37 | 只看该作者
===============================

或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

这个不明白中……
CreatAll 发表于 2011-7-13 17:23


在项目文件中,找到platform_config.h这个头文件,在这个头文件中找到有关USB_USE_EXTERNAL_PULLUP的说明,按照说明定义。

使用特权

评论回复
13
CreatAll|  楼主 | 2011-7-13 21:00 | 只看该作者
程序中我一开始初始化的时候就让D+上的电阻接通了3.3V。后来才USB初始化

反了,必须先初始化USB,再使能上拉电阻。或者你应该直接修改例程中对于USB_CONNECT_PIN的定义的。

D+一上拉,主机就开始枚举设备了,你的U ...
vigia 发表于 2011-7-13 17:06


1:我看大部分的USB的D+上拉电阻是没有额外用开关控制,也就是一上电D+上拉电阻就接通。有人提到过遇到“无法识别的USB设备”,在下载后,拔下USB从新插上就解决了这个问题。我看这个刚好是切合vigia提出的D+一上电就枚举这个原因造成.
2:我现在遇到的问题可能还有其它问题……:L ,迷惑中……
  我想问问是不是用JoyStickMouse这个程序是不是下载后,电脑会自动加载驱动??也就是下载后正常是电脑会自动识别这个USB设备,而不要自己在PC机上做什么工作?

使用特权

评论回复
14
qin123g| | 2011-10-13 16:52 | 只看该作者
这两天正在做,没有结果,买的开发板示例程序都跑不通!

使用特权

评论回复
15
nicholasldf| | 2011-12-1 16:13 | 只看该作者
我的也是遇到这个问题,我的是USB虚拟串口,就改了上拉引脚由原来的改到PA8,提示无法识别的USB设备。

使用特权

评论回复
16
nicholasldf| | 2011-12-14 22:25 | 只看该作者
我的找到原因了,晶振不是8M的,焊成了13M的,官方例程只要根据实际情况改引脚就好了,还要注意USB_Cable_Config函数要根据实际情况修改,我的使能USB逻辑跟官方是相反的。
void USB_Cable_Config (FunctionalState NewState)
{
     if (NewState == DISABLE)//原来的if (NewState != DISABLE)
          GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);
     else
          GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);
}

使用特权

评论回复
17
菜鸟宅男| | 2013-8-8 19:58 | 只看该作者
学习一下!

使用特权

评论回复
18
hawksabre| | 2013-8-8 21:05 | 只看该作者
可能是晶振输出频率不匹配  有可能是这个因素

使用特权

评论回复
19
hugo0chen| | 2014-2-19 16:51 | 只看该作者
我也遇到这个问题了,在线仿真调试时,程序死在startup_stm32f10x_cl.s中的“xxxx  OTG_FS_IRQHandler
     B                       ---停在这了
     ENDP

使用特权

评论回复
20
hugo0chen| | 2015-6-11 16:55 | 只看该作者
hugo0chen 发表于 2014-2-19 16:51
我也遇到这个问题了,在线仿真调试时,程序死在startup_stm32f10x_cl.s中的“xxxx  OTG_FS_IRQHandler
    ...

去年我自己发的贴子,一年过去了,我又来了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

117

帖子

1

粉丝