Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: stm32f429 Аудио USB не написан обработчик для входных данных
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Tarbal
Пытаюсь оживить двунаправленный аудио 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. Заранее спасибо.

Еще вопрос. Можно ли сделать еще два эндпоинта (туда и обратно) для передачи данных параллельно со звуком?
jcxz
Цитата(Tarbal @ Nov 11 2015, 07:53) *
Кто-нибудь сталкивался с проблемой?

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

Цитата(Tarbal @ Nov 11 2015, 07:53) *
Может есть другие библиотеки? В крайнем случае перейду на bulk.

.....и при каждом втыкании какого-либо девайса в соседний USB-разъём, звук Ваш будет рваться.
iliasam
Для SPL есть пример работы с микрофоном: http://we.easyelectronics.ru/STM32/usb-mik...-discovery.html
Tarbal
Спасибо. Буду изучать.

Устройство специальное и будет работать в специальном оборудовании. Никто не будет туда вставлять USB устройств.
Tarbal
Цитата(iliasam @ Nov 11 2015, 08:46) *
Для 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;
}


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.