Страница 35 из 36 Первая ... 2533343536 Последняя
Показано с 681 по 700 из 709

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

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

    По умолчанию Дешевый 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. #681
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,807

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

    Цитата Сообщение от antonluba Посмотреть сообщение
    Может кто-то понятно обьяснить, что это за фильтр четности для конечных точек и что с ним за проблемы?
    В пакетах в USB HS просто чередуется индекс: четный/нечетный. Если придет два четных пакета подряд, значит нечетный пропустили (где-то был сбой в передаче данных).
    Не знаю как в STM, а в PIC32 это все разруливается на аппаратном уровне.

    Цитата Сообщение от antonluba Посмотреть сообщение
    Теперь такой вопрос. В процессе переписывания кода получилось так, что устройство определяется, но данные на выход не идут.
    Отладчиком потыкался, в обработчик функции USB_DataOut не попадаю никогда.
    Хотя Init, Setup и вызовы EP0 работают, в частности переключение Alternate settings происходит корректно.
    Что может быть причиной?
    Ставить контрольную точку в обработчике прерываний USB и там искать где затык. Если от хоста пришла команда init, и если назначена КТ для приема данных, то должны прийти и данные.

  3. #682
    Новичок Аватар для lpetrov
    Регистрация
    22.08.2010
    Адрес
    Спб
    Возраст
    64
    Сообщений
    22

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

    Может попробовать выводить в SOF, как было сделано в проекте на STM32F407

  4. #683
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Перенес проект для stm32f407 в Keil.
    Добавил в main.h выбор источника тактирования для аудио - внешние генераторы или PLL.

    USB_audio_sin_3_2_KEIL.zip

  5. #684
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Цитата Сообщение от antonluba Посмотреть сообщение
    Ладно, проехали, разберемся.

    Теперь такой вопрос. В процессе переписывания кода получилось так, что устройство определяется, но данные на выход не идут.
    Отладчиком потыкался, в обработчик функции USB_DataOut не попадаю никогда.
    Хотя Init, Setup и вызовы EP0 работают, в частности переключение Alternate settings происходит корректно.
    Что может быть причиной?
    Уточнение.
    Пошагал по обработчику прерываний.
    Получается, что первый раз после начала воспроизведения в обработчике Data_Out_Stage передается номер EP_OUT и даже начинается вывод, но дальше - только EP0. Соответственно, в DataOut() уже не попадаем.

    Где мог накосячить?

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

    // Перенести напрямую вышеупомянутый проект на STM32F446 пока тоже не получилось.
    Не включается подтяжка линии данных D+.
    Все клоки выставил, но похоже, что инициализация контроллеров USB где-то отличается.

    Поэтому пока пытаюсь переделать кодогенерацию из куба под наши нужды. (с новой библиотекой hal и usb).

  6. #685
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,807

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

    antonluba, а под каким драйвером пытаетесь запускать, UAC1?
    Я на stm32 через хал библиотеку UAC1 вывод когда-то давно запускал, но за давностью проект, увы - похерился.
    Пример брал какой-то из интернета, вроде есть даже какая-то статья по запуску USB аудио на STM32.
    Там единственный нюанс был, что для обратной связи нужно было отдельно добавить конечную точку.
    А просто вывод, без синхронизации заработал достаточно быстро.

    Логику UAC1 уже не помню, а на UAC2 такая:
    Для начала воспроизведения хост присылает несколько команд:
    - включить интерфейс,
    - выключить интерфейс,
    - задать частоту семплирования,
    - включить интерфес.
    После отработки этих команд хост начинает слать пакеты с данными и появляются прерывания приема пакетов с конечной точки, назначенной на прием данных.
    По этому прерыванию выполняется копирование данных из буфера USB модуля.
    Модуль USB не примет следующий пакет данных, пока в его выделенных регистрах не будет установлен флаг завершения чтения данных.
    Возможно у вас где-то этот флаг не выставляется, либо вообще не стартует чтение пакета из буфера USB модуля, поэтому дальнейший прием не работает.

  7. #686
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

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

    Или не выбираются все данные из буфера, или что-то еще, что мешает последующей отправке пакетов.

    Буду разбираться.

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

    С DMA какой-то затык

  8. #687
    Завсегдатай Аватар для tomtit
    Регистрация
    23.06.2009
    Адрес
    пгт.Торонтовка
    Возраст
    66
    Сообщений
    1,032

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

    Я много лет назад на это же нарвался на STM32F407 и не смог понять в чём дело. Потом romanetz разобрался, что это багофича ST, что-то с четностью микрофреймов, которая должна меняться автоматически.

  9. #688
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Цитата Сообщение от tomtit Посмотреть сообщение
    Я много лет назад на это же нарвался на STM32F407 и не смог понять в чём дело. Потом romanetz разобрался, что это багофича ST, что-то с четностью микрофреймов, которая должна меняться автоматически.
    Вроде контроль четности добавил.

    Это с прерываниями DMA затык. Не мог понять, как задействовать их через HAL.
    Вчера нашел, там разные функции сделаны для передачи через DMA с прерываниями и без них.
    Прошагал отладчиком и увидел прототип обработчика user callback функции.

    HAL напрягает, конечно.

    Еще переписал на SAI выдачу аудио.
    В целом, сколько-то адекватный звук вывести удалось. Но слишком много тонкостей.

    Синхронизация работает неправильно.

    Если переключить частоту с 44100 на 48000 (в настройках звукового устройства windows) - частота LRCLK меняется корректно, но выдача по SD прекращается.
    Переключаю обратно - восстанавливается, но если еще раз-два переключить, вообще все останавливается до передергивания питания.
    То есть, если подключено питание через отладчик, SAI больше ничего не выдает, хотя устройство определяется.
    Даже кнопка reset не помогает.

    Короче, есть вопросы. Много. Нахрапом не возьмешь.

  10. #689
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,807

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


    Offтопик:
    Цитата Сообщение от antonluba Посмотреть сообщение
    HAL напрягает, конечно.
    Нафик вообще фреймворки. Это чисто "на коленке" запустить, чтобы хоть как-то работало.
    Я вот с пиком помучался подольше (чем с фреймворком на STM32), но зато теперь все работает четко, даже лучше аманеровского болеро (только что без поддержки asio).
    А главное весь код как на ладони, без кучи ссылок и ненужных инкапсуляций: в фреймворке бывает пока отладчиком пройдешь весь путь выполнения события - забываешь что было в начале.

  11. #690
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Ну библиотеку USB я на данном этапе развития не перепишу.
    Остальное пока как раз на коленке и запускаю.

    Если кто с SAI разбирался уже, как правильно запускать синхронный вывод через DMA для разных блоков, настроенных один мастером, другой слейвом?

    По смыслу должно быть так, что настраиваешь слейв, потом настраиваешь мастер, пинаешь его DMA - и он сам пинает DMA слейва?

    Или надо пнуть DMA слейва, он загрузит в регистр слейва, а начнет передачу только когда пнешь DMA мастера?

  12. #691
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,807

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

    Цитата Сообщение от antonluba Посмотреть сообщение
    Если кто с SAI разбирался уже, как правильно запускать синхронный вывод через DMA для разных блоков, настроенных один мастером, другой слейвом?

    По смыслу должно быть так, что настраиваешь слейв, потом настраиваешь мастер, пинаешь его DMA - и он сам пинает DMA слейва?

    Или надо пнуть DMA слейва, он загрузит в регистр слейва, а начнет передачу только когда пнешь DMA мастера?
    Как-то мутно писано, не понятно что пытаетесь сделать.
    Два SAI модуля, один мастер, один слейв? Один вход, один выход?
    Или два DMA модуля мастер/слейв для двух подряд транзакций в один модуль SAI на вывод?

    Для синхронного вывода SAI модуль должен тактироваться от внешнего клока и служить триггером для DMA (например по опорожнению буфера SAI).
    Если буфер пустой, то SAI "дергает" канал DMA, который копирует нужный объем данных из большого FIFO буфера в SAI модуль (в его локальное FIFO).
    Т.е. для одного SAI модуля достаточно одного канала DMA.

  13. #692
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Хочу 4 канала на выход в режиме I2S.

    Один модуль SAI - мастер на передачу, другой - слейв на передачу. Пока другого варианта не увидел.
    Может, невнимательно читал даташит.
    Но пока вижу, что для каждого модуля свое FIFO и свой канал DMA.
    То есть параллельно выгружать данные в две линии SD из одного буфера FIFO не получится.

    Значит, надо загружать данные в два буфера и синхронно стартовать выдачу.

    ---------- Сообщение добавлено 10:37 ---------- Предыдущее сообщение было 10:24 ----------

    Еще я тут прикинул, что если тактировать таймер от MCLK = 256*Fs и сохранять (и сбрасывать) его значение каждый 64-й SOF, то мы автоматически получаем значение feedback в формате 10.14.

    Можно попробовать один таймер затактировать внутри от SOF, поставить максимальное значение 64, а его выход использовать для сброса другого таймера, затактированного от MCLK. И его значение сохранять через DMA в значение FB.
    Надо разобраться, как такую связку таймеров реализовать.

  14. #693
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,807

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

    Теперь понятно.
    Для многоканала вывод на пике я делал через промежуточный буфер:
    1. Все SPI/I2S модули настраиваются в режим мастер. Для синхронного старта (чтобы фронты BCK и LRCK не разбежались) модули запускаются до включения общей линии тактирования SPI.
    2. Для каждого модуля настраивается свой канал DMA, который копирует в соответствующий SPI модуль один семпл 2-канальных данных из промежуточного буфера объемом в 1 семпл 8-ми каналов. Например, если размер данных 32 бита, то каждый канал DMA копирует два 32-х битных слова - 8 байт. А объем промежуточного буфера на 8 каналов будет 8*8 = 64 байта.
    3. Еще один дополнительный канал DMA настраивается на копирование одного 8-канального семпла (64 байта) из общего буфера FIFO (который заполняется данными из USB) в этот промежуточный 1-семпловый 8-канальный буфер. Эта транзакция выполняется последней, сразу после того, как данные из промежуточного буфера загрузятся в SPI модули.

    Очередность работы DMA каналов можно задать через "цепочку" (chaing), либо (как в моем случае) - через систему приоритетов каналов DMA: триггер для всех каналов можно задать общий, а приоритеты распределить так, чтобы копирование данных из FIFO в промежуточный буфер выполнялось последним.

  15. #694
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Все SPI/I2S модули настраиваются в режим мастер. Для синхронного старта (чтобы фронты BCK и LRCK не разбежались) модули запускаются до включения общей линии тактирования SPI.
    Здесь в SAI уже предусмотрена внутренняя синхронизация. Если в составе SAI один модуль мастер, а второй слейв - общие линии клоков остаются в одном экземпляре.
    То есть для 4-х каналов имеем MCLK, SCK, FS, SD_A, SD_B.
    И запуск мастера приводит к автоматическому запуску слейва.

    Для проверки вручную делал так: циклически брал значение 0xAA, загружал в регистр данных слейва, затем его же загружал в регистр мастера - тут же начинается выдача - данные идут синхронно в двух каналах.

    В любом случае спасибо, все равно, периферия разная, чтобы сделать хорошо, придется вникать в эти тонкости. Потихоньку разбираюсь

    ---------- Сообщение добавлено 16:58 ---------- Предыдущее сообщение было 11:23 ----------

    Цитата Сообщение от antonluba Посмотреть сообщение
    Еще я тут прикинул, что если тактировать таймер от MCLK = 256*Fs и сохранять (и сбрасывать) его значение каждый 64-й SOF, то мы автоматически получаем значение feedback в формате 10.14.

    Можно попробовать один таймер затактировать внутри от SOF, поставить максимальное значение 64, а его выход использовать для сброса другого таймера, затактированного от MCLK. И его значение сохранять через DMA в значение FB.
    Надо разобраться, как такую связку таймеров реализовать.
    Полдня провозился, не получается и все.

    Хочу настроить TIM2 - чтобы считал до 64 события SOF.
    TIM5 - чтобы тактировался от MCLK и сбрасывался по переполнению TIM2.

    По отдельности оба таймера тикают по всей видимости правильно, TIM2 вывел наружу, частота верная.
    TIM5 тоже тикает, но не происходит сброса по сигналу переполнения от TIM2.

    Может есть нюанс какой?

    ---------- Сообщение добавлено 17:48 ---------- Предыдущее сообщение было 16:58 ----------

    Короче, на мелком 446 так не получится. Мешает объединение выводов для таймера 2 и 5.
    Только через вывод SOF и MCLK наружу и использования внешних входов для счетчиков.

    ---------- Сообщение добавлено 19:15 ---------- Предыдущее сообщение было 17:48 ----------

    С внешними тоже не получилось сходу. Тикают, но не происходит сброс по переполнению. Загадка

  16. #695
    Новичок Аватар для user12
    Регистрация
    11.08.2005
    Сообщений
    39

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

    TIM5->SMCR: TS=0; SMS=4;
    TIM2->CR2: MMS=2;

  17. #696
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Если вкратце.
    Начальная идея такая:

    TIM2 нужно затактировать от SOF, это ремап для входа ITR1. (TIM2->OR: ITR1_RMP = 2)
    Тактирование от ITR1 возможно только в режиме External Clock Mode 1: Rising edges of the selected trigger (TRGI) clock the counter. (SMS = 7) (если я правильно понял).
    MMS ставил в положение reset = 0, но кажется и update (2) пробовал, результат не достигнут.
    ARR ставлю 64.
    Тикает по кругу правильно, в отладчике вижу.

    По логике, при переполнении должно отправляться событие reset для подключенного slave таймера TIM5.
    Его настройки:
    SMS=4 - reset по триггеру.
    trigger source ITR0 = TIM2 (TS=0)
    тактирование от внешнего входа ch1:01 (подключен к MCLK выходу SAI): CC1S=1 (CC1 channel is configured as input, IC1 is mapped on TI1)
    Ну и настроил DMA по событию trigger (пробовал и update).
    Тикает бесконечно по кругу.

    Вторая мысль была использовать внешний сигнал SOF на ETR вход TIM3, (чтобы для MCLK использовать тот же вход, только перенаправить его внутри на TIM2)
    Потому что второй таймер должен быть 32-разрядным.

    Подробности сейчас не помню, но тоже тикало все прекрасно, только не происходил сброс ведомого таймера.
    Возможно я неправильно выбрал TRGO.

    Завтра буду продолжать

  18. #697
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Так. По внешнему входу настроил TIM3 на выдачу сигнала update. TIM2 стал сбрасываться, судя по отладчику, правильно. Теперь не работает только сохранение значения счетчика через DMA

  19. #698
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Ничего не получается. Как сделать, чтобы сохранение значения счетчика шло ДО того, как его значение сбросится?

    Текущая конфигурация такая:

    TIM3 в режиме External clock Mode1 принимает на вход ETR1 внешний сигнал SOF, максимальное значение счетчика 64, по сигналу переполнения отправляет триггер на TIM2.
    TIM2 считает до 0xffffffff, clock на Ch1, он же ETR2, триггер идет от TIM3 (ITR2).

    ---------- Сообщение добавлено 13:22 ---------- Предыдущее сообщение было 11:56 ----------

    Получилось. Настроил канал 1 на захват по триггеру TRC. Значение счетчика сохраняется в CCR1.
    DMA по сигналу update берет оттуда значение и сохраняет в переменную feedback_rate.

    Надо все остальное теперь отладить.

    ---------- Сообщение добавлено 19:15 ---------- Предыдущее сообщение было 13:22 ----------

    Если сделать bInterval (перепутал, имел в виду bRefresh) для EP_feedback = 6, то есть 64 мс, означает ли это, что host будет запрашивать у EP_Feedback данные в кадрах sof с номерами, кратными 64?
    И соответственно, по номеру sof надо синхронизировать таймеры (с нулевым sof) и отправлять данные также кратно 64 номеру?
    Или я неправильно что-то понимаю?

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

    Или передавать надо каждую мс (bInterval ==1), а обновлять каждую 2^6 = 64 мс (bRefresh == 6)?
    Ну да, пришел запрос DataIn - разрешаем передачу (tx-flag = 0) и в следующем нечетном sof отправляем.
    Дополнительно разрешаем передачу, если Iso_In_Incomplete.
    Последний раз редактировалось antonluba; 11.03.2025 в 20:08.

  20. #699
    Завсегдатай Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,807

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

    Цитата Сообщение от antonluba Посмотреть сообщение
    Или передавать надо каждую мс (bInterval ==1), а обновлять каждую 2^6 = 64 мс (bRefresh == 6)?
    Ну да, пришел запрос DataIn - разрешаем передачу (tx-flag = 0) и в следующем нечетном sof отправляем.
    Дополнительно разрешаем передачу, если Iso_In_Incomplete.
    Я в своем проекте передавал раз в несколько пакетов.
    Но там еще могут быть заморочки драйвера. Для uac2 приходилось передавать чаще, чем задано в bRefresh. Подробностей уже не помню.
    Но если передавать чаще, то прием не ломается, возможно хост просто игнорирует лишние пакеты.

  21. #700
    Завсегдатай
    Автор темы
    Аватар для antonluba
    Регистрация
    12.12.2014
    Адрес
    Сочи, Коломна
    Возраст
    46
    Сообщений
    1,068

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Я в своем проекте передавал раз в несколько пакетов.
    Но там еще могут быть заморочки драйвера. Для uac2 приходилось передавать чаще, чем задано в bRefresh. Подробностей уже не помню.
    Но если передавать чаще, то прием не ломается, возможно хост просто игнорирует лишние пакеты.
    Поскольку все инициирует хост, передавать чаще, чем надо, никак не получится.
    Просто в документации есть непонятки.
    Но указано, что bInterval должен быть равен 1. И для EP-out и для EP-fb.
    А bRefresh степени двойки. Это только для EP-fb.

    Вопрос у меня пока в том, что даже получив значение FB из таймера, у меня синхронизации не получилось.
    Там конечно еще другие есть проблемы, может и не в этом дело.
    Все равно придется разбираться досконально.
    Повторить проект это одно, а переделать под другой камень, да с другой библиотекой- несколько иное.
    Но если кто-то может обьяснить нюансы - это сильно облегчает задачу.

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

    Поэтому очень благодарен всем, кто участвует.

    ---------- Сообщение добавлено 12.03.2025 в 15:22 ---------- Предыдущее сообщение было 11.03.2025 в 22:18 ----------

    Цитата Сообщение от antonluba Посмотреть сообщение
    Вопрос у меня пока в том, что даже получив значение FB из таймера, у меня синхронизации не получилось.
    Посмотрел USB анализатором, входящие пакеты синхронизации идут с нулевой длиной буфера почему-то.

    ---------- Сообщение добавлено 13.03.2025 в 11:10 ---------- Предыдущее сообщение было 12.03.2025 в 15:22 ----------

    Цитата Сообщение от antonluba Посмотреть сообщение
    Посмотрел USB анализатором, входящие пакеты синхронизации идут с нулевой длиной буфера почему-то.
    Нашел. Тупая ошибка. Неправильно проверял номер EP в Data_In.
    Пошли правильные значения, но синхронизация не работает. Спустя несколько минут звук портится.
    Хотя по расчетам частота очень близко получается с передаваемым значением.

Страница 35 из 36 Первая ... 2533343536 Последняя

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

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

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

Ваши права

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