你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F446 USB和串口1 冲突

[复制链接]
miraclexue 提问时间:2017-12-5 15:49 /
5ST金币
本帖最后由 miraclexue 于 2017-12-5 20:05 编辑



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

最佳答案

查看完整内容

如果楼主用的是F1的话我还相信,毕竟我之前有确认过F1存在PA9管脚作为串口或者普通GPIO与USB_VBUS_Pin值冲突的,原因是芯片内部没有multiplexer,但是在F4中这个multiplexer是存在的,也就是说,在USB外设关闭VBUS功能的情况下,PA9管脚完全是可以作为其他功能如串口或者GPIO来用,这个我之前也验证过。至于PA10,完全与VBUS功能无关,VBUS功能的关闭之会释放PA9管脚而已。 因此,楼主的问题极有可能是VBUS功能并没有真正关闭,楼 ...

评分

参与人数 1 ST金币 -1 收起 理由
zero99 -1 发帖请把背景格式去除,方便大家浏览.

查看全部评分

收藏 评论17 发布时间:2017-12-5 15:49

举报

17个回答
任风吹吹 回答时间: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功能是否真的已经关闭。

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5

查看全部评分

miraclexue 回答时间:2017-12-5 15:50:59
如题,F446配置成USB 设备,然后开启串口1 的DMA发送数据,发现USB模块不断重启。
1、#define  VBUS_SENSING_ENABLED 在固件中已经注释掉
2、固件USB初始化已经将USB强制设置为USB设备模式
以上两步是否可以释放PA9和PA10引脚作为UART1的TX和RX?串口1开启为何会造成USB模块不断重启?
请大神指教!
星星还是那个星星 回答时间:2017-12-5 16:11:59
看大神评论

评分

参与人数 1ST金币 -1 收起 理由
zero99 -1 求助帖不要灌水哦

查看全部评分

废鱼 回答时间: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

嗯,一起看。
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配置成串口的收发,单独运行这两个模块都是没问题的,一起运行就不行。另外你在哪个地方看到冲突的?
废鱼 回答时间:2017-12-6 10:55:46
楼主,看一下红色圈标注的。如果USB VBUS配置的话有会影响,这个引脚可以不进行配置。串口方面要考虑是否进行了CTS和RTS的配置。



截图_1.png

任风吹吹 回答时间:2017-12-6 11:09:42
miraclexue 发表于 2017-12-5 19:45
你好,感谢这么详细的回复。我用的是std标准库,单步调试GCCFG寄存器的novbussense位确实置1了,这也是我 ...

楼主可以先不使用PA9管脚,在使用USB的情况下并且关闭VBUS_SENSING功能的情况下,将PA9管脚设为GPIO输出试试,测试下toggle PA9管脚会不会引起USB复位?通过这种测试PA9管脚是否能独立正常工作。PA10先不急着用,等测试结果出来后再看。

如果PA9会引起复位,就得找你的代理帮忙看。
如果不会,那么就是你串口设置本身可能存在问题,检查串口设置,串口使用了那些管脚,与USB管脚有无冲突?

评分

参与人数 1ST金币 +2 收起 理由
miraclexue + 2 很给力!

查看全部评分

miraclexue 回答时间:2017-12-6 19:46:19
安 发表于 2017-12-6 10:55
楼主,看一下红色圈标注的。如果USB VBUS配置的话有会影响,这个引脚可以不进行配置。串口方面要考虑是否进 ...

串口1的硬件流控制是None,没有配置,但是串口1和PA9这个确实有影响。
做了以下实验:
PA9配置成输入IO口,USB正常
PA9配置成输出IO口,USB失效(默认低电平?)
PA9配置成输出IO口:
PA9置为高电平,USB正常
PA9置为低电平,USB失效
目前看来PA9貌似是低电平,USB就失效。但是VUSSENSing已经关闭,难道不起作用吗?
miraclexue 回答时间:2017-12-6 19:47:48
任风吹吹 发表于 2017-12-6 11:09
楼主可以先不使用PA9管脚,在使用USB的情况下并且关闭VBUS_SENSING功能的情况下,将PA9管脚设为GPIO输出 ...

按照你说的做了以下实验:
PA9配置成输入IO口,USB正常
PA9配置成输出IO口,USB失效(默认低电平?)
PA9配置成输出IO口:
PA9置为高电平,USB正常
PA9置为低电平,USB失效
目前看来PA9貌似是低电平,USB就失效。但是VUSSENSing已经关闭,难道不起作用吗?
任风吹吹 回答时间:2017-12-7 10:01:51
miraclexue 发表于 2017-12-6 19:47
按照你说的做了以下实验:
PA9配置成输入IO口,USB正常
PA9配置成输出IO口,USB失效(默认低电平?)

刚好手上又快STM32F446-NUCLEO板子,使用HAL库测试了下,没有你所说的现象(测试代码只是简单地将PA9管脚toggle测试USB是否有复位现象),楼主用链接中我给的代码测试下吧,如果你那边还出现USB复位问题,那么就得检查的自己的代码和电路了,除非你将代码和MCU部分原理图贴出来,别人是很难帮到你的。

测试代码链接:https://pan.baidu.com/s/1geWQEif

注:测试代码中时钟树可能跟你实际有所不同,测试代码中使用的外部8M HSE by-Pass模式,你需要根据实际进行调整。

评分

参与人数 1ST金币 +2 收起 理由
miraclexue + 2 很给力!

查看全部评分

12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版