Перейти к содержанию
    

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

Пытаюсь оживить двунаправленный аудио 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. Заранее спасибо.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь сталкивался с проблемой?

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем Tarbal

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для 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;
}

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...