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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版