Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
USB
STM32H7使用USB获取设备描述符失败
发布于 2019-07-17 09:58:36 浏览:8169
订阅该版
* 本帖最后由 whj467467222 于 2019-7-17 10:01 编辑 * 使用开发板:STM32H743IITX参考移植教程:[https://blog.csdn.net/newbie_Blogger/article/details/92617242](https://blog.csdn.net/newbie_Blogger/article/details/92617242) 1,通过CUBEMX开启USB_OTG_FS,选择device_only,开启USB ON THE GO GLOBAL interrupt 2,USB时钟选择48M内部晶振 ![TIM截图20190717094425.png](/uploads/201907/17/094456lq4quylyhdrrnjye.png) 3,修改board目录下的kconfig ``` config BSP_USING_USBD_FS bool "Enable OTGFS as USB device" select RT_USING_USB_DEVICE default n```4,copy CUBEMX生成的时钟初始化函数覆盖掉原来的board.c 5,在ENV板级驱动目录下开启前面kconfig添加的USB,并打开USB设备框架的虚拟串口 ![TIM截图20190717095201.png](/uploads/201907/17/095228ndpkzk4pcpw8pcsf.png) 6,重新生成工程编译 7,修改main 函数 ```int main(void) { int count = 1; rt_device_t dev = RT_NULL; char buf[] = "hello rt-thread!
"; /* set LED0 pin mode to output */ rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); dev = rt_device_find("vcom"); if (dev) rt_device_open(dev, RT_DEVICE_FLAG_RDWR); else return -RT_ERROR; while (count++) { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_device_write(dev, 0, buf, rt_strlen(buf)); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(500); } return RT_EOK; }``` 8,下载程序,电脑端显示无法识别``` \ | / - RT - Thread Operating System / | \ 4.0.2 build Jul 10 2019 2006 - 2019 Copyright by rt-thread team msh >list_device device type ref count -------- -------------------- ---------- vcom Character Device 1 usbd USB Slave Device 0 uart1 Character Device 2 pin Miscellaneous Device 0 msh > msh >``` ![微信截图_20190717095617.png](/uploads/201907/17/095719k1acho0hw2np5pdf.png) ![TIM截图20190717095810.png](/uploads/201907/17/095831izmyz0y30yns3qqh.png)
查看更多
2pw
2019-07-17
这家伙很懒,什么也没写!
[i=s] 本帖最后由 2pw 于 2019-7-17 11:22 编辑 [/i] 已经搞定。先测试下是否是硬件问题。用示波器看下,我就是usb插座短路了。 配置并没有去深究有没有影响,反正我是这样的,然后CUbe配置记得打开usb时钟48M,打开usb otg中断,gpio速度high ``` pcd->Init.dev_endpoints = 8; pcd->Init.speed = PCD_SPEED_FULL; //pcd->Init.ep0_mps = DEP0CTL_MPS_64; #if !defined(SOC_SERIES_STM32F1) pcd->Init.phy_itface = PCD_PHY_EMBEDDED; #endif /* Initialize LL Driver */ if (HAL_PCD_Init(pcd) != HAL_OK) { LOG_E("usbd pcd init failed"); } #if defined(SOC_SERIES_STM32H7) HAL_PCDEx_SetRxFiFo(pcd, 0x80); HAL_PCDEx_SetTxFiFo(pcd, 0, 0x40); HAL_PCDEx_SetTxFiFo(pcd, 1, 0x80); //HAL_PCDEx_SetTxFiFo(pcd, 2, 0x40); //HAL_PCDEx_SetTxFiFo(pcd, 3, 0x40); ```
14
个回答
默认排序
按发布时间排序
2pw
2019-07-17
这家伙很懒,什么也没写!
mark一下。我也正在弄h7usb,现在也是识别不到,还在测试硬件
whj467467222
认证专家
2019-07-17
开源,分享,交流,共同进步
[i=s] 本帖最后由 whj467467222 于 2019-7-17 11:41 编辑 [/i] >已经搞定。先测试下是否是硬件问题。用示波器看下,我就是usb插座短路了。 >配置并没有去深究有没有影响,反 ... --- 我用的是正点原子的开发板,用原子的例程是没问题的,所以可以排除硬件问题。看到楼主对驱动部分源码就行就注释,这个地方有影响吗? 中断已打开,配置是使用的CUBEMX生成的. ``` void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hpcd->Instance==USB_OTG_FS) { /* USER CODE BEGIN USB_OTG_FS_MspInit 0 */ /* USER CODE END USB_OTG_FS_MspInit 0 */ __HAL_RCC_GPIOA_CLK_ENABLE(); /**USB_OTG_FS GPIO Configuration PA11 ------> USB_OTG_FS_DM PA12 ------> USB_OTG_FS_DP */ GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Alternate = GPIO_AF10_OTG1_FS; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Peripheral clock enable */ __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); /* USB_OTG_FS interrupt Init */ HAL_NVIC_SetPriority(OTG_FS_IRQn, 1, 0); HAL_NVIC_EnableIRQ(OTG_FS_IRQn); /* USER CODE BEGIN USB_OTG_FS_MspInit 1 */ /* USER CODE END USB_OTG_FS_MspInit 1 */ } } ```
2pw
2019-07-17
这家伙很懒,什么也没写!
看起来没问题。调试下,看看有没有进USB中断
whj467467222
认证专家
2019-07-17
开源,分享,交流,共同进步
>看起来没问题。调试下,看看有没有进USB中断 --- 可以正常进入中断
whj467467222
认证专家
2019-07-17
开源,分享,交流,共同进步
直接使用CUBEMX生成的工程可以正确识别到USB设备,使用RTT的USB驱动框架识别不到
whj467467222
认证专家
2019-07-18
开源,分享,交流,共同进步
[i=s] 本帖最后由 whj467467222 于 2019-7-18 11:05 编辑 [/i] master分支使用的是1.3.2的库,经楼上测试会出现USB枚举不成功是因为usb发不出来包,所以出现了这个问题。解决办法就是把库更新到1.4就可以了。我使用xcom要接收到虚拟串口发送过来的数据需要勾选DTR。
pc9527
2019-12-18
这家伙很懒,什么也没写!
能分享完整的项目代码吗,移植时,结构体 PCD_HandleTypeDef 找不到
hxcnz
2019-12-27
这家伙很懒,什么也没写!
>master分支使用的是1.3.2的库,经楼上测试会出现USB枚举不成功是因为usb发不出来包,所以出现了这个问题。 ... --- 问下,1.4库是哪个库?
whj467467222
认证专家
2019-12-28
开源,分享,交流,共同进步
>问下,1.4库是哪个库? --- 现在BSP包里的就是更新过的了
whj467467222
认证专家
2019-12-28
开源,分享,交流,共同进步
>能分享完整的项目代码吗,移植时,结构体 PCD_HandleTypeDef 找不到 --- 当时就是测试了一下,项目代码找不到了,结构体找不到你看下是不是H7的库和F系列的命名不一样
撰写答案
登录
注册新账号
关注者
0
被浏览
8.2k
关于作者
whj467467222
开源,分享,交流,共同进步
提问
29
回答
1222
被采纳
148
关注TA
发私信
相关问题
1
请教USB Host
2
STM32F4调试USB 读卡器(Slave)提示格式化
3
急求 STM32F4 USB Device MSC+SD 的相关问题
4
USB 框架问题
5
USB键盘
6
LPC17xx 如何添加USB HOST设备
7
RT-Thread目前支持USB HOST了吗?
8
USB HOST的支持问题
9
RTT 2.0.1 USB存储设备问题,枚举到USBREQ_GET_MAX_LUN后复位
10
USB库已经很久没更新了
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部