打印
[STM32F4]

不能识别出鼠标设备

[复制链接]
1591|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2021-2-3 23:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
画了一块stm32F4的板子,板子上有USB主机(host)接口、USB从机(device)接口,让stm32F4的USB同时工作在主机模式和从机模式,PA11的OTG_FS_DM接从机usb的D-脚,PA12的OTG_FS_DP接从机usb的D+脚,此USB接口连接到电脑上,让stm32工作在从机模式;PB14的OTG_HS_DM接主机usb的D-脚,PB15的OTG_HS_DP接主机usb的D+脚,此USB接口连接usb hid 设备(如鼠标),让stm32工作在主机模式。现在我的从机模式PA11、PA12工作正常,但是主机模式PB14、PB15不能正常工作,插上鼠标后不能枚举出鼠标。查资料,USB OTG HS在不外接PHY的情况下可以当FS(全速)使用,于是我再定义两个宏,USE_USB_OTG_HS,USE_EMBEDDED_PHY,并且在usbh_conf.h里的#define USBH_MSC_MPS_SIZE 定义成64(HS模式是512,FS模式是64),怎么还是不能识别出鼠标设备

使用特权

评论回复
沙发
chuxh| | 2021-2-3 23:13 | 只看该作者
哪里的配置不对吧

使用特权

评论回复
板凳
llljh| | 2021-2-3 23:15 | 只看该作者
思路不对

使用特权

评论回复
地板
wangzsa| | 2021-2-3 23:19 | 只看该作者
配置代码

使用特权

评论回复
5
xxmmi|  楼主 | 2021-2-3 23:23 | 只看该作者

USBH_Init(&USB_OTG_Core_dev,USB_OTG_HS_CORE_ID,&USB_Host,&HID_cb,&USR_Callbacks);

//USB OTG 底层IO初始化
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_OTG_HS, ENABLE);//使能USB OTG时钟      FS改成HS      
  //GPIOB14,B15设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14 | GPIO_Pin_15;//PB14、15复用功能输出        
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
        
        
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//PB13推挽输出               
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出功能
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
        
  USB_HOST_PWRCTRL=1;                        //开启USB HOST电源供电

        GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_OTG_HS_FS);//PB14,AF12(USB) //GPIO_AF_OTG_FS改成GPIO_AF_OTG_HS_FS
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource15,GPIO_AF_OTG_HS_FS);//PB15,AF12(USB) //GPIO_AF_OTG_FS改成GPIO_AF_OTG_HS_FS
}
//USB OTG 中断设置,开启USB FS中断
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
        NVIC_InitTypeDef   NVIC_InitStructure;
        NVIC_InitStructure.NVIC_IRQChannel = OTG_HS_IRQn;                                            //FS改成HS
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;//子优先级3
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能通道
  NVIC_Init(&NVIC_InitStructure);//配置  
}

使用特权

评论回复
6
chenjunt| | 2021-2-3 23:26 | 只看该作者
您好,,请问您的HS当做FS用可以识别USB了吗,我也遇到这个问题了,也识别不了,请问您是怎么弄的

使用特权

评论回复
7
yufe| | 2021-2-3 23:28 | 只看该作者
卡死在那里了

使用特权

评论回复
8
guoyt| | 2021-2-3 23:30 | 只看该作者

复制
void OTG_FS_IRQHandler(void)
{
          USBH_OTG_ISR_Handler(&USB_OTG_Core);
}
成新的
void OTG_HS_IRQHandler(void)
{
          USBH_OTG_ISR_Handler(&USB_OTG_Core);
}


原由:原来的库只有支持FS的中断例程,没有支持HS的例程。改了后,可以看到U盘拔插有动作。

使用特权

评论回复
9
xxmmi|  楼主 | 2021-2-3 23:31 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
10
renzheshengui| | 2021-3-1 23:21 | 只看该作者
供电稳定吗 波动大不大

使用特权

评论回复
11
wakayi| | 2021-3-1 23:26 | 只看该作者
楼主用的是什么库啊

使用特权

评论回复
12
wowu| | 2021-3-1 23:29 | 只看该作者
如何更改例程呢

使用特权

评论回复
13
xiaoqizi| | 2021-3-1 23:32 | 只看该作者
硬件如何连接的啊

使用特权

评论回复
14
木木guainv| | 2021-3-1 23:34 | 只看该作者
初始化能通过吗

使用特权

评论回复
15
SantaBunny| | 2023-3-8 10:50 | 只看该作者
配置代码是不是出问题卡住了

使用特权

评论回复
16
软核硬核| | 2023-3-10 14:33 | 只看该作者
你跑个正点原子的例程看看呗。

使用特权

评论回复
17
Pretext| | 2023-3-10 14:34 | 只看该作者
现在CubeMX生成出来的USB例程都用不了。

使用特权

评论回复
18
芯路例程| | 2023-3-10 14:35 | 只看该作者
PA11 PA12能用?但是PB14 PB15用不了?你先关了PA11 PA12试试呗。

使用特权

评论回复
19
AloneKaven| | 2023-3-10 22:41 | 只看该作者
用的哪个库啊?

使用特权

评论回复
20
天意无罪| | 2023-3-11 16:45 | 只看该作者
USB比较复杂,硬件上比较简单,一般都是软件上配置有问题。

使用特权

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

本版积分规则

369

主题

4278

帖子

2

粉丝