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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F4xx Isochronous Feedback, Обратная связь для асихронной EP, нет запроса на чтение FB EP
Left Radio
сообщение Oct 2 2013, 00:29
Сообщение #1


Участник
*

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



Собственно вопрос вот в чем, пытаюсь запустить асинхронный режим с явной обратной связью через feedback EP, естественно начал с изучения примеров и стандарта, вроде все получилось, устройство определяется, USBlyzer-ом вижу что идут OUT пакеты, а IN нет, хост время от времени делает URB Sync Reset Pipe and Clear Stall (success), затем идет, как я понял задержанная, передача URB Isoch Transfer (issued) и по завершению, после передачи OUT пакета, по IN - 0 bytes data. При этом никаких прерываний по FB EP не происходит sad.gif
Вот я никак и не могу понять как мне собственно передать 3 байтный FB пакет на хост. Использую STM OTG Driver 2.1 и переделанный ихний же пример USB аудио. Контрольную точку для явной обратной связи в дескрипторе описал уверен что правильно, но так и не могу дождаться epin прерывания по этой точке, по нулевой (при конфигурации) прерывания происходят как при out, так и при in пакетах. Возможно кто то сталкивался, или делал что то похожее, помогите плиз, или подскажите куда копать, уже 4 день не могу заставить работать.

Пробовал при инициализации передать по feedback EP:
Код
static uint8_t  usbd_audio_Init (void  *pdev, uint8_t cfgidx)
{  
    /* Open EP OUT/IN */
    DCD_EP_Open(pdev, AUDIO_OUT_EP, AUDIO_OUT_PACKET, USB_OTG_EP_ISOC);
    DCD_EP_Open(pdev, AUDIO_IN_EP, AUDIO_IN_PACKET, USB_OTG_EP_ISOC);
    
        DCD_EP_Tx (pdev, AUDIO_IN_EP, bufs, 3);
        
    /* Initialize the Audio output Hardware layer */
    if (AUDIO_OUT_fops.Init(USBD_AUDIO_FREQ, DEFAULT_VOLUME, 0) != USBD_OK){ return USBD_FAIL; }

    /* Prepare Out endpoint to receive audio data */
    DCD_EP_PrepareRx(pdev, AUDIO_OUT_EP, (uint8_t*)IsocOutBuff, AUDIO_OUT_PACKET);

    return USBD_OK;
}

Еще хуже, устройство перестает работать, хотя и по прежнему определяется правильно.

Вот дескрипторы:
CODE

/* Configuration 1 */
0x09, /* bLength */
USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType */
LOBYTE(AUDIO_CONFIG_DESC_SIZE), /* wTotalLength 118 bytes*/
HIBYTE(AUDIO_CONFIG_DESC_SIZE),
0x02, /* bNumInterfaces */
0x01, /* bConfigurationValue */
0x00, /* iConfiguration */
0xC0, /* bmAttributes BUS Powred*/
0x32, /* bMaxPower = 100 mA*/
/* 09 byte*/

/* USB Speaker Standard interface descriptor */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x00, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
0x00, /* bNumEndpoints */
USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */
AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
0x00, /* iInterface */
/* 09 byte*/

/* USB Speaker Class-specific AC Interface Descriptor */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */
0x00, /* 1.00 */ /* bcdADC */
0x01,
0x27, /* wTotalLength = 39*/
0x00,
0x01, /* bInCollection */
0x01, /* baInterfaceNr */
/* 09 byte*/

/* USB Speaker Input Terminal Descriptor */
AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */
0x01, /* bTerminalID */
0x01, /* wTerminalType AUDIO_TERMINAL_USB_STREAMING 0x0101 */
0x01,
0x00, /* bAssocTerminal */
0x02, /* bNrChannels */
0x03, /* wChannelConfig 0x0003 - Left&Right; 0x0000 - Mono; 0x0004 - FrontCenter */
0x00,
0x00, /* iChannelNames */
0x00, /* iTerminal */
/* 12 byte*/

/* USB Speaker Audio Feature Unit Descriptor */
0x09, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */
AUDIO_OUT_STREAMING_CTRL, /* bUnitID */
0x01, /* bSourceID */
0x01, /* bControlSize */
AUDIO_CONTROL_MUTE, /* bmaControls(0) */
0x00, /* bmaControls(1) */
0x00, /* iTerminal */
/* 09 byte*/

/*USB Speaker Output Terminal Descriptor */
0x09, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */
0x03, /* bTerminalID */
0x02, /* wTerminalType 0x0302, headphones*/
0x03,
0x00, /* bAssocTerminal */
0x02, /* bSourceID */
0x00, /* iTerminal */
/* 09 byte*/

/* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
/* Interface 1, Alternate Setting 0 */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x01, /* bInterfaceNumber */
0x00, /* bAlternateSetting */
0x00, /* bNumEndpoints */
USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
0x00, /* iInterface */
/* 09 byte*/

/* USB Speaker Standard AS Interface Descriptor - Audio Streaming Operational */
/* Interface 1, Alternate Setting 1 */
AUDIO_INTERFACE_DESC_SIZE, /* bLength */
USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
0x01, /* bInterfaceNumber */
0x01, /* bAlternateSetting */
0x02, /* bNumEndpoints */
USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
0x00, /* iInterface */
/* 09 byte*/

/* USB Speaker Audio Streaming Interface Descriptor */
AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */
0x01, /* bTerminalLink */
0x00, /* bDelay */
0x01, /* wFormatTag AUDIO_FORMAT_PCM 0x0001*/
0x00,
/* 07 byte*/

/* USB Speaker Audio Type I Format Interface Descriptor */
0x0B, /* bLength */
AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */
AUDIO_FORMAT_TYPE_I, /* bFormatType */
0x02, /* bNrChannels */
AUDIO_FRAME_SIZE, /* bSubFrameSize; bytes per frame */
AUDIO_BITRESOLUTION, /* bBitResolution; bits per sample */
0x01, /* bSamFreqType only one frequency supported */
SAMPLE_FREQ(USBD_AUDIO_FREQ), /* Audio sampling frequency coded on 3 bytes */
/* 11 byte*/


/* Endpoint 1 - Standard Descriptor */
AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_OUT_EP, /* bEndpointAddress 1 out endpoint, 0х01*/
USB_ENDPOINT_TYPE_ISOCHRONOUS | (1<<2), /* bmAttributes, isochronus, async */
AUDIO_PACKET_SZE(USBD_AUDIO_FREQ), /* wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */
0x01, /* bInterval */
0x01, /* bRefresh */
AUDIO_IN_EP, /* bSynchAddress */
/* 09 byte*/

/* Endpoint - Audio Streaming Descriptor*/
AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */
AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_ENDPOINT_GENERAL, /* bDescriptor */
0x00, /* bmAttributes, default 0x00 */
0x00, /* bLockDelayUnits */
0x00, /* wLockDelay */
0x00,
/* 07 byte*/


/* Endpoint 2 - Standard Descriptor, FB */
AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
AUDIO_IN_EP, /* bEndpointAddress 2, in FB endpoint, 0х81*/
USB_ENDPOINT_TYPE_ISOCHRONOUS|(1<<4), /* bmAttributes, feedback endpoint(explict) */
0x03, 0x00, /* wMaxPacketSize in Bytes */
0x01, /* bInterval */
0x05, /* bRefresh */
0x00, /* bSynchAddress */
/* 09 byte*/


Сообщение отредактировал Left Radio - Oct 2 2013, 00:41
Go to the top of the page
 
+Quote Post
controller_m30
сообщение Oct 2 2013, 08:20
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 24-02-09
Пользователь №: 45 309



А что такое feedback EP? Это просто EndPoint1...7, или что-то особенное?
Ещё не очень понятно, зачем для передачи 3 байт затевать изохронную передачу данных как для потока аудио-видео?
Если изохронная передача к Хосту здесь не обязательная, то вот мои соображения.

У меня на столе USB-колонки, с 3 кнопками (+, -, mute), USBlizer говорит что это устройство HID и т.д.
Если с компьютера запустить музыку - то будут только пакеты OUT. Хоть 1 минуту, хоть 10 минут. Также и звуки сопровождающие открытие/закрытие окон, или программ - вызывают только пакеты OUT.
Также в начале каждого нового трека происходит "Sync Reset Pipe and Clear Stall"
Пакеты IN появляются только при нажатии кнопок на колонках.

Когда передаётся музыка в колонки (пакеты OUT) - USBlizer пишет что это "Isoch Transfer".
А когда происходит прерывание от кнопок (пакеты IN) - пишет что это "Bulk or Interrupt Transfer"

EndPoint-ов всего 2: OUT1 и IN2. Указано что OUT1 - это Isochronus, а IN2 - это Interrupt.



Судя по описанию IN-дескриптора, Хост каждые 10мс опрашивает Device, но в USBlizer эти запросы не отражены. Но т.к. в потоке пакетов при нажатии на кнопку появляются Interrupt-пакеты - значит Хост всё-же опрашивает Device.

Наверное надо переделать дескриптор IN2 по типу Interrupt (а не Isochronus как сейчас), и при наличии данных для Хоста записывать эти данные в EP2_IN. А когда Хост в очередной раз опросит EP2_IN, то он получит ACK и данные. А при отсутствии данных - будет получать NACK.
http://microsin.ru/content/view/1107/44/ - тут есть про "Передачи Interrupt".

Сообщение отредактировал controller_m30 - Oct 2 2013, 09:16
Go to the top of the page
 
+Quote Post
ig_z
сообщение Oct 2 2013, 09:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Left Radio @ Oct 2 2013, 03:29) *
Возможно кто то сталкивался, или делал что то похожее, помогите плиз, или подскажите куда копать, уже 4 день не могу заставить работать.

Вот часть моего дескриптора. Я вижу разницу в поле bRefresh.
CODE
/* Endpoint, EP3 ISO OUT - Standard Descriptor */\
  AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */\
  USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType */\
  ADC_DATA_O_EP_LOG,               /* bEndpointAddress */\
  EP_ISO_OUT_ATTRIB,                 /* bmAttributes */\
  WBVAL(SAMPL_PER_FRAME_48 * SubFrameSize * 2), /* wMaxPacketSize */\
  0x01,                              /* bInterval */\
  0x00,                              /* bRefresh */\
  ADC_DATA_OUT_EP_SYNC_ADDR,         /* bSynchAddress */\


Тестил под вин7 только.
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 2 2013, 12:20
Сообщение #4


Участник
*

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



controller_m30, interrupt и/или bulk передачи сдесь нипричем, стандарт на USB допускает 4 вида синхронизации изохронных передач:
None; Asynchronous; Syncrhonous; Adaptive. Ваши клонки работают в Adaptive, то есть подстравают свою частоту под часоту SOF пакетов USB, мне такой режим, к сожалению, неподходит, так как устройство должно работать от внешнего такта, который нельзя подстроить исходя из частоты SOF пакетов. Feedback Endpoint это обычная конечная точка, работающая в обратном направлении с конечной точкой передачи аудиоданных, она дожна быть обьявлена как изохронная и в поле bmAttributes, в битах [5:4], должно быть 10, что указывает на использование этой конечной токи для явной обратной связи. А HID в Ваших колонках совсем для другого, это просто управление.

ig_z, спасибо, я смотрел исходники sdr-widget, там поле bRefresh было как у меня. Я пробовал ставить 0, но эффекта ноль, каким образом Вы отправляете данные обратной сязи? Получаете прерываие по INEP?

Сообщение отредактировал Left Radio - Oct 2 2013, 23:37
Go to the top of the page
 
+Quote Post
ig_z
сообщение Oct 2 2013, 13:38
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Left Radio @ Oct 2 2013, 15:20) *
ig_z, спасибо, я смотрел исходники wm-widget, там поле bRefresh было как у меня. Я пробовал ставить 0, но эффекта ноль, каким образом Вы отправляете данные обратной сязи? Получаете прерываие по INEP?

У меня ЛПЦ. Отправляет/принимает юсб модуль. Я только подготавливаю необходимые данные.
Т.е. вы говорите драйверу хоста, что у вас изохронный асинхронный експлисит девайс.
Хост будет слать аудио данные на каждый соф и запрашивать фидбек данные через заданное вами кол-во соф-ов. Если вы правильно настроили фидбековскую конечную точку и там есть данные, то юсб модуль отправит данные хосту.
Как это сделано в стм32 я не в курсе. Стараюсь как можно подальше отложить необходимость работы с ними sm.gif
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 2 2013, 14:25
Сообщение #6


Участник
*

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



Да, хост вроде запрашивает данные, это вижу в USBlyzer, но как мне их отправить понять немогу sad.gif , если пытаюсь стартануть отправку сразу после инициализации, то вижу ошибки на шине, передача отменяется. Пробовал отправлять по EOPF, вроде передается, но только поначалу, после передачи прекращаются и опять идут посылки нулевой длинны.
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 2 2013, 18:40
Сообщение #7


Участник
*

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



Цитата(ig_z @ Oct 2 2013, 16:38) *
У меня ЛПЦ. Отправляет/принимает юсб модуль. Я только подготавливаю необходимые данные.

А код посмотреть можно, или это коммерческая разработка? Я не придумав ничего лучше завел таймер и по прерыанию таймера отправляю данные, точнее ложу их в FIFO Feedback Endpoint, вижу что данные по запросу хоста уходят, но работать правильно не хочет, вместо запрашиваемых 192-ух байт пересылает 172-176, изменяю количество на, скажем, 92 байта, но ничего не изменяется, все те же 172-176 байт wacko.gif
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 3 2013, 03:22
Сообщение #8


Участник
*

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



Раз никто не помогает пришлось самому sm.gif, не скажу что полнстью доволен, но винда слушается, количество байт в пакетах меняется. Отправку данных в FB endpoint сделал по SOF, когда интерфейс уже переключен на 1-ый(воспроизведение). Просто считаю кличество SOF-ов до 2^5 (тот же интервал у меня указан в дискрипторе FB endpoint, в поле bRefresh). Доходят до хоста нормально, иногда правда нет, но в спецификации указано что если изменений нет, то вполне допустимо ответить пакетом нулевой длинны, что иногда и происходит. Думаю для исключения ситуаций когда нужно резко поменять количество байт, а как раз идут пропуски FB пакетов, нужно сделать буфер побольше.

Так и не понял почему данные обратной связи в формате 10.14 дожны формироватся следующим образом -
Код
static uint8_t bufs[3];
uint32_t FB_rate = (USBD_AUDIO_FREQ == 44100)? (44 << 14) + ((1 << 14) / 10) : (USBD_AUDIO_FREQ / 1000) << 14;

bufs[0] = (uint8_t)(FB_rate);
bufs[1] = (uint8_t)(FB_rate >> 8);
bufs[2] = (uint8_t)(FB_rate >> 16);

DCD_EP_Flush(&USB_OTG_dev, AUDIO_IN_EP);
DCD_EP_Tx (&USB_OTG_dev, AUDIO_IN_EP, bufs, 3);


Но это факт (это подсмотрел в том же sdr-widget), если кто нибудь обьяснит, то буду весьма признателен sm.gif
И еще небольшой вопрос об очистке FIFO, в коде - DCD_EP_Flush(&USB_OTG_dev, AUDIO_IN_EP);, нужна и она?
Go to the top of the page
 
+Quote Post
ig_z
сообщение Oct 3 2013, 08:19
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Left Radio @ Oct 2 2013, 21:40) *
А код посмотреть можно, или это коммерческая разработка?

Да вроде там все просто, как угол дома. ЮСБ стек стандартный кейловский.
CODE

void USB_SOF_Event(void)
{
//STORE_DMA_SAMPLES();
STORE_DD_OUT_STATUS();
STORE_DD();

if ((USB_DeviceAddress != 0)&&(USB_Configuration != 0))
{
uint32_t numOutEP, numFBackEP, numInEP;

numOutEP = ProcessOutEP();
numFBackEP = ProcessFeedbackEP();
numInEP = ProcessInEP(numOutEP);

STORE_NUM_SAMPLES(numOutEP);

if ((iso_in_size == 44*4)||(iso_in_size == 48*4))
{
numFBackEP *=4;
}
else if ((iso_in_size == 44*6)||(iso_in_size == 48*6))
{
numFBackEP *=6;
}
else
{
//should never happen
}

STORE_NUM_FB_SAMPLES(numFBackEP / (1<<14));
STORE_NUM_IN_SAMPLES(numInEP);
}
SOF_EV();
}

uint32_t ProcessFeedbackEP()
{
int32_t fb = getFeedbackValue();

if (fb == 0)
{
DBG_INFO_MSG("ProcessFeedbackEP ERROR!!!! FeedbackRate = 0x%X =========================",FeedbackRate);
}
#if (USB_ADC_SYNC_MODE == USB_ADC_SYNC_MODE_EXPLISIT_FB)

IsoFBBuff = fb;

#if (USB_DMA_FB == 0) // sw copy for FEEDBACK EP

USB_WriteEP(ADC_F_BACK_EP_LOG, (uint8_t*)&IsoFBBuff, 3);

#else // (USB_DMA_FB == 0) DMA copy for FEEDBACK EP

//DD_ISO_FB_Mem[0] = 0;
//DD_ISO_FB_Mem[1] = (1<<16) | (1<<4); //isoc packet, length = 1 packet
DD_ISO_FB_Mem[0] = (uint32_t)DD_ISO_FB_Mem;
DD_ISO_FB_Mem[1] = (1<<16) | (1<<4) | (1<<2); //isoc packet, length = 1 packet
DD_ISO_FB_Mem[2] = (uint32_t)&IsoFBBuff;
DD_ISO_FB_Mem[3] = 0;
DD_ISO_FB_Mem[4] = (uint32_t)&InfoFBBuf;
InfoFBBuf = 3|0x10000;

#endif //(USB_DMA_FB == 0) SW/DMA copy for FEEDBACK EP
#endif //(USB_ADC_SYNC_MODE == USB_ADC_SYNC_MODE_EXPLISIT_FB)

return fb;
}

USB_SOF_Event() обработчик софа. Макросы в USB_SOF_Event() отладочные. Три байта передаются в юсб модуль в ProcessFeedbackEP(). Ничего необычного, за исключением того, что юсб модуль ЛПЦ не в состоянии продетектить изохронный запрос с хоста.

QUOTE (Left Radio @ Oct 3 2013, 06:22) *
Но это факт (это подсмотрел в том же sdr-widget), если кто нибудь обьяснит, то буду весьма признателен sm.gif
И еще небольшой вопрос об очистке FIFO, в коде - DCD_EP_Flush(&USB_OTG_dev, AUDIO_IN_EP);, нужна и она?

Объяснить это трудно. Это больше выглядит как инициализация FB_rate. В обработчике FB_rate должна накапливать значения (что то типа FB_rate +/- дельта).
Давно не смотрел сдр-виджет, он уже может работать на стм32?
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 3 2013, 08:25
Сообщение #10


Участник
*

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



Спасибо, значит я пришел к такому же решению. С форматом данных обратной связи то же разобрался, сбило с толку требование указать количество байт в пакете, это было в одном русскоязычном описании, а как оказалось нужно указывать только Fsample/Fsof, ну тут сам виноват, нужно было смотреть внимательней в спецификацию, а не в сомнительные переводы sm.gif.

В общем проблема решена, еще раз спасибо.
Go to the top of the page
 
+Quote Post
nikkov
сообщение Oct 3 2013, 08:47
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332



Left Radio, UAC 1 реализуете?
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 3 2013, 19:34
Сообщение #12


Участник
*

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



Да, UAC 1, за UAC 2 пока не берусь, доведу полностью до ума и хочу перейти на HS(USB3320), затем возможно за UAC 2 возмусь. Правда драйвера никогда не писал, поэтому вероятно на основе sdr-widget.
Go to the top of the page
 
+Quote Post
nikkov
сообщение Oct 4 2013, 01:44
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332



Цитата(Left Radio @ Oct 4 2013, 02:34) *
Да, UAC 1, за UAC 2 пока не берусь, доведу полностью до ума и хочу перейти на HS(USB3320), затем возможно за UAC 2 возмусь. Правда драйвера никогда не писал, поэтому вероятно на основе sdr-widget.

Просто я участвовал в написании прошивки для *-Widget и ASIO драйвера для него, но некоторые ограничения avr32 охладили к нему мой интерес. Сейчас смотрю в сторону LPC18**/LPC43** от NXP, т.к. у них есть нормальный HS.
Go to the top of the page
 
+Quote Post
Left Radio
сообщение Oct 4 2013, 02:23
Сообщение #14


Участник
*

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



Хороший проект, респект wink.gif, а какие ограничения avr32 неустроили? LPC18**/LPC43** неплохие машинки, тоже смотрел в их сторону, но потом решил в пользу STM32F407, так как знаю их лучше, а с LPC никогда не работал. Пока устраивает полностью, жаль конечно нет HS PHY. Сейчас довожу до ума работу с UAC 1 и доделываю управление для Si5351. Можно сказать в самом начале sm.gif

Сообщение отредактировал Left Radio - Oct 4 2013, 02:33
Go to the top of the page
 
+Quote Post
nikkov
сообщение Oct 4 2013, 02:37
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 217
Регистрация: 1-02-05
Пользователь №: 2 332



Цитата(Left Radio @ Oct 4 2013, 09:23) *
Респект wink.gif, а какие ограничения avr32 неустроили? LPC18**/LPC43** неплохие машинки, тоже смотрел в их сторону, но потом решил в пользу STM32F407, так как знаю их лучше, а с LPC никогда не работал. Пока устраивает полностью, жаль конечно нет HS PHY. Сейчас довожу до ума работу с UAC 1 и доделываю управление для Si5351. Можно сказать в самом начале sm.gif

Не устроили 2 момента:
1 - размер буфера EP 512 байт, что уменьшает вдвое пропускную способность, отчего для UAC1 доступна частота максимум 48кГц;
2 - невозможность сконфигурировать 2 EP с одним номером, но с разными направлениями. Это не позволило запустить ввод с SDR-Widget с драйверами от других UAC2 карт, при том, что вывод работает.

У меня нет опыта работы ни с LPC, ни с STM, поэтому мне проще biggrin.gif (с АВР32 его тоже не было), а выбор LPC обусловлен наличием HS PHY.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th May 2024 - 07:12
Рейтинг@Mail.ru


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