Tarbal 4 11 ноября, 2015 Опубликовано 11 ноября, 2015 · Жалоба Пытаюсь оживить двунаправленный аудио 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 184 11 ноября, 2015 Опубликовано 11 ноября, 2015 · Жалоба Кто-нибудь сталкивался с проблемой? Не использовал никакие кубы, наверное поэтому и не сталкивался с проблемой. Реализовывал изохронные точки (и не раз, в разных проектах) на LPC17xx на базе примеров AudioDevice из IAR - работало нормально. Правда чисто изохронные точки, реализация класса Аудио мне была не нужна. Портировал USB-стек вместе с работой с изохронными точками из этих примеров для LPC17xx на OMAP-L137 переписывая нижний уровень работы с аппаратурой USB - тоже работало прекрасно. Может есть другие библиотеки? В крайнем случае перейду на bulk. .....и при каждом втыкании какого-либо девайса в соседний USB-разъём, звук Ваш будет рваться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iliasam 0 11 ноября, 2015 Опубликовано 11 ноября, 2015 · Жалоба Для SPL есть пример работы с микрофоном: http://we.easyelectronics.ru/STM32/usb-mik...-discovery.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 11 ноября, 2015 Опубликовано 11 ноября, 2015 (изменено) · Жалоба Спасибо. Буду изучать. Устройство специальное и будет работать в специальном оборудовании. Никто не будет туда вставлять USB устройств. Изменено 11 ноября, 2015 пользователем Tarbal Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 11 ноября, 2015 Опубликовано 11 ноября, 2015 · Жалоба Для 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; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться