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

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

[复制链接]
STMCU小助手 发布时间:2022-7-29 15:15
1 前言 4 v" x5 ~' X, A8 V4 P
本文将针对 STM32F767 的 USB_OTG_FS 模块工作在 Host 模式下的挂起与恢复以及远程唤醒方面的问题进行讨论。
) ~1 C+ v+ M/ ^+ J" P& Y
2 问题描述 ' D& b8 q* m# r. ?( g3 H# J
客户使用 STM32F767 做项目,使用 USB 作为 Host,客户发现 USB 在进入到挂起状态后通过远程唤醒信号并不能将其唤醒。! d# \, H; U4 p! ]1 E
3 问题分析与解决
- a, q! Z6 Z6 T* T5 m0 L' E经过与客户邮件电话沟通发现用户是通过操作寄存器 OTG_HPRT 的 PSUSP,与 PRE 位来实现 USB 总线的挂起与恢复,发现 USB 总线的挂起与恢复会有问题。
) Z( m4 J- Y; @# d, \
3 _3 I( @8 i3 s ]J_WU(ST{5UC]H7GVWPUT~H.png , ^7 Y" O' Q* I

7 d. ~- \7 E5 q6 K' V' b为了重现客户的现象,通过 STM32CubMX 工具基于 NUCLEO-F767 板子上新建一个工程,使 USB 工作在HID HOST 模式下。我们希望 HOST 端主动进入挂起状态后使用另外一块实现了鼠标功能的 STM32F407-DISCOVERY 板子可以发送一个远程唤醒信号来使 USB 总线恢复,从而唤醒 USB 主机。由于当前最
7 B9 k' d8 D. k$ ~( v0 |" z新 F7 的 HAL 库(V1.9.0)(下载页面:http://www.st.com/content/st_com/en/products/embeddedsoftware/mcus-embedded-software/stm32-embedded-software/stm32cube-mcupackages/stm32cubef7.html)针对 HOST 并没有提供挂起与恢复的接口,于是,我们需要自己来实现以下两个功能,并添加到路径< Drivers\STM32F7xx_HAL_Driver\Src>下面的<stm32f7xx_ll_usb.c>中。
$ J' @# l% R, f3 C7 r- F  W- B) x
0 x, }0 G! z, O7 M8 z
# n& v2 T1 V5 [
: d! s+ z! I5 l3 S: W2 e' w于是 HOST 端主动进入挂起的代码实现为:代码操作 HPRT 寄存器的 PSUSP 位,使 USB 进入到挂起状态( ^" T) }) u- T/ z" r- }2 W0 z

- N* L) |+ o- ?8 c

( o; K0 D: n* G8 E
  1. /**8 O! p' s5 l4 k2 ~( r3 m8 t
  2. * @brief Suspend Host Core2 p' X  g+ h1 S, h# u" B
  3. * @param USBx : Selected device; G* R" }! W8 B, _7 {  K5 D
  4. * @retval HAL state! d: D0 u/ `, b+ P  ~. O) L
  5. */
    # y9 ^: z0 F4 Z# e: ~: }, s
  6. HAL_StatusTypeDef USB_SuspendPort(USB_OTG_GlobalTypeDef *USBx)( @/ i" s9 ]/ @0 M
  7. {
    5 L. C) L1 m# U+ Q! Z- }
  8. __IO uint32_t hprt0;4 Z5 v4 g( {: u7 L, Z. s! V) W8 w
  9. hprt0 = USBx_HPRT0;  n  t0 Q+ g0 e. k/ [/ s1 n1 r
  10. hprt0 |= USB_OTG_HPRT_PSUSP;
    2 @, E! t. [" X5 ?
  11. hprt0 &= ~(USB_OTG_HPRT_PRES | USB_OTG_HPRT_PCDET | USB_OTG_HPRT_PENA |
    ( c4 y# \5 C& @, T% _- H" H
  12. USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG);
    0 o2 P- K/ x: m7 ~! g$ w
  13. USBx_HPRT0 = hprt0;6 Y9 C2 P& V/ d" P+ ]7 q/ q- R
  14. return HAL_OK;, D) [' }/ i& O1 S) i1 o7 a
  15. }
复制代码

3 H$ `5 M) K, A# b0 ?7 `. B; [! ?! B7 t, Z

; B- J2 Z* l9 X完整版请查看:附件
1 Z# T0 w# O- D* d& @+ E- H7 v; Y* P5 S, l

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

下载

564.74 KB, 下载次数: 1

赞 收藏 评论0 发布时间:2022-7-29 15:15

举报

0个回答

所属标签

相似技术帖

官网相关资源

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