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

【实战经验】HID与音频冲突问题

[复制链接]
zero99 发布时间:2016-11-18 16:30
前言
Demo 程序中,HID 和 Audio 单独运行都不会有问题,把 HID 和 Audio 整合在一起,同进传送数据时,会出现Audio 不能传送数据的情况。

根本原因

基本情况:
             1. 当增加HID 的传输频率时,这种情况更容易出现。
             2. 当HID 包在帧开始时,不会出现这个问题。
根本原因是相关的参考手册中描述的一个已知的问题。
                      35.13.8 Worst case response time
                      When the OTG_HS controller acts as a device, there is a worst case response time for any
                      tokens that follow an isochronous OUT. This worst case response time depends on the AHB
                      clock frequency.
                      The core registers are in the AHB domain, and the core does not accept another token
                      before updating these register values. The worst case is for any token following an
                      isochronous OUT, because for an isochronous transaction, there is no handshake and the
                      next token could come sooner. This worst case value is 7 PHY clocks when the AHB clock
                      is the same as the PHY clock. When the AHB clock is faster, this value is smaller.
                      If this worst case condition occurs, the core responds to bulk/interrupt tokens with a NAK
                      and drops isochronous and SETUP tokens. The host interprets this as a timeout condition
                      for SETUP and retries the SETUP packet. For isochronous transfers, the Incomplete
                      isochronous IN transfer interrupt (IISOIXFR) and Incomplete isochronous OUT transfer
                     interrupt (IISOOXFR) inform the application that isochronous IN/OUT packets were
                     dropped.
因此,建议在帧开始的时候或帧结束前开始发送HID 数据包。


解决方案:
              1. 在帧开始的时候发送数据。
              2. 在帧80%,85%,90%,95%时发送数据。通过设置
              #define DCFG_FRAME_INTERVAL_80                        0
              #define DCFG_FRAME_INTERVAL_85                        1
              #define DCFG_FRAME_INTERVAL_90                        2
              #define DCFG_FRAME_INTERVAL_95                        3  

              USBx_DEVICE->DCFG |= DCFG_FRAME_INTERVAL_80;


             RM0090
              34.16.4 Device-mode registers
              OTG_FS device configuration register (OTG_FS_DCFG)

                     Bits 12:11 PFIVL: Periodic frame interval
                     Indicates the time within a frame at which the application must be notified using
                     the end of
                     periodic frame interrupt. This can be used to determine if all the isochronous
                     traffic for that
                     frame is complete.
                     00: 80% of the frame interval
                     01: 85% of the frame interval
                     10: 90% of the frame interval
                     11: 95% of the frame interval



HID与音频冲突问题.pdf (74.99 KB, 下载次数: 18)
1 收藏 1 评论2 发布时间:2016-11-18 16:30

举报

2个回答
feixiang20 回答时间:2017-7-1 21:45:03
这些实验的视频介绍比较重要
小白小灰 回答时间:2025-1-15 08:11:56
我也出现这个问题,文章里的处理方法是有 otg 设备的,我的是 stm32f103c8t6,没有 otg,有什么其他解决方法吗?

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版