реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> stm32f429 Аудио USB не написан обработчик для входных данных
Tarbal
сообщение Nov 11 2015, 01:53
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



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

Еще вопрос. Можно ли сделать еще два эндпоинта (туда и обратно) для передачи данных параллельно со звуком?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Nov 11 2015, 03:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Tarbal @ Nov 11 2015, 07:53) *
Кто-нибудь сталкивался с проблемой?

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

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

.....и при каждом втыкании какого-либо девайса в соседний USB-разъём, звук Ваш будет рваться.
Go to the top of the page
 
+Quote Post
iliasam
сообщение Nov 11 2015, 05:46
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 30-11-08
Пользователь №: 42 101



Для SPL есть пример работы с микрофоном: http://we.easyelectronics.ru/STM32/usb-mik...-discovery.html
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 11 2015, 12:44
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



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

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

Сообщение отредактировал Tarbal - Nov 11 2015, 14:00
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 11 2015, 16:48
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(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;
}


Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016