完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
如题,F446配置成USB 设备,然后开启串口1 的DMA发送数据,发现USB模块不断重启。 1、#define VBUS_SENSING_ENABLED 在固件中已经注释掉 2、固件USB初始化已经将USB强制设置为USB设备模式 以上两步是否可以释放PA9和PA10引脚作为UART1的TX和RX?串口1开启为何会造成USB模块不断重启? 请大神指教! [/tr] |
|
相关推荐
15个回答
|
|
如果楼主用的是F1的话我还相信,毕竟我之前有确认过F1存在PA9管脚作为串口或者普通GPIO与USB_VBUS_Pin值冲突的,原因是芯片内部没有multiplexer,但是在F4中这个multiplexer是存在的,也就是说,在USB外设关闭VBUS功能的情况下,PA9管脚完全是可以作为其他功能如串口或者GPIO来用,这个我之前也验证过。至于PA10,完全与VBUS功能无关,VBUS功能的关闭之会释放PA9管脚而已。
因此,楼主的问题极有可能是VBUS功能并没有真正关闭,楼主用的是标准库还是HAL库?在我的印象中在HAL库中是没有这个VBUS_SENSING_ENABLED宏的,楼主最好的方法是在USB初始过后检查VBUS_SENSEING对应的寄存器的值来确定VBUS功能是否真的已经关闭。 |
|
|
|
如题,F446配置成USB 设备,然后开启串口1 的DMA发送数据,发现USB模块不断重启。
1、#define VBUS_SENSING_ENABLED 在固件中已经注释掉 2、固件USB初始化已经将USB强制设置为USB设备模式 以上两步是否可以释放PA9和PA10引脚作为UART1的TX和RX?串口1开启为何会造成USB模块不断重启? 请大神指教! |
|
|
|
看大神评论
|
|
|
|
楼主串口用的是全串口,还是异步?
|
|
|
|
充电搜索 发表于 2019-4-25 11:43 你好,感谢这么详细的回复。我用的是std标准库,单步调试GCCFG寄存器的novbussense位确实置1了,这也是我最疑惑的地方。不知道如何下手了。 |
|
|
|
|
|
|
|
|
|
|
|
楼主修改一下,只配置USB的DM和DP,串口使用我看手册全串口时,会和USB有冲突。
|
|
|
|
不好意思,没看懂你的意思,USB DP DM肯定要配置的,然后PA9和PA10配置成串口的收发,单独运行这两个模块都是没问题的,一起运行就不行。另外你在哪个地方看到冲突的? |
|
|
|
|
|
|
|
lining870815844 发表于 2019-4-25 12:31 楼主可以先不使用PA9管脚,在使用USB的情况下并且关闭VBUS_SENSING功能的情况下,将PA9管脚设为GPIO输出试试,测试下toggle PA9管脚会不会引起USB复位?通过这种测试PA9管脚是否能独立正常工作。PA10先不急着用,等测试结果出来后再看。 如果PA9会引起复位,就得找你的代理帮忙看。 如果不会,那么就是你串口设置本身可能存在问题,检查串口设置,串口使用了那些管脚,与USB管脚有无冲突? |
|
|
|
串口1的硬件流控制是None,没有配置,但是串口1和PA9这个确实有影响。 做了以下实验: PA9配置成输入IO口,USB正常 PA9配置成输出IO口,USB失效(默认低电平?) PA9配置成输出IO口: PA9置为高电平,USB正常 PA9置为低电平,USB失效 目前看来PA9貌似是低电平,USB就失效。但是VUSSENSing已经关闭,难道不起作用吗? |
|
|
|
充电搜索 发表于 2019-4-25 13:51 按照你说的做了以下实验: PA9配置成输入IO口,USB正常 PA9配置成输出IO口,USB失效(默认低电平?) PA9配置成输出IO口: PA9置为高电平,USB正常 PA9置为低电平,USB失效 目前看来PA9貌似是低电平,USB就失效。但是VUSSENSing已经关闭,难道不起作用吗? |
|
|
|
刚好手上又快STM32F446-NUCLEO板子,使用HAL库测试了下,没有你所说的现象(测试代码只是简单地将PA9管脚toggle测试USB是否有复位现象),楼主用链接中我给的代码测试下吧,如果你那边还出现USB复位问题,那么就得检查的自己的代码和电路了,除非你将代码和MCU部分原理图贴出来,别人是很难帮到你的。 测试代码链接:https://pan.baidu.com/s/1geWQEif 注:测试代码中时钟树可能跟你实际有所不同,测试代码中使用的外部8M HSE by-Pass模式,你需要根据实际进行调整。 |
|
|
|
充电搜索 发表于 2019-4-25 14:42 非常感谢您的回复和提供的代码,经过咨询代理,找到了问题所在: 1、标准库中的USB库对于关闭VBUS有缺陷,要关闭VBUS,除了关闭VBUSSENSING以外,还需要自己添加对GOTGCTL寄存器的第6位和第7位的设置(HAL库例程里面有) 2、HAL库没有这个问题 3、建议以后用HAL库 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2162 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1997 浏览 3 评论
4593 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2140 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2659 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 08:45 , Processed in 0.997447 second(s), Total 101, Slave 85 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号