Страница 17 из 18 Первая ... 715161718 Последняя
Показано с 321 по 340 из 342

Тема: Open-Source USB транспорт на PIC32MZ

  1. #1 Показать/скрыть первое сообщение.
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,805

    По умолчанию Open-Source USB транспорт на PIC32MZ

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

    Причина разработки своего транспорта - отсутствие в продаже USB транспортов с I2S входом для использования АЦП. Кроме того, те транспорты что есть в продаже не устраивали по тем или иным причинам (либо плохо сделана плата, либо большое потребление).
    Раньше сдерживающим фактором было отсутствие uac2 драйверов. Однако с переходом на win10 с нативным драйвером данная проблема была решена.
    Ну и вообще, т.к. на дворе 21-ый век, то для меня не понятно - почему uac2 еще не перекочевал в открытый доступ. Данная публикация призвана исправить такое досадное упущение.

    Почему PIC32MZ: Преимущество перед ARM процессорами - встроенный USB HS мост и одновременно удобный компактный корпус с удобной распиновкой. А по сравнению с кмосом - низкое потребление: порядка 70..80мА максимум.

    Изначально планировал использовать фреймворк (harmony configurator), однако по ходу выяснилось, что данный фреймворк генерирует только USB AUDIO приложение для формата Class 1.
    Кроме того по форумам полно отзывов по касякам в фреймворке. Дорабатывать фреймворк оказалось крайне контр-продуктивно из-за жесточайшей инкапсуляции, громоздкого стека и отсутствия его описания.

    Намаявшись с фреймворком принял решение писать свой код с нуля. Но очень скоро обломался, т.к. выяснилось что для PIC32 процессоров описание USB моста полностью отсутствует! Т.е. микрочип предлагает только пользоваться их кривыми фреймворками.
    Однако на форуме микрочипа нашлись добрые люди, которые поделились исходниками своих проектов USB девайсов на PIC32MZ: https://www.microchip.com/forums/m1083508.aspx
    Пользуясь данными примерами, а так же методом тыка, удалось написать свой достаточно эффективный код (итоговый размер с оптимизацией gcc компилятора уровня 2 - менее 16кБт).
    Конечно код не такой красивый как в фреймворках, слабовата инкапсуляция. Зато, разобраться в нем и доработать под свои нужды гораздо проще. А главное проще обходить касяки периферии, которые как оказалось имеют место быть.
    В частности есть не описанные в эррате проблемы с DMA модулями.

    Что в итоге удалось реализовать на самом чипе, без обвеса дополнительными микросхемами:
    1. Вывод стандартного стерео: 32bit 768kHz (Правда драйвер не отображает частоты выше 384к, но по факту 768к выводит). И сам модуль I2S пика позволяет выводить данные с частотой не выше 384к. 768к вывести тоже можно, но каким-то нестандартным интерфейсом, типа QSPI или параллельным портом.
    2. Вывод многоканала: 8-каналов 32bit 192kHz (опробовал только в отладочном режиме, подробнее ниже).
    3. Стерео вход: 32bit 768kHz (опробовал по факту только 192, т.к. мой АЦП больше не выдает).
    4. Распознавание DoP формата и вывод из него стерео DSD-битстрима частотой до DSD256 включительно.
    5. До кучи - добавлено CDC устройство (виртуальный COM-порт) для обмена данными с транспортом (в проекте используется в отладочном виде, на любые принятые данные отвечает строкой "CDC is works").

    Вывод многоканала физически не реализован, т.к. изначально в транспорте он не предусматривался. Работу проверял в отладочном режиме, переключая на выход пары каналов по очереди (остальные каналы выводили данные в отладочные буферы).
    Весь описанный выше функционал реализован на DMA модулях, благодаря чему хватает небольшой тактовой частоты процессора (160МГц для работы многоканала + стерео-входа).
    Причем изначально вывод данных в I2S модули выполнялся на DMA с прерываниями. Однако, выяснилось, что прерывания DMA работаю криво, из-за чего модуль может самопроизвольно вырубаться.
    Описал проблему на форуме микрочипа (в конце ветки), но - глухо как в танке: https://www.microchip.com/forums/FindPost/1219136

    Пришлось выкручиваться по другому. В результате получилось даже лучше, т.к. передача данных между I2S буферами и FIFO данных получилась полностью аппаратной (DMA модули перегружаются автоматически в цикле).
    Кроме того, для дополнительного снижения потребления добавлено 3 режима с разной тактовой частотой, в зав-ти от кол-ва каналов и выбранной ЧД.
    В результате потребление от USB шины (контроллер + развязка) с питанием через step-down получилось от 40мА (стерео-вывод), до 55мА (8-каналов + стерео вход).
    Отмечу, что в режиме FS (uac1) потребление можно опустить еще ниже: до 20..30мА, что может быть актуально для портативного девайса.

    Проект сделан в IDE MPLabX 6.05, с компилятором CX32 v4.1. Проверялся только на win10. Актуальная схема транспорта ниже во вложении.
    Конечно, нативный uac2 драйвер в win10 достаточно корявый, легко ломается сам и еще легче ложит винду (хватает ошибки в дескрипторе). Но готовый проект значительно облегчает отладку USB девайса, достаточно выпилить лишний функционал из дескриптора и обработчика команд.
    Особенности конфигурации USB моста или DMA модуля я постарался подробно описать комментариями, но если у кого-то найдутся другие проблемы - можно обсудить в ветке ниже.
    Вложения Вложения
    Последний раз редактировалось dortonyan; 24.12.2022 в 14:13.

  2. #321
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,805

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от antecom Посмотреть сообщение
    Теперь понял что в чипе 4 набора мультиплексоров и делителей, по кол-ву SPI модулей
    Ну нет же.
    Кол-во мультиплексоров с кол-вом модулей SPI никак не связано.
    Есть 4 мультиплексора, у каждого свой REFCLKI и REFCLKO.
    Все SPI модули подключены к 1-му мультиплексору, т.е. к REFCLKO1.

    Т.е. на скрине показан только первый мультиплексор и периферия, которая к нему подключена.
    К остальным мультиплексорам подключена какая-то другая периферия, а может на них вообще никакой периферии нету и остальные мультиплексоры используются только для деления опорного клока с выводом на REFCLKO.
    Последний раз редактировалось dortonyan; 19.01.2025 в 12:32.

  3. #322
    Завсегдатай Аватар для antecom
    Регистрация
    10.02.2005
    Адрес
    Королев
    Возраст
    51
    Сообщений
    2,989

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Ну нет же.
    Кол-во мультиплексоров с кол-вом SPI никак не связано.
    Есть 4 мультиплексора, у каждого свой REFCLKI и REFCLKO.
    Все SPI модули подключены к 1-му мультиплексору, т.е. к REFCLKO1.

    Т.е. на скрине показан только первый мультиплексор и периферия, которая к нему подключена.
    К остальным мультиплексорам подключена какая-то другая периферия, а может на них вообще никакой периферии нету и остальные мультиплексоры используются только для деления опорного клока с выводом на REFCLKO.
    Точно!

    Offтопик:
    Что то плохо соображаю с утра. "Надо меньше пить!"
    Максим vmaudio@mail.ru

  4. #323
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,483

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от antonluba Посмотреть сообщение
    Кто-то говорил, что у stm32 нормальная документация.
    Более-менее.
    Но иногда и там без бутылки не разберешся.

    Цитата Сообщение от antonluba Посмотреть сообщение
    Пока лучше, чем у микрочипа, я не видел.
    Я тоже.
    C тех пор как появились PIC-и 2-го поколения (93-94г), и практически одновременно и формат PDF.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  5. #324
    Старый знакомый Аватар для Кокон
    Регистрация
    12.06.2006
    Адрес
    Минск
    Сообщений
    510

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Все оно так.Только чипов нет.
    Плата аналогичная blue pill - pic32mz clicker стоит 71долл без учета доставки.

    Похоже на pic32mx можно сделать 4 канала на 4 каналах DMA.Через TDM скорее всего можно и больше.
    На 8 в проекте используется 6.
    Естественно mx и mz отличаются в основном DMA и частотой.

    Конечно могу ошибаться.
    Подкупает то, что mx семейство бывает даже в dip28!
    PIC32MX150F128B
    И оно доступно для заказа - 8долл.
    Не всем нужны 768,384кгц.
    Со скоростями 96кгц на макетке заработает.

    Где-то валялось пару mx795 делал на них плеер.
    В нем 8 каналов DMA.

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

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Чипы можно купить например на hqonline.com.
    Или найти на форуме - кто купит. В общем при желании доставаемо.
    UAC1 сейчас совсем не интересно.

  7. #326
    Старый знакомый Аватар для Кокон
    Регистрация
    12.06.2006
    Адрес
    Минск
    Сообщений
    510

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    hqonline.com это тоже, что и nextpcb?
    https://aliexpress.ru/item/1005007581555445.html
    И в РБ c РФ шлют?

    Тогда действительно нет смысла.

  8. #327
    Завсегдатай Аватар для antecom
    Регистрация
    10.02.2005
    Адрес
    Королев
    Возраст
    51
    Сообщений
    2,989

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Я недавно брал PIC32MZ на LCSC, через посредника.
    Максим vmaudio@mail.ru

  9. #328
    Старый знакомый Аватар для Кокон
    Регистрация
    12.06.2006
    Адрес
    Минск
    Сообщений
    510

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Скрытый текст

    [свернуть]


    Пару лет назад можно было поверить.

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

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от Кокон Посмотреть сообщение
    hqonline.com это тоже, что и nextpcb?
    Типа того.

    Цитата Сообщение от Кокон Посмотреть сообщение
    И в РБ c РФ шлют?
    В РФ не знаю, в РБ шлют. Но у них там есть опция доставки russian line, т.ч. думаю что и в РФ могут выслать.

  11. #330
    Завсегдатай Аватар для antecom
    Регистрация
    10.02.2005
    Адрес
    Королев
    Возраст
    51
    Сообщений
    2,989

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Заметил что иногда на Data линию USB ставят синфазный дроссель. Например такой https://www.chipdip.ru/product/dlw21hn900sq2l-murata в 0805 корпусе.
    Кто нибудь может объяснить какой в нем смысл, если +5V и земля USB подключены напрямую без синфазника.

    Пока развожу плату думаю стоит ли поставить их и на DATA и на питание что бы лучше развязать в диапазоне выше 100МГц. Хотя... если корпус USB разъема (экран кабеля) будет подключен к земле через параллельную RC цепочку, то получается установка синфазника и на питание смысла не имеет. Кто что думает?
    Максим vmaudio@mail.ru

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

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Скорее всего такой синфазник ставится для каких-то USB мостов со слабым CMRR (чувствительных к синфазным ВЧ помехам источника).
    Конкретно с пиком таких проблем замечено не было (я по крайней мере не встречал), поэтому мне кажется это излишне.
    Про RC цепочку не понял, она синфазный фильтр не заменяет (на ВЧ емкость все равно работает как перемычка.). Это скорее дополнительная развязка контурных токов по земле, чтобы по экрану не "бегал" сигнальный и силовой токи.
    Ну а для защиты от внешних ВЧ помех можно просто одеть на USB кабель ферритовую клипсу, или купить кабель с клипсой.

  13. #332
    Старый знакомый Аватар для Analog
    Регистрация
    20.12.2009
    Адрес
    СПб
    Сообщений
    749

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    antecom, вот, последний абзац поста как раз про заземление юсб соединителя
    https://forum.vegalab.ru/showthread....=1#post2786631
    "Широкая сцена и направленный провод – горе в семье"

  14. #333
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,483

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от antecom Посмотреть сообщение
    стоит ли поставить их и на DATA
    НЕ НАДО ставить СМ-фильтр на ЮСБ, если не нужна сертификация!
    (А если и нужна - то только если есть проблемы с ЕМС! )
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  15. #334
    Завсегдатай Аватар для antecom
    Регистрация
    10.02.2005
    Адрес
    Королев
    Возраст
    51
    Сообщений
    2,989

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Конкретно с пиком таких проблем замечено не было (я по крайней мере не встречал), поэтому мне кажется это излишне.
    Спасибо!
    Цитата Сообщение от dortonyan Посмотреть сообщение
    Про RC цепочку не понял, она синфазный фильтр не заменяет (на ВЧ емкость все равно работает как перемычка.)
    Это и имел ввиду. Экран кабеля на ВЧ подключен к земле PIC-а (через конденсатор), поэтому установка синфазника на питание ничего не даст.
    Цитата Сообщение от dortonyan Посмотреть сообщение
    Ну а для защиты от внешних ВЧ помех можно просто одеть на USB кабель ферритовую клипсу, или купить кабель с клипсой.
    Всегда считал что у них слишком низкий импеданс для хорошей фильтрации (т.к. всего один виток). Но оказывается бывают клипсы с импедансом выше 100ом на 100МГц:
    https://ferrite.ru/upload/docs/pdf/p...e9a15_zcat.pdf
    Получается действительно проще и лучше одеть пару клипс на концы кабеля.

    Analog, Alex, спасибо!
    Максим vmaudio@mail.ru

  16. #335
    Старый знакомый Аватар для Analog
    Регистрация
    20.12.2009
    Адрес
    СПб
    Сообщений
    749

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Алекс, чем повредит синфазный дроссель для линии Дата? 90 Ом это не особо много
    "Широкая сцена и направленный провод – горе в семье"

  17. #336
    Завсегдатай
    Автор темы
    Аватар для dortonyan
    Регистрация
    03.06.2009
    Адрес
    BLR
    Возраст
    39
    Сообщений
    3,805

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от antecom Посмотреть сообщение
    Получается действительно проще и лучше одеть пару клипс на концы кабеля.
    Хватит одной, со стороны транспорта.

  18. #337
    Завсегдатай Аватар для MikeF
    Регистрация
    04.11.2004
    Адрес
    Кемерово
    Возраст
    41
    Сообщений
    3,134

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от Alex Посмотреть сообщение
    НЕ НАДО ставить СМ-фильтр на ЮСБ
    Почему БОЛЬШИМИ БУКВАМИ? Что будет?
    Для связи: Skype и почта на моём сайте в профиле.
    С уважением,
    Михаил.

  19. #338
    Завсегдатай Аватар для l3VGV
    Регистрация
    02.05.2009
    Адрес
    Псков
    Возраст
    43
    Сообщений
    1,024

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от MikeF Посмотреть сообщение
    Почему БОЛЬШИМИ БУКВАМИ? Что будет?
    Будет сильное искажение сигнала, а дальше как повезет с приемником, может и отказаться принимать.
    Вложения Вложения

  20. #339
    Завсегдатай Аватар для MikeF
    Регистрация
    04.11.2004
    Адрес
    Кемерово
    Возраст
    41
    Сообщений
    3,134

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от l3VGV Посмотреть сообщение
    Будет сильное искажение сигнала
    Что значит "сильное"? Стоят на тех же материнских платах, вусмерть не исказилось... данные идут с высокой скоростью.
    Если чип убогий и импеданс 2000z, то вопросов нет конечно
    Для связи: Skype и почта на моём сайте в профиле.
    С уважением,
    Михаил.

  21. #340
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    62
    Сообщений
    38,483

    По умолчанию Re: Open-Source USB транспорт на PIC32MZ

    Цитата Сообщение от Analog Посмотреть сообщение
    Алекс, чем повредит синфазный дроссель для линии Дата?
    Они несколько ухудшают качество сгинала, т.к. ЮСБ сигнал не совсем симметричный.
    Ну и, они больше смысла (с точки зрения ЕМС) имеют на ЮСБ 3 чем на 2.
    Поэтому я и сказал - ставить при проблемах с ЕМС сертификацией, для своих домашних целей - не надо.

    Цитата Сообщение от Analog Посмотреть сообщение
    90 Ом это не особо много
    90 ом чего?
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Да мне-то что, меняйтесь!"(с)анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

Страница 17 из 18 Первая ... 715161718 Последняя

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

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

Ваши права

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