Left Radio 0 2 октября, 2013 Опубликовано 2 октября, 2013 (изменено) · Жалоба Собственно вопрос вот в чем, пытаюсь запустить асинхронный режим с явной обратной связью через feedback EP, естественно начал с изучения примеров и стандарта, вроде все получилось, устройство определяется, USBlyzer-ом вижу что идут OUT пакеты, а IN нет, хост время от времени делает URB Sync Reset Pipe and Clear Stall (success), затем идет, как я понял задержанная, передача URB Isoch Transfer (issued) и по завершению, после передачи OUT пакета, по IN - 0 bytes data. При этом никаких прерываний по FB EP не происходит :( Вот я никак и не могу понять как мне собственно передать 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; } Еще хуже, устройство перестает работать, хотя и по прежнему определяется правильно. Вот дескрипторы: /* 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*/ Изменено 2 октября, 2013 пользователем Left Radio Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 2 октября, 2013 Опубликовано 2 октября, 2013 (изменено) · Жалоба А что такое 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". Изменено 2 октября, 2013 пользователем controller_m30 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 2 октября, 2013 Опубликовано 2 октября, 2013 · Жалоба Возможно кто то сталкивался, или делал что то похожее, помогите плиз, или подскажите куда копать, уже 4 день не могу заставить работать. Вот часть моего дескриптора. Я вижу разницу в поле bRefresh. /* 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 только. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 2 октября, 2013 Опубликовано 2 октября, 2013 (изменено) · Жалоба 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? Изменено 2 октября, 2013 пользователем Left Radio Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 2 октября, 2013 Опубликовано 2 октября, 2013 · Жалоба ig_z, спасибо, я смотрел исходники wm-widget, там поле bRefresh было как у меня. Я пробовал ставить 0, но эффекта ноль, каким образом Вы отправляете данные обратной сязи? Получаете прерываие по INEP? У меня ЛПЦ. Отправляет/принимает юсб модуль. Я только подготавливаю необходимые данные. Т.е. вы говорите драйверу хоста, что у вас изохронный асинхронный експлисит девайс. Хост будет слать аудио данные на каждый соф и запрашивать фидбек данные через заданное вами кол-во соф-ов. Если вы правильно настроили фидбековскую конечную точку и там есть данные, то юсб модуль отправит данные хосту. Как это сделано в стм32 я не в курсе. Стараюсь как можно подальше отложить необходимость работы с ними :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 2 октября, 2013 Опубликовано 2 октября, 2013 · Жалоба Да, хост вроде запрашивает данные, это вижу в USBlyzer, но как мне их отправить понять немогу :( , если пытаюсь стартануть отправку сразу после инициализации, то вижу ошибки на шине, передача отменяется. Пробовал отправлять по EOPF, вроде передается, но только поначалу, после передачи прекращаются и опять идут посылки нулевой длинны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 2 октября, 2013 Опубликовано 2 октября, 2013 · Жалоба У меня ЛПЦ. Отправляет/принимает юсб модуль. Я только подготавливаю необходимые данные. А код посмотреть можно, или это коммерческая разработка? Я не придумав ничего лучше завел таймер и по прерыанию таймера отправляю данные, точнее ложу их в FIFO Feedback Endpoint, вижу что данные по запросу хоста уходят, но работать правильно не хочет, вместо запрашиваемых 192-ух байт пересылает 172-176, изменяю количество на, скажем, 92 байта, но ничего не изменяется, все те же 172-176 байт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Раз никто не помогает пришлось самому :), не скажу что полнстью доволен, но винда слушается, количество байт в пакетах меняется. Отправку данных в 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), если кто нибудь обьяснит, то буду весьма признателен :) И еще небольшой вопрос об очистке FIFO, в коде - DCD_EP_Flush(&USB_OTG_dev, AUDIO_IN_EP);, нужна и она? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ig_z 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба А код посмотреть можно, или это коммерческая разработка? Да вроде там все просто, как угол дома. ЮСБ стек стандартный кейловский. 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(). Ничего необычного, за исключением того, что юсб модуль ЛПЦ не в состоянии продетектить изохронный запрос с хоста. Но это факт (это подсмотрел в том же sdr-widget), если кто нибудь обьяснит, то буду весьма признателен :) И еще небольшой вопрос об очистке FIFO, в коде - DCD_EP_Flush(&USB_OTG_dev, AUDIO_IN_EP);, нужна и она? Объяснить это трудно. Это больше выглядит как инициализация FB_rate. В обработчике FB_rate должна накапливать значения (что то типа FB_rate +/- дельта). Давно не смотрел сдр-виджет, он уже может работать на стм32? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Спасибо, значит я пришел к такому же решению. С форматом данных обратной связи то же разобрался, сбило с толку требование указать количество байт в пакете, это было в одном русскоязычном описании, а как оказалось нужно указывать только Fsample/Fsof, ну тут сам виноват, нужно было смотреть внимательней в спецификацию, а не в сомнительные переводы :). В общем проблема решена, еще раз спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nikkov 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Left Radio, UAC 1 реализуете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 3 октября, 2013 Опубликовано 3 октября, 2013 · Жалоба Да, UAC 1, за UAC 2 пока не берусь, доведу полностью до ума и хочу перейти на HS(USB3320), затем возможно за UAC 2 возмусь. Правда драйвера никогда не писал, поэтому вероятно на основе sdr-widget. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nikkov 0 4 октября, 2013 Опубликовано 4 октября, 2013 · Жалоба Да, UAC 1, за UAC 2 пока не берусь, доведу полностью до ума и хочу перейти на HS(USB3320), затем возможно за UAC 2 возмусь. Правда драйвера никогда не писал, поэтому вероятно на основе sdr-widget. Просто я участвовал в написании прошивки для *-Widget и ASIO драйвера для него, но некоторые ограничения avr32 охладили к нему мой интерес. Сейчас смотрю в сторону LPC18**/LPC43** от NXP, т.к. у них есть нормальный HS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Left Radio 0 4 октября, 2013 Опубликовано 4 октября, 2013 (изменено) · Жалоба Хороший проект, респект ;), а какие ограничения avr32 неустроили? LPC18**/LPC43** неплохие машинки, тоже смотрел в их сторону, но потом решил в пользу STM32F407, так как знаю их лучше, а с LPC никогда не работал. Пока устраивает полностью, жаль конечно нет HS PHY. Сейчас довожу до ума работу с UAC 1 и доделываю управление для Si5351. Можно сказать в самом начале :) Изменено 4 октября, 2013 пользователем Left Radio Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nikkov 0 4 октября, 2013 Опубликовано 4 октября, 2013 · Жалоба Респект ;), а какие ограничения avr32 неустроили? LPC18**/LPC43** неплохие машинки, тоже смотрел в их сторону, но потом решил в пользу STM32F407, так как знаю их лучше, а с LPC никогда не работал. Пока устраивает полностью, жаль конечно нет HS PHY. Сейчас довожу до ума работу с UAC 1 и доделываю управление для Si5351. Можно сказать в самом начале :) Не устроили 2 момента: 1 - размер буфера EP 512 байт, что уменьшает вдвое пропускную способность, отчего для UAC1 доступна частота максимум 48кГц; 2 - невозможность сконфигурировать 2 EP с одним номером, но с разными направлениями. Это не позволило запустить ввод с SDR-Widget с драйверами от других UAC2 карт, при том, что вывод работает. У меня нет опыта работы ни с LPC, ни с STM, поэтому мне проще (с АВР32 его тоже не было), а выбор LPC обусловлен наличием HS PHY. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться