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

STM32F767的USB工作在HOST模式下的远程唤醒问题

[复制链接]
zero99 发布时间:2018-3-27 12:14
1 前言
; f7 {7 a7 l* |, Q, z% t本文将针对 STM32F767 的 USB_OTG_FS 模块工作在 Host 模式下的挂起与恢复以及远程唤醒方面的问题进行讨论。 1 X, J9 H- i, L
2 h, N. w2 S" K7 ^, h# @
7 d9 T1 W5 N. g0 r8 ~1 c  ?
2 问题描述
- w" e+ @1 ^2 B( }+ x5 N* m! P客户使用 STM32F767 做项目,使用 USB 作为 Host,客户发现 USB 在进入到挂起状态后通过远程唤醒信号并不能将其唤醒。 1 l. G, k  M9 a) y3 Q7 g% w9 x) _
) C. E: x1 g# O! y3 E; q

/ \' ?8 q/ b6 V* o7 K; x$ ^3 问题分析与解决 . `2 [! C# {+ L+ u* F
经过与客户邮件电话沟通发现用户是通过操作寄存器 OTG_HPRT 的 PSUSP,与 PRE 位来实现 USB 总线的挂起与恢复,发现 USB 总线的挂起与恢复会有问题。
. R" z% X4 D: Q6 K2 _
5 ]! I# |$ z/ C% q7 V# D 11.png : h' \2 H1 d4 K: q

4 z+ \5 W$ A! E" ^1 Z0 B为了重现客户的现象,通过 STM32CubMX 工具基于 NUCLEO-F767 板子上新建一个工程,使 USB 工作在HID HOST 模式下。我们希望 HOST 端主动进入挂起状态后使用另外一块实现了鼠标功能的 STM32F407-DISCOVERY 板子可以发送一个远程唤醒信号来使 USB 总线恢复,从而唤醒 USB 主机。由于当前最新 F7 的 HAL 库(V1.9.0)针对HOST 并没有提供挂起与恢复的接口,于是,我们需要自己来实现以下两个功能,并添加到路径< Drivers\STM32F7xx_HAL_Driver\Src>下面的中。 ) d6 s4 _( ^7 }9 M& Y8 U
于是 HOST 端主动进入挂起的代码实现为:代码操作 HPRT 寄存器的 PSUSP 位,使 USB 进入到挂起状态
! m0 h& l; n- \1 Y 12.png 9 M( {8 F8 `/ o1 p! |$ j

2 I! ^5 o$ u% j0 Q' @下面是 Host 从挂起模式恢复:代码两次操作了 PRES 位,为的是确保操作成功 13.png
8 l9 V( x! ?' o$ W1 n- ~1 ~# o' O7 c1 b$ C" z0 ~" N
14.png
8 L! b* B; t' m* y( \4 V" N/ j9 p
9 ]/ }0 B4 K0 J
0 o2 H0 F' t: N那么这样的代码能成功挂起和恢复 USB 总线吗?
* P3 S0 G1 j2 E7 G5 e经过实际测试,如果 HOST 主动调用 USB_SuspendPort 进入挂起状态是可以正常进入的,如果 HOST 自己主动再次调用 USB_ResumePort 恢复的话也可以正常恢复。但是,如果通过接收到远程唤醒信号后,HOST 端被动地在中断内调用 USB_ResumePort 函数来恢复的话则会失败! 同样的操作,放在 OTG_HS 的话又能够正常,但是客户当前使用的是 OTG_FS 来做产品的,看来两个 USB 外设之间还是存在一定的差异性,针对 OTG_FS 的远程唤醒对寄存器操作还是有一定的要求。 ; J0 V/ {3 C# i7 t
+ v7 x4 d( I/ h3 Z- m6 ~
经过一番研究与测试,我们最终通过修改后的代码来实现客户的需求:
5 u6 V* k: R0 W  x3 l6 i5 k) N% C( K) N9 y  c. r. h1 Q
...
" N4 E; j% g) ^' ]! ?: z$ @6 m+ K. L/ W% o/ S, r, c
了解更多,请下载后阅读* _- h1 d5 ?( Z# A2 H! k$ E
7 l+ r9 X' c+ A0 I* E# r. x/ w. _
下载地址1>>         下载地址2>>       更多实战经验>>
- M! }. d  Y, e1 K! l. F6 g) g& k" `. A9 `* F% |
: E0 N/ t  Q  E6 z; e: X
赞 收藏 1 评论0 发布时间:2018-3-27 12:14

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版