打印
[STM32F0]

stm32F072 USB内部上拉电阻软件控制不了

[复制链接]
1805|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
散吧散吧|  楼主 | 2017-9-10 08:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在学习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的功能却实现不了?

上面四个问题,是我在调试中遇到的,各位帮忙看一下,如果由之前测试过的代码的请您贴一下,以帮助我尽快找到问题的所在,十分感谢。
沙发
散吧散吧|  楼主 | 2017-9-13 22:05 | 只看该作者
感谢上面的坛友的热心帮助,不能控制的原因找到了,因为买的最小系统板子为了兼容stm32f103系类,所以默认外部接了上拉电阻,我是没有仔细检查。

使用特权

评论回复
板凳
xiaoyaozt| | 2017-9-13 22:50 | 只看该作者
散吧散吧 发表于 2017-9-13 22:05
感谢上面的坛友的热心帮助,不能控制的原因找到了,因为买的最小系统板子为了兼容stm32f103系类,所以默认 ...

使用特权

评论回复
地板
xiaoyaozt| | 2017-9-13 22:52 | 只看该作者
散吧散吧 发表于 2017-9-13 22:05
感谢上面的坛友的热心帮助,不能控制的原因找到了,因为买的最小系统板子为了兼容stm32f103系类,所以默认 ...

上拉电阻不能选择太小的电阻。

使用特权

评论回复
5
宇智波大表哥| | 2017-9-14 08:51 | 只看该作者
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

使用特权

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

本版积分规则

1

主题

2

帖子

1

粉丝