Страница 11 из 33 Первая ... 91011121321 ... Последняя
Показано с 201 по 220 из 651

Тема: Дешевый USB transport (для саморазвития)?

  1. #1 Показать/скрыть первое сообщение.
    Старый знакомый
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    45
    Сообщений
    767

    По умолчанию Дешевый USB transport (для саморазвития)?

    Идея такая: берется STM32F4xx. У него есть USB и I2S. Проц и USB тактируется от HSE - кварц на необходимое кол-во МГц+PLL. Через USB в асинхронном режиме выводится аудио поток.
    Для I2S вариантов тактирования два: от PLL с соответствующим снижением качества или от ЦАПа на специальный вход модуля I2S.
    Модуль I2S поддерживает форматы Philips, RJ, LJ, PCM, 16 или 32 бит до 96 192 кГц. (Вы это всё знаете, конечно).
    Теоретически, можно получить универсальный вывод (ввод тоже) I2S через USB (для многих, думаю, достаточного уровня).

    Лично у меня сложности следующие:
    1. Исходники асинхронного вывода (и ввода) по USB.
    2. Получение от хоста параметров потока и переключение частот.
    3. Аппаратная реализация работы двух генераторов на один вход.
    4. Внутренняя синхронизация между I2S и USB.
    Ну и еще мелочей всяких.

    Набросайте ссылок по теме, пожалуйста.

    P.S. Audio Widget я конечно, скачал, но, честно говоря, разобраться пока не смог.
    Последний раз редактировалось antonluba; 25.10.2015 в 21:47.

  2. #201
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    http://fpga4fun.com/PCI.html
    На pci девбоард $249, на pci-e $359 или $599 (там два вида разных)

    ---------- Сообщение добавлено 07:53 ---------- Предыдущее сообщение было 07:22 ----------

    Альтеровский киты $995(цыклон2, пци) или $1299(цыклон5, пци-е)

    ---------- Сообщение добавлено 26.10.2016 в 13:17 ---------- Предыдущее сообщение было 25.10.2016 в 07:53 ----------

    Что-то ни в какую не хочет на high speed работать, придется на крайние меры идти - подвешивать в параллель к ULPI входы плисины и signaltap*ом трафик смотреть от фая... На кт обратной связи запросы идут и ответы на них комп корректно получает. А на выходную кт со звуком - нет.

  3. #202
    Частый гость Аватар для ntechmen
    Регистрация
    03.03.2012
    Адрес
    Кемерово
    Сообщений
    249

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    Что-то ни в какую не хочет на high speed работать
    Что-то упустил, какую микросхему PHY по ULPI прикручиваете?

  4. #203
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Usb3300, две вэйвшаровских платы, одна к плисине, одна к стм32
    Все сигналы через резисторы 100 Ом идут, иначе даже в системе не определяется. С ними - определяется нормально. Но постоянно приходит прерывание IsocOutIncomplete, чего на FS никогда не было.

  5. #204
    Частый гость Аватар для ntechmen
    Регистрация
    03.03.2012
    Адрес
    Кемерово
    Сообщений
    249

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    Usb3300, две вэйвшаровских платы
    попробую тоже такую же прикрутить к 205 в ближайшее время, отпишусь по результатам.

  6. #205
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Ок
    Там надо отдавать other speed configuration descriptor и device qualifier. Отличаются в HS и FS значением поля bInterval в дескриптора кт. В полноскоростном 1, в высокоскоростной - 4

    ---------- Сообщение добавлено 20:42 ---------- Предыдущее сообщение было 20:41 ----------

    А, и еще bcdUSB для полной скорости 0x110, для высокой 0x200

  7. #206
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,139

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    А, и еще bcdUSB для полной скорости 0x110, для высокой 0x200
    В фулспиде тоже 0х200 может быть - он же тоже 2.0 может быть, не только 1.1
    Последний раз редактировалось Alex; 26.10.2016 в 22:16.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  8. #207
    Частый гость Аватар для vladsan75
    Регистрация
    06.06.2010
    Адрес
    г.Саратов
    Возраст
    49
    Сообщений
    430

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Кое что переделал :
    USB_audio_sin_3.rar
    Без оптимизации работает нормально, но с включенной 0s - в андроиде нормально, а в windows7, если при проигрывании композиции 16/44 перескочить на композицию 24/96, то срывается обратная связь (в момент перерыва MCLK). Пока не смог это преодолеть, пора переходить на Keil.
    Последний раз редактировалось vladsan75; 26.10.2016 в 23:23.

  9. #208
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Поставил в ините принудительно FullSpeed - запело через ULPI... но это не то, что нужно...

    ---------- Сообщение добавлено 28.10.2016 в 11:17 ---------- Предыдущее сообщение было 27.10.2016 в 15:20 ----------

    Тут идея посетила, как 192/24 сделать в рамках full speed и UAC1. Это прописать топологию с двумя входными терминалами, в каждом только по одному каналу, "микшером" в составе звуковой карты и одним выходным стереотерминалом. Т.е. заставить хост отдавать разные стереоканалы на две разных кт. Спецификация не запрещает двумя изохронными передачами занять 1152 байта в кадре. Реально это?
    Processing Unit вроде то что нужно, на входе два моно USB streaming*а у одного Front Left канал, у другого Front Right, дальше Processing Unit с выходом стерео и спикер
    Вложения Вложения
    Последний раз редактировалось romanetz; 28.10.2016 в 08:42.

  10. #209
    Завсегдатай Аватар для pokos
    Регистрация
    18.08.2005
    Сообщений
    1,353

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    ... Т.е. заставить хост отдавать разные стереоканалы на две разных кт.
    А как ты собираешься сихрить каналы между собой? Хост ведь не обязан начинать отдачу одновременно.

  11. #210
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    В один интерфейс три конечные точки вписать (третья - кт обратной связи), пока что не увидел причин, которые это запрещают.

    ---------- Сообщение добавлено 15:31 ---------- Предыдущее сообщение было 15:05 ----------

    Посмотрел код ASIO-драйвера для AudioWidget. Он не делает ресэмплинга, а просто чаще или реже передает запрос вызывающему приложению. Но ведь при этом головняк по синхронизации клоковых доменов просто переносится на уровень выше, и потоковое воспроизведение неизбежно будет косячить? А если в драйвере ОС ресэмплинг делается, то никакого "битперфекта" уже не существует?

  12. #211
    Завсегдатай Аватар для Nikkov
    Регистрация
    01.11.2005
    Адрес
    Омск, Сибирь
    Возраст
    51
    Сообщений
    1,360

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    Посмотрел код ASIO-драйвера для AudioWidget. Он не делает ресэмплинга, а просто чаще или реже передает запрос вызывающему приложению. Но ведь при этом головняк по синхронизации клоковых доменов просто переносится на уровень выше, и потоковое воспроизведение неизбежно будет косячить? А если в драйвере ОС ресэмплинг делается, то никакого "битперфекта" уже не существует?
    В ASIO-драйвере реализована подстройка числа передаваемых сэмплов по данным обратной связи. А прикладное ПО (плеер) просто заполняет буфер по мере его опустошения и ошибка может возникнуть только при значительном расхождении частоты опустошения буфера от требуемой. Никаких синхронизаций и ресэмплингов здесь нет и не нужно.
    Электроника наука слабоизученная (c)
    Неизвестный специалист антенного хозяйства по поводу периодического пропадания сигнала в коллективной антенне

  13. #212
    Частый гость Аватар для vladsan75
    Регистрация
    06.06.2010
    Адрес
    г.Саратов
    Возраст
    49
    Сообщений
    430

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Никто не взглянет свежим глазом проект из поста 207, в частности usbd_audio_core.c? Как то странно ведет себя gap при перескакивании с композиции 16/44 на 24/96 (и наоборот) : при отсутствии MCLK не должно происходить заполнения Audio_buf_0(1), spk_index и num_remaining должны остаться прежними (ну максимум может пройти один SOF и spk_index может увеличиться на 96Х4=384 и gap соответственно на эту величину, а дальше num_remaining_old = num_remaining), а у меня gap c 6000 прыгает до 8000-10000, как будто мы заполняли аудио буфер почти наполовину, хотя, вроде, постарался этого избежать. Конечно обратная связь отрабатывает эти изменения, но если gap превысит 12000 с небольшим или упадет до нуля, то обратная связь будет потеряна(что наверное и происходит при включенной оптимизации).

  14. #213
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Переключение генераторов происходит мгновенно в момент отработки set_current. Правда, я не уверен, что делитель можно вот так на лету менять, по-моему, процедура описана в референс мануале. Сначала запретить и2с, поменять делитель, потом разрешить и2с

  15. #214
    Частый гость Аватар для vladsan75
    Регистрация
    06.06.2010
    Адрес
    г.Саратов
    Возраст
    49
    Сообщений
    430

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    я не уверен, что делитель можно вот так на лету менять
    Ну, с этим я проблем не заметил, но можно и добавить. Я думаю о более радикальном методе, как в первом проекте с переключением частот - остановить SPI3 и DMA, сбросить spk_buffer_in, spk_buffer_out, PlayStart и spk_index, правда при этом пауза в выводе I2S будет 32мс (заполнение аудио буфера, как при старте) и возможен хлопок в этот момент, но возможно удастся избежать скачка gap. К стати, я заметил, что в usbd_audio_EP0_RxReady() мы попадаем при остановке воспроизведения (не путать с паузой) и при перескоке на следующий трек, во время воспроизведения другого, а при перескоке еще и с 16/44 на 24/96 и наоборот - 2 раза, поэтому добавил переменную Sampling_freq_old, чтобы при паузе или при остановке выводить нулевые данные.
    Последний раз редактировалось vladsan75; 28.10.2016 в 18:52.

  16. #215
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Туда попадаем потому что альт сеттинг меняется у потокового интерфейса, но запросов на установку частоты при остановке быть не должно (я не видел в дампе трафика).

    ---------- Сообщение добавлено 21:52 ---------- Предыдущее сообщение было 21:49 ----------

    А зачем все сбрасывать при смене частоты? Предлагаю пересчитать фидбэк просто к новой частоте и продолжать в том же духе, позиции буферов ни в коем случае не обнулять.

  17. #216
    Частый гость Аватар для vladsan75
    Регистрация
    06.06.2010
    Адрес
    г.Саратов
    Возраст
    49
    Сообщений
    430

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Цитата Сообщение от romanetz Посмотреть сообщение
    Туда попадаем потому что альт сеттинг меняется у потокового интерфейса, но запросов на установку частоты при остановке быть не должно (я не видел в дампе трафика).
    Но, почему то, все равно в usbd_audio_EP0_RxReady() проходим все ступени, проверял светодиодом.
    Цитата Сообщение от romanetz Посмотреть сообщение
    А зачем все сбрасывать при смене частоты? Предлагаю пересчитать фидбэк просто к новой частоте и продолжать в том же духе, позиции буферов ни в коем случае не обнулять.
    Сейчас так оно и есть и не должно быть скачка gap, но почему то скачек есть, вот и думаю, как это избежать.

  18. #217
    Частый гость Аватар для ntechmen
    Регистрация
    03.03.2012
    Адрес
    Кемерово
    Сообщений
    249

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    прикрутил waveshare usb3300 к 205, при инициализации обмена по usb, попадает в обработчик прерывания OTG_HS_IRQHandler, но в win8.1 выдает ошибку сбоя дескриптора устройства (windows неможет получить vid&pid), пока не могу понять, программные это ошибки или аппаратные.

    Цитата Сообщение от romanetz Посмотреть сообщение
    Поставил в ините принудительно FullSpeed - запело через ULPI...
    - в посте #208 этот код?

  19. #218
    Старый знакомый Аватар для tomtit
    Регистрация
    23.06.2009
    Адрес
    пгт.Торонтовка
    Возраст
    65
    Сообщений
    951

    По умолчанию Re: Дешевый USB transport (для саморазвития)?


    Offтопик:
    Coocox, то коньки отбросил, все сервера в дауне, говорят, что бизнес-модель не сработала.

  20. #219
    Частый гость Аватар для romanetz
    Регистрация
    28.03.2015
    Сообщений
    153

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Фотку макета/платки можно? Резисторы есть между PHY и STM? У меня без них не работало.
    Да, там рабочий код. Попробуй так: кабель USB отключи из разъема, ребутни проц и втыкай кабель.

  21. #220
    Частый гость Аватар для vladsan75
    Регистрация
    06.06.2010
    Адрес
    г.Саратов
    Возраст
    49
    Сообщений
    430

    По умолчанию Re: Дешевый USB transport (для саморазвития)?

    Нашел причину скачка gap - оказывается windows сильно тормозит с изменением количества передаваемых байт при смене сетки частот (в андроиде все происходит намного быстрее и никаких проблем не вызывает), оказывается мои генераторы стартуют 13мкс и 110мкс, а изменение количества передаваемых байт от хоста происходит с задержкой в десятки мс и за это время происходит значительное изменение gap - спасибо STM Studio за возможность это увидеть, и теперь, зная причину, можно найти решение. Помнится Energetic писал про свою обратную связь, что она может исправлять двукратное изменение тактовой частоты, но, так как он никогда не выложит свою реализацию, мы придумаем свою, надеюсь кто нибудь поможет мне в этом (уже есть кое какие мысли по этому поводу).

    ---------- Сообщение добавлено 22:55 ---------- Предыдущее сообщение было 22:51 ----------

    Цитата Сообщение от tomtit Посмотреть сообщение
    Offтопик:
    Coocox, то коньки отбросил, все сервера в дауне, говорят, что бизнес-модель не сработала.
    Жаль, они мне нравились достаточно легкой генерацией нового проекта, а в Keil, я так понял, необходимо прописывать в ручную пути к каждому библиотечному файлу.
    Последний раз редактировалось vladsan75; 30.10.2016 в 01:44.

Страница 11 из 33 Первая ... 91011121321 ... Последняя

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •