|
LPC2148 + USB Audio Device + кодек PCM3002, проблемы с выводом - рассинхронизация |
|
|
|
Jan 21 2008, 10:44
|

Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 22-06-06
Из: Киев
Пользователь №: 18 292

|
Сделал я одно устройство типа генератора сигнала - измерения отклика на LPC2148 и кодеке PCM3002. Частота дискретизации определяется внешним кварцевым генератором, сигнал которого подается на таймер-счетчик в LPC2148, он генерирует сигналы для кодека. Кодек подключен к LPC на SPI1 в 16 разрядном режиме. Проект построен на IAR USB Audio Device, он оказался наиболее полным (и ввод, и вывод). Возникла проблема, бьюсь уже несколько недель - генерация сигнала искажается через каждые 20с на 1-2 сек. Увеличение буффера помогает немного - искажения возникают реже, но не исчезают, так как в этом проекте генерация начинается только после заполнения буффера на 2/3. Адаптивный режим (как в исходном проекте) отключил (не устраивает! ), прерывания fiq происходят регулярно синхронно с частотой дискретизации кодека. Подозреваю - причина в том, что скорость поступления данных по USB меньше, чем вывожу в кодек. Искал по форуму (http://electronix.ru/forum/index.php?showtopic=20117&hl=), изучал стандарты - audio10.pdf (с usb.org), пробовал различные режимы - не получается. Может подскажете чего-нибуть, или объясните, как настроить правильно USB дескрипторы и задержки в них , использовать ли синхронный режим? Вот дескрипторы интерфейса 1 - генерация сигнала (Speaker в проекте)
// Interface 1 // AudioStreaming Interface Descriptor // Zero-bandwidth Alternate Setting 0 // Standard AS Interface Descriptor sizeof(UsbStandardInterfaceDescriptor_t), UsbDescriptorInterface, 1, 0, 0, UsbDeviceClassAudio, AUDIOSTREAMING, PR_PROTOCOL_UNDEFINED, 0,
// Operational Alternate Setting 1 // Standard AS Interface Descriptor sizeof(UsbStandardInterfaceDescriptor_t), UsbDescriptorInterface, 1, 1, 1, UsbDeviceClassAudio, AUDIOSTREAMING, PR_PROTOCOL_UNDEFINED, 0,
// Class-specific AS General Interface Descriptor sizeof(UsbClassSpecificASInterfaceDescriptor_t), CS_INTERFACE, AS_GENERAL, SpkInTermID, 2, _2BL(PCM),
// USB Spk Type I Format Type Descriptor sizeof(UsbTypeIFormatTypeDescriptor_t)+ 3, CS_INTERFACE, FORMAT_TYPE, FORMAT_TYPE_I, 1, SubFrameSize, 8*SubFrameSize, 1, (Int8U)(SampFreq),(Int8U)(SampFreq>>8),(Int8U)(SampFreq>>16),
// USB SPK Standard Endpoint Descriptor sizeof(StandardASEndpointDescriptor_t), UsbDescriptorEp, UsbEpOut(SpkEp>>1), // (Int8U)UsbEpTransferIsochronous + (Int8U)UsbEpSynchAdaptive, (Int8U)UsbEpTransferIsochronous + (Int8U)UsbEpSynchAsynchronous, _2BL(SpkEpMaxSize), 1, 0, 0,
// USB SPK Class-specific Isoc. Audio Data Endpoint Descriptor sizeof(ClassSpecASEndpointDescriptor_t), CS_ENDPOINT, EP_GENERAL, 0, 0, _2BL(0),
|
|
|
|
|
 |
Ответов
|
Jan 30 2008, 14:32
|
Местный
  
Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332

|
Цитата(khach @ Jan 30 2008, 18:48)  А что скажете на счет идеи забить на виндовые приколы и ориентироваться на USBASIO? Вроде он универсальный под все профессиональные USB audio устройства. И с синхронизацией и размером данных там проблем нет. Кто-нибудь видел спецификацию протокола, или прийдется устраивать реверс-инжиниринг? Я думаю это ничего не изменит, нас прежде всего ограничивает спецификация USB audio, а не Винда (если действительно в SP2 появилась нормальная поддержка асинхронного режима). Теперь по теме топика. Согласно литературе, для случая когда есть синхронные источник и приемник ( lebiga это Ваш случай, насколько я понял проект), то по идеи хватит того, чтобы и у источника, и у приемника были одинаковые номера точек, но разные направления, и у источника (т.е. Ваш канал записи) в байте аттрибутов значение бит [5:4]=10 (т.е. данные с предоставлением неявной обратной связи). Тогда, согласно спецификации, хост будет определять скорость поступления данных от источника в соответствии с поступлением фактических данных от приемника. Попробуйте, интересно что получится.
|
|
|
|
Сообщений в этой теме
lebiga LPC2148 + USB Audio Device + кодек PCM3002 Jan 21 2008, 10:44 nikkov Цитата(lebiga @ Jan 21 2008, 16:44) Сдела... Jan 23 2008, 08:14 lebiga Цитата(nikkov @ Jan 23 2008, 11:14) На па... Jan 28 2008, 09:18  nikkov Цитата(lebiga @ Jan 28 2008, 15:18) Подде... Jan 30 2008, 04:01   lebiga Цитата(nikkov @ Jan 30 2008, 07:01) Я эти... Jan 30 2008, 08:34    nikkov Цитата(lebiga @ Jan 30 2008, 14:34) Разме... Jan 30 2008, 08:56     lebiga Цитата(nikkov @ Jan 30 2008, 11:56) ...ас... Jan 30 2008, 10:49      nikkov Цитата(lebiga @ Jan 30 2008, 16:49) Спаси... Jan 30 2008, 10:59  lebiga Цитата(nikkov @ Jan 30 2008, 17:32) Я дум... Jan 31 2008, 08:20   nikkov Цитата(lebiga @ Jan 31 2008, 14:20) Не ув... Jan 31 2008, 08:28    lebiga Цитата(nikkov @ Jan 31 2008, 11:28) Так в... Feb 7 2008, 08:54     nikkov Цитата(lebiga @ Feb 7 2008, 14:54) Что-то... Feb 7 2008, 09:12      lebiga Цитата(nikkov @ Feb 7 2008, 12:12) У обеи... Feb 7 2008, 09:23       lebiga А если сделать стерео воспроизведение и запись - к... Feb 11 2008, 11:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|