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

STM32 USB Audio疑问

[复制链接]
leiyijing 提问时间:2017-5-23 18:54 /
这几天在搞USB的声卡,用的是STM32F103ZET6,用的是Hal库生成的代码,I2S2 DMA方式输出,有以下问题,声音有,但是噪声很大,而且USB数据暂停后,I2S2上还是有数据在不停的发,感觉是USB库哪里有问题,接收看过了应该是没有问题的,就是这个同步传输的问题,红色部分,为什么每次都是从haudio->buffer[0]开始,而且长度还是固定,haudio->rd_ptr这个指针没什么作用嘛。。搞来搞去的,理论上应该是USB循环队列的读指针,但是没有起到作用,下面的函数是DMA传输完回调调用的,感觉只要这样调下去,数据永远都停止不了,I2S上肯定永远都有数据,而且只能取到前半个Buffer的长度,后半部分,永远都取不到。。不知道有没有兄弟对下面函数有什么想法?还是我应用错了?

void  USBD_AUDIO_Sync (USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset)
{
  int8_t shift = 0;
  USBD_AUDIO_HandleTypeDef   *haudio;
  haudio = (USBD_AUDIO_HandleTypeDef*) pdev->pClassData;

  haudio->offset =  offset;


  if(haudio->rd_enable == 1)
  {
    haudio->rd_ptr += AUDIO_TOTAL_BUF_SIZE/2;

    if (haudio->rd_ptr == AUDIO_TOTAL_BUF_SIZE)
    {
      /* roll back */
      haudio->rd_ptr = 0;
    }
  }

  if(haudio->rd_ptr > haudio->wr_ptr)
  {
    if((haudio->rd_ptr - haudio->wr_ptr) < AUDIO_OUT_PACKET)
    {
      shift = -4;
    }
    else if((haudio->rd_ptr - haudio->wr_ptr) > (AUDIO_TOTAL_BUF_SIZE - AUDIO_OUT_PACKET))
    {
      shift = 4;
    }   

  }
  else
  {
    if((haudio->wr_ptr - haudio->rd_ptr) < AUDIO_OUT_PACKET)
    {
      shift = 4;
    }
    else if((haudio->wr_ptr - haudio->rd_ptr) > (AUDIO_TOTAL_BUF_SIZE - AUDIO_OUT_PACKET))
    {
      shift = -4;
    }  
  }

  if(haudio->offset == AUDIO_OFFSET_FULL)
  {
    ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->AudioCmd(&haudio->buffer[0],
                                                         AUDIO_TOTAL_BUF_SIZE/2 - shift,
                                                         AUDIO_CMD_PLAY);
      haudio->offset = AUDIO_OFFSET_NONE;           
  }
}


收藏 1 评论3 发布时间:2017-5-23 18:54

举报

3个回答
leiyijing 回答时间:2017-5-25 09:50:02
没人知道?
遇见123 回答时间:2017-6-7 16:15:22
你的问题解决了吗 我的出现播放速度加快和噪音
leiyijing 回答时间:2017-6-7 17:42:52
天空123456 发表于 2017-6-7 16:15
你的问题解决了吗 我的出现播放速度加快和噪音

没有。。没搞了。。。

所属标签

相似问题

官网相关资源

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