请问usb发送数据 同步音频 出现一帧数据 一帧空包是什么原因了

2019-08-17 05:11发布

本帖最后由 jery99 于 2017-6-27 12:56 编辑

大家好。我的103 代码是从 f072上移植过来的。现在出现 一帧数据 一帧空包的情况,发数据的时候。请问有人知道原因吗。我上传一个demo 大家帮我分析下 ,一起学习交流
部分配置:
    1. 中断
void USB_HP_CAN1_TX_IRQHandler(void)
{
          HAL_PCD_IRQHandler(&hpcd);
}

void USB_LP_CAN1_RX0_IRQHandler(void)
{

  HAL_PCD_IRQHandler(&hpcd);

}


2. USB 端点配置  pmabuffer  
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev)
{
  /* Set LL Driver parameters */
  hpcd.Instance = USB;
  hpcd.Init.dev_endpoints = 3;
  hpcd.Init.ep0_mps = 0x40;
  hpcd.Init.phy_itface = PCD_PHY_EMBEDDED;
  hpcd.Init.speed = PCD_SPEED_FULL;
  hpcd.Init.low_power_enable = 0;
  /* Link The driver to the stack */
  hpcd.pData = pdev;
  pdev->pData = &hpcd;
  /* Initialize LL Driver */


   HAL_PCD_Init(&hpcd);

HAL_PCDEx_PMAConfig(pdev->pData , 0x00 , PCD_SNG_BUF, 0x18);
  HAL_PCDEx_PMAConfig(pdev->pData , 0x80 , PCD_SNG_BUF, 0x58);
HAL_PCDEx_PMAConfig(pdev->pData , 0x81 , PCD_DBL_BUF, 0x009800d8);  // 这里是双缓冲

  return USBD_OK;
}


端点描述符配置
/* Endpoint 1 - Standard Descriptor */
  USBD_AUDIO_CfgDesc[index++] =  AUDIO_STANDARD_ENDPOINT_DESC_SIZE;            /* bLength */
  USBD_AUDIO_CfgDesc[index++] = 0x05;                                          /* bDescriptorType */
  USBD_AUDIO_CfgDesc[index++] = AUDIO_IN_EP;                                   /* bEndpointAddress 1 in endpoint*/
  USBD_AUDIO_CfgDesc[index++] = 0x05;                                          /* bmAttributes */
  USBD_AUDIO_CfgDesc[index++] =   ((samplingFrequency/1000+2)*Channels*2)&0xFF;  /* wMaxPacketSize */
  USBD_AUDIO_CfgDesc[index++] =  ((samplingFrequency/1000+2)*Channels*2)>>8;
  USBD_AUDIO_CfgDesc[index++] = 0x01;                                          /* bInterval */
  USBD_AUDIO_CfgDesc[index++] = 0x00;                                          /* bRefresh */
  USBD_AUDIO_CfgDesc[index++] = 0x00;                                          /* bSynchAddress */   


出现丢包现象。 附件是图片  抓包出来的
源码我也上传了









0条回答

一周热门 更多>