Jump to content

    
Sign in to follow this  
Tarbal

stm32f429 Аудио USB не написан обработчик для входных данных

Recommended Posts

Пытаюсь оживить двунаправленный аудио USB на stm32f429. Библиотека куб. Файл usbd_audio.c

Если обработчик выходного потока имеется:

static uint8_t  USBD_AUDIO_DataOut (USBD_HandleTypeDef *pdev, 
                              uint8_t epnum)

то с входным потоком непонятки:

/**
  * @brief  USBD_AUDIO_DataIn
  *         handle data IN Stage
  * @param  pdev: device instance
  * @param  epnum: endpoint index
  * @retval status
  */
static uint8_t  USBD_AUDIO_DataIn (USBD_HandleTypeDef *pdev, 
                              uint8_t epnum)
{

  /* Only OUT data are processed */
  return USBD_OK;
}

 

Кто-нибудь сталкивался с проблемой? Может есть другие библиотеки? В крайнем случае перейду на bulk. Есть mass storage конфигурация. Там уж точно в оба направления работает. Однако непрофессионально звук по bulk гонять. Правильно было бы использовать изохронный обмен. Можно конечно написать недостающий код, но на это и на отладку нет времени. К тому же я недостаточно хорошо знаю USB. Так что придется и на изучение тратить время, а еще писать драйвер на Линуксе -- времени и так в обрез. Так что если не будет найдено библиотеки -- сделаю на bulk. Заранее спасибо.

 

Еще вопрос. Можно ли сделать еще два эндпоинта (туда и обратно) для передачи данных параллельно со звуком?

Share this post


Link to post
Share on other sites
Кто-нибудь сталкивался с проблемой?

Не использовал никакие кубы, наверное поэтому и не сталкивался с проблемой.

Реализовывал изохронные точки (и не раз, в разных проектах) на LPC17xx на базе примеров AudioDevice из IAR - работало нормально. Правда чисто изохронные точки, реализация класса Аудио мне была не нужна. Портировал USB-стек вместе с работой с изохронными точками из этих примеров для LPC17xx на OMAP-L137 переписывая нижний уровень работы с аппаратурой USB - тоже работало прекрасно.

 

Может есть другие библиотеки? В крайнем случае перейду на bulk.

.....и при каждом втыкании какого-либо девайса в соседний USB-разъём, звук Ваш будет рваться.

Share this post


Link to post
Share on other sites

Спасибо. Буду изучать.

 

Устройство специальное и будет работать в специальном оборудовании. Никто не будет туда вставлять USB устройств.

Edited by Tarbal

Share this post


Link to post
Share on other sites
Для SPL есть пример работы с микрофоном: http://we.easyelectronics.ru/STM32/usb-mik...-discovery.html

 

В вашем примере финкция чтения usbd_audio_DataIn имплементирована чего нет в исходной библиотеке:

 

/**
  * @brief  usbd_audio_DataIn
  *         Handles the audio IN data stage.
  * @param  pdev: instance
  * @param  epnum: endpoint number
  * @retval status
  */
//handle request from HOST
static uint8_t  usbd_audio_DataIn (void *pdev, uint8_t epnum)
{

  DCD_EP_Flush(pdev,AUDIO_IN_EP);//very important!!!
  
  if (buffer_ready == 1) {
    DCD_EP_Tx (pdev,AUDIO_IN_EP, (uint8_t*)(RecBuf1), AUDIO_IN_PACKET);//length in words to bytes
  } 
  else {
    DCD_EP_Tx (pdev,AUDIO_IN_EP, (uint8_t*)(RecBuf0), AUDIO_IN_PACKET);//length in words to bytes
  }
  
  STM_EVAL_LEDToggle(LED6);
  return USBD_OK;
}

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this