miraclexue 发表于 2017-12-5 15:49:42

STM32F446 USB和串口1 冲突

本帖最后由 miraclexue 于 2017-12-5 20:05 编辑


http://gg.eefocus.com/www/delivery/lg.php?bannerid=0&campaignid=0&zoneid=462&loc=http%3A%2F%2Fwww.stmcu.org.cn%2Fmodule%2Fforum%2Fforum.php%3Fmod%3Dviewthread%26tid%3D614115%26page%3D1%23pid2303660&referer=http%3A%2F%2Fwww.stmcu.org.cn%2Fmodule%2Fforum%2Fhome.php%3Fmod%3Dspace%26do%3Dnotice%26view%3Dmypost&cb=fee9b3d719

如题,F446配置成USB 设备,然后开启串口1 的DMA发送数据,发现USB模块不断重启。
1、#defineVBUS_SENSING_ENABLED 在固件中已经注释掉
2、固件USB初始化已经将USB强制设置为USB设备模式
以上两步是否可以释放PA9和PA10引脚作为UART1的TX和RX?串口1开启为何会造成USB模块不断重启?
请大神指教!

任风吹吹 发表于 2017-12-5 15:49:43

如果楼主用的是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功能是否真的已经关闭。

miraclexue 发表于 2017-12-5 15:50:59

如题,F446配置成USB 设备,然后开启串口1 的DMA发送数据,发现USB模块不断重启。
1、#defineVBUS_SENSING_ENABLED 在固件中已经注释掉
2、固件USB初始化已经将USB强制设置为USB设备模式
以上两步是否可以释放PA9和PA10引脚作为UART1的TX和RX?串口1开启为何会造成USB模块不断重启?
请大神指教!

星星还是那个星星 发表于 2017-12-5 16:11:59

看大神评论;P

发表于 2017-12-5 16:12:23

楼主串口用的是全串口,还是异步?

miraclexue 发表于 2017-12-5 19:45:43

任风吹吹 发表于 2017-12-5 16:08
如果楼主用的是F1的话我还相信,毕竟我之前有确认过F1存在PA9管脚作为串口或者普通GPIO与USB_VBUS_Pin值冲 ...

你好,感谢这么详细的回复。我用的是std标准库,单步调试GCCFG寄存器的novbussense位确实置1了,这也是我最疑惑的地方。不知道如何下手了。

miraclexue 发表于 2017-12-5 19:46:06

星星还是那个星星 发表于 2017-12-5 16:11
看大神评论

嗯,一起看。

miraclexue 发表于 2017-12-5 19:48:09

安 发表于 2017-12-5 16:12
楼主串口用的是全串口,还是异步?

串口发送用DMA,接收用中断。

发表于 2017-12-6 08:55:52

楼主修改一下,只配置USB的DM和DP,串口使用我看手册全串口时,会和USB有冲突。

miraclexue 发表于 2017-12-6 10:42:25

安 发表于 2017-12-6 08:55
楼主修改一下,只配置USB的DM和DP,串口使用我看手册全串口时,会和USB有冲突。 ...

不好意思,没看懂你的意思,USB DP DM肯定要配置的,然后PA9和PA10配置成串口的收发,单独运行这两个模块都是没问题的,一起运行就不行。另外你在哪个地方看到冲突的?
页: [1] 2
查看完整版本: STM32F446 USB和串口1 冲突