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

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

[复制链接]
zero99 发布时间:2018-3-27 12:14
1 前言 % Q1 S) R) T( w9 H
本文将针对 STM32F767 的 USB_OTG_FS 模块工作在 Host 模式下的挂起与恢复以及远程唤醒方面的问题进行讨论。
* K: v6 U2 i$ k8 D/ j1 D5 G/ ?
( \9 `) a* I8 H# D5 r; `2 z6 j4 G8 f( M8 L
2 问题描述
9 L2 ~: S# }3 w/ k客户使用 STM32F767 做项目,使用 USB 作为 Host,客户发现 USB 在进入到挂起状态后通过远程唤醒信号并不能将其唤醒。 $ y2 J9 G3 P2 c# x% I5 B) g. e7 V

) p$ g3 M+ ?* H" b
1 {+ e9 q/ Z* I$ m; c% U3 问题分析与解决 ; r1 z" s5 v% S- m% A' ^4 I& S9 i
经过与客户邮件电话沟通发现用户是通过操作寄存器 OTG_HPRT 的 PSUSP,与 PRE 位来实现 USB 总线的挂起与恢复,发现 USB 总线的挂起与恢复会有问题。: p5 d  M$ z- z0 k; L6 Y: `5 N) J3 {
: S" s( v, \. K  k/ r& \
11.png ; B7 j0 e' N( ~( s
- h2 v7 x! u3 M, x. Y
为了重现客户的现象,通过 STM32CubMX 工具基于 NUCLEO-F767 板子上新建一个工程,使 USB 工作在HID HOST 模式下。我们希望 HOST 端主动进入挂起状态后使用另外一块实现了鼠标功能的 STM32F407-DISCOVERY 板子可以发送一个远程唤醒信号来使 USB 总线恢复,从而唤醒 USB 主机。由于当前最新 F7 的 HAL 库(V1.9.0)针对HOST 并没有提供挂起与恢复的接口,于是,我们需要自己来实现以下两个功能,并添加到路径< Drivers\STM32F7xx_HAL_Driver\Src>下面的中。 ' n  I) ?; H' \8 W
于是 HOST 端主动进入挂起的代码实现为:代码操作 HPRT 寄存器的 PSUSP 位,使 USB 进入到挂起状态
+ W& H% F  E' T( o 12.png
) k6 w- r+ F) Z: E' K" n$ Z
  T+ {' {- A' p$ Q8 T+ T下面是 Host 从挂起模式恢复:代码两次操作了 PRES 位,为的是确保操作成功 13.png % K1 Q" R; _: t* e
: Q8 B% O6 ]. T) {
14.png . z  n1 k' [5 L7 \4 R  _, W2 m
  Y( y* d; u; d6 x0 w0 Q4 c3 ]
9 I/ L4 S, G9 }$ M# v; C
那么这样的代码能成功挂起和恢复 USB 总线吗?
6 z, d  S) m- q经过实际测试,如果 HOST 主动调用 USB_SuspendPort 进入挂起状态是可以正常进入的,如果 HOST 自己主动再次调用 USB_ResumePort 恢复的话也可以正常恢复。但是,如果通过接收到远程唤醒信号后,HOST 端被动地在中断内调用 USB_ResumePort 函数来恢复的话则会失败! 同样的操作,放在 OTG_HS 的话又能够正常,但是客户当前使用的是 OTG_FS 来做产品的,看来两个 USB 外设之间还是存在一定的差异性,针对 OTG_FS 的远程唤醒对寄存器操作还是有一定的要求。
3 w2 m7 y9 o9 t/ S* {7 O. \
' U; u$ f0 X& v+ L& z* n经过一番研究与测试,我们最终通过修改后的代码来实现客户的需求:
: m3 V$ H2 a" i7 J) q: g6 s4 R' v& E8 I  t, ^, U# Y+ l
...
$ I/ k( K& Z, R+ l" e* k1 T. X; {) u' {& m9 T
了解更多,请下载后阅读, K6 ]/ s0 {: l

" m+ ^: y+ [! a. X下载地址1>>         下载地址2>>       更多实战经验>>
! @: Q0 e9 Y! ~. q1 I+ [
/ @1 p  U9 h3 L' o; f5 w9 s: I
4 H6 u8 g; Y1 T4 I% x; r
收藏 1 评论0 发布时间:2018-3-27 12:14

举报

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