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

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


Частый гость
**

Группа: Свой
Сообщений: 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),
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:24
Рейтинг@Mail.ru


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