
最近在学习USB相关的知识,从底层一点一点开始写驱动,但是遇到了点问题。 使用的芯片型号:stm32F072C8T6 USB的DM和DP分别连接到PA11和PA12 发现的问题如下: (1)使用标准库写一个在main函数,并在其中只写一个while(1) 下载进单片机,然后将板子通过usb和电脑连接,电脑可以发现未识别的设备。 疑问:我认为默认USB设备是关闭的,那么对应的IO应该是普通IO状态,所以应该不会出现现未识别的设备 (2)通过查阅相关手册得知,通过控制USB寄存器USB_BCDR中的bit15 DPPU位可以控制内部的DP上拉电阻的连接和断开,以此来模拟USB设备的插入和拔出的过程,因此自己写代码进行相关的测试,但是发现DPPU不管如何改变,通过开发板链接的usb设备始终在设备管理器中显示为未识别设备。(已经基本排除代码问题,因为直接在仿真环境下使用仿真工具修改DPPU的状态USB设备依然不会断开) 疑问:按照道理来说DPPU是可以控制usb设备的断开和连接的,已经基本排除了是时钟或者其他的影响,难道是想要让DPPU控制有效还需要其他操作或者条件? (3)我阅读了ST官方提供的USB的代码发现在usb的初始化中并没有对usb使用的两个GPIO做相关初始化,同时如果我在函数一开始就将usb对应的两个引脚初始化为普通IO,那么设备不会在一上电就检测到usb设备,而是在当我开启usb的时候才会发现usb设备。 疑问:是不是一旦USB功能使能,PA11和PA12就会自动设置对应的GPIO属性。那么就回到了问题(1),我有点怀疑问题(2)DPPU没有作用是和GPIO的初始化有关的,但是到底需要如何设置GPIO,请有相关经验的给我点意见建议。 (4)通过实验发现,虽然DPPU不能模拟设备的插拔的过程,但是通过对usb寄存器USB_CNTR的bit1位 PDWN设置,将其设置为1,设备断开连接,将PDWN设置为0则电脑可以发现未识别的设备。 疑问:为什么PDWN会有DPPU的功能,但是DPPU的功能却实现不了? 上面四个问题,是我在调试中遇到的,各位帮忙看一下,如果由之前测试过的代码的请您贴一下,以帮助我尽快找到问题的所在,十分感谢。 |
stm32 USB的CDC类传输掉数据
STM32F105 USB接收数据不断进入中断,出现“死机”现象
关于STM32CubeMX配置的USB例程电脑无法识别问题
STM32F407 USB-HS-OTG是否不外接PHY可以做虚拟串口?
如何做一个USB从机键盘用stm32f407
用STM32F4 Cube MX生成的USB Device C代码的BUG
USB Device + FatFS + SDIO 模拟U盘意外只读问题
USB Device + FatFS + SDIO 问题
STM32H7配置成USB DEVICE时,连接电脑时不进入中断
STM32F446 USB和串口1 冲突
1、USB识别使用检测DP脚和VBUS电平的,而且默认是检测的,当你插入USB的时候,自动识别,但是显示无法识别USB应该是你没有安装驱动
2、http://www.docin.com/p-962729793.html?qq-pf-to=pcqq.c2c 这是我收藏的人家写的资料,2、3两个问题,你自己看看里面的内容,虽然不知道M0和M3在USB上面有什么区别,但是你可以借鉴一下
3、ST有例程,或者你可以去阿莫上面,我记得那里面有人上传相关实现功能的程序,你可以下载参考一下
评分
查看全部评分
1、USB识别使用检测DP脚和VBUS电平的,而且默认是检测的,当你插入USB的时候,自动识别,但是显示无法识别USB应该是你没有安装驱动
2、http://www.docin.com/p-962729793.html?qq-pf-to=pcqq.c2c 这是我收藏的人家写的资料,2、3两个问题,你自己看看里面的内容,虽然不知道M0和M3在USB上面有什么区别,但是你可以借鉴一下
3、ST有例程,或者你可以去阿莫上面,我记得那里面有人上传相关实现功能的程序,你可以下载参考一下
1、STM32模拟u盘,VBUS是默认开着的,即当你插入USB时,会芯片检测到有,会去做识别,http://www.docin.com/p-962729793.html?qq-pf-to=pcqq.c2c 这是我自己收藏的人家写的资料,里面有详细说明
2、第二个问题,我发的那个你仔细看看,里面也有说明了,虽然不知道,M0和M3有什么区别,但是你可以试试
3、如何初始化GPIO,你可以参考ST的例程,或者是网上找一些例程,里面都有初始化的,很简单
4、第四个暂时不确定该怎么回答你。
评分
查看全部评分
十分感谢你提供的固件包,我已经试过了,使用DCD_DevDisconnect(pdev);想要实现usb设备拔出的效果是不行的
评分
查看全部评分
十分感谢你的回答,我测试过了,可以确认boot的电平没有问题,因为我可以正常使用jlink仿真下载,同时因为设别枚举失败,我没法看到具体的设备信息,所以应该不是进入了usb下载状态
我个人觉得应该是可以的,但是没有实际测试过
1、USB识别使用检测DP脚和VBUS电平的,而且默认是检测的,当你插入USB的时候,自动识别,但是显示无法识别USB应该是你没有安装驱动
2、这是我收藏的人家写的资料,2、3两个问题,你自己看看里面的内容,虽然不知道M0和M3在USB上面有什么区别,但是你可以借鉴一下
3、ST有例程,或者你可以去阿莫上面,我记得那里面有人上传相关实现功能的程序,你可以下载参考一下
评分
查看全部评分