Страница 8 из 14 Первая ... 678910 ... Последняя
Показано с 141 по 160 из 261

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

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

    По умолчанию 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. #141
    Не хочу! Аватар для Alex
    Регистрация
    20.03.2003
    Адрес
    Worldwide
    Возраст
    61
    Сообщений
    36,249

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Ну я же выше писал, что есть другие привходящие факторы, мещающие применять аттенюацию в цифре.
    Ну да, я когда-то по некоторым причинам сделал постоянную аттенюацию, всего -3дБ в цифре, и народ взвыл, потребовали вернуть как было.

    P.S. А сейчас народ стал настолько не привередлив, что им уже и РГ в цифре годятся и на поглоовные импульсные БП в ЦАПах внимания не обращают, и джиттер никого не пугает. Я уже о класс-Д пукалках молчу...
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  3. #142
    Новичок Аватар для nabiullin
    Регистрация
    08.05.2018
    Адрес
    Уфа, Башкирия
    Возраст
    40
    Сообщений
    62

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

    подскажите пожалуйста, куда копать:

    Connecting to MPLAB PICkit 3...

    Currently loaded firmware on PICkit 3
    Firmware Suite Version.....01.56.09
    Firmware type..............PIC32MZ

    Programmer to target power is enabled - VDD = 3,250000 volts.
    Target device PIC32MZ2048ECG064 found.
    Device ID Revision = A5
    DEVSN0 = 3980cbd9
    DEVSN1 = 618ad880

    Device Erased...

    Programming...

    The following memory area(s) will be programmed:
    boot config memory
    configuration memory
    Programming/Verify complete


    один раз прошло так, потом:
    при передергивании программатора он определяется

    Connecting to MPLAB PICkit 3...

    Currently loaded firmware on PICkit 3
    Firmware Suite Version.....01.56.09
    Firmware type..............PIC32MZ

    Programmer to target power is enabled - VDD = 3,250000 volts.
    Target device PIC32MZ2048ECG064 found.
    Device ID Revision = A5
    DEVSN0 = 3980cbd9
    DEVSN1 = 618ad880

    а при попытке прошить или стереть:

    Unable to connect to the target device.
    Failed to get Device ID


    используется кварц на 12мгц, и на нем осцилом не щупается пульс...
    MPLAB X 6.00 + CX32 4.1
    Последний раз редактировалось nabiullin; 16.02.2024 в 14:28. Причина: доп.
    система в авто:
    процессор AudioBerry DSP1 -> усь Alpine MRP f900 -> ас Bewith Accurate 2 + саб Pioneer ODR TS2

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

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

    Кварц на прошивку не влияет, он используется только для тактирования USB модуля.

    У меня с PicKit3 проблема была с тормозами и отваливанием в режиме отладки. Прошивалось вроде нормально.
    Точнее какие-то глюки/тормоза были, но помогало сброс питания проца, отладчика и перезапуск IDE.
    Может отладчику надо обновить фирмваре?
    И еще у пиккита есть разные режимы (уже не помню для чего) которые меняются через смену фирмваре в IDE. Может не тот мод задан?

  5. #144
    Новичок Аватар для nabiullin
    Регистрация
    08.05.2018
    Адрес
    Уфа, Башкирия
    Возраст
    40
    Сообщений
    62

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Кварц на прошивку не влияет, он используется только для тактирования USB модуля.

    У меня с PicKit3 проблема была с тормозами и отваливанием в режиме отладки. Прошивалось вроде нормально.
    Точнее какие-то глюки/тормоза были, но помогало сброс питания проца, отладчика и перезапуск IDE.
    Может отладчику надо обновить фирмваре?
    И еще у пиккита есть разные режимы (уже не помню для чего) которые меняются через смену фирмваре в IDE. Может не тот мод задан?

    в ходе различных тыканий и попыток, иде написала красным по белому что прошиваемый объект голодает и ему нужно внешнее питание, дал ему 3.3 с внешнего стаба.
    Среда кажется успешно его прошила, и теперь ошибок с инициализацией мк нету.
    Однако при подключении устройства в USB виндовс не реагирует. Устройство не появляется в диспетчере устройств.


    Connecting to MPLAB PICkit 3...

    Currently loaded firmware on PICkit 3
    Firmware Suite Version.....01.56.09
    Firmware type..............PIC32MZ

    Programmer to target power is enabled - VDD = 3,250000 volts.
    Target device PIC32MZ2048ECG064 found.
    Device ID Revision = A5
    DEVSN0 = 3980cbd9
    DEVSN1 = 618ad880

    Device Erased...

    Programming...

    The following memory area(s) will be programmed:
    boot config memory
    configuration memory
    Programming/Verify complete

    Нажмите на изображение для увеличения. 

Название:	2024-02-16_20-34-54.png 
Просмотров:	22 
Размер:	271.4 Кб 
ID:	450100
    система в авто:
    процессор AudioBerry DSP1 -> усь Alpine MRP f900 -> ас Bewith Accurate 2 + саб Pioneer ODR TS2

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

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

    Цитата Сообщение от nabiullin Посмотреть сообщение
    Однако при подключении устройства в USB виндовс не реагирует. Устройство не появляется в диспетчере устройств.
    Винда 10-ка? Драйвер UAC2 есть только в ней.
    Кварц нормально стартует?
    Ну и подключение выполняется с задержкой 3сек. Для процев EC, для EF можно эту задержку убрать.

  7. #146
    Новичок Аватар для nabiullin
    Регистрация
    08.05.2018
    Адрес
    Уфа, Башкирия
    Возраст
    40
    Сообщений
    62

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Винда 10-ка? Драйвер UAC2 есть только в ней.
    Кварц нормально стартует?
    Ну и подключение выполняется с задержкой 3сек. Для процев EC, для EF можно эту задержку убрать.
    да, 10-ка, кварц не стартует...
    паралельно кварцу 1мОм стоит, на вашей схеме еще есть подтяжка на 32й ноге R160, она нужна? и какой там номинал
    система в авто:
    процессор AudioBerry DSP1 -> усь Alpine MRP f900 -> ас Bewith Accurate 2 + саб Pioneer ODR TS2

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

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

    Цитата Сообщение от nabiullin Посмотреть сообщение
    паралельно кварцу 1мОм стоит, на вашей схеме еще есть подтяжка на 32й ноге R160, она нужна? и какой там номинал
    10к, но по итогу я от этой подтяжки отказался. Т.к. она увеличивает амплитуду генерации, но затрудняет старт.
    Попробуйте просто максимально точно подобрать нагрузочные емкости кварца (с учетом емкостей портов проца порядка 4пФ).
    Ну и можно еще попробовать добавить последовательный резистор: Rs на этой схеме 100 Ом...1к.

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

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    Винда 10-ка? Драйвер UAC2 есть только в ней.
    Ну это-ж не важно - само "некое USB устройство люая винда увидит, правда оно будет желтеньким (или красненьким), для этого достаточно просто резистора пуллапа, можно даже без процессора
    А тут, как я понял, вообще ничего, значит проц не работает.
    "Замполит, чайку?"(с)"Охота за Красным Октябрем".
    "Ну что, можете меняться обратно."(с)типа анек.
    <-- http://altor1.narod.ru --> Вопросы - в личку, е-мейл, скайп.

  10. #149
    Новичок Аватар для nabiullin
    Регистрация
    08.05.2018
    Адрес
    Уфа, Башкирия
    Возраст
    40
    Сообщений
    62

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

    появился пульс на 2 мгц с генератора....
    однократно.
    система в авто:
    процессор AudioBerry DSP1 -> усь Alpine MRP f900 -> ас Bewith Accurate 2 + саб Pioneer ODR TS2

  11. #150
    Старый знакомый Аватар для dee-jan
    Регистрация
    09.07.2009
    Адрес
    BLR
    Возраст
    42
    Сообщений
    923

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

    Все-таки надо было ставить обычный генератор на 12мгц, что я и сделал в своих пиках.
    Никаких проблем.
    Сергей.

  12. #151
    Частый гость Аватар для eclipsevl
    Регистрация
    31.01.2009
    Адрес
    Гаага
    Возраст
    29
    Сообщений
    421

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

    Цитата Сообщение от nabiullin Посмотреть сообщение
    Нарисовал схему и плату по мотивам топика.
    Хочется протестировать жизнеспособность и пригодность транспорта в своих проектах.

    Плата нарисована за один вечер, далека от идеала, но для отладки и запуска, полагаю, будет достаточно.
    Изоляторы использованы ISO7641 (и их китайский аналог CA-IS3741HW от ChipAnalog) так как они есть у меня, но понадобилось поставить 4шт, вместо двух SI8662BB-B-IU - дико дорогих, как в исходной схеме.

    Сама плата и схема в картинках:
    Вложение 441773
    Вложение 441774

    И схема в pdf формате.


    Exposed pad не заземлил?

  13. #152
    Новичок Аватар для nabiullin
    Регистрация
    08.05.2018
    Адрес
    Уфа, Башкирия
    Возраст
    40
    Сообщений
    62

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

    Цитата Сообщение от eclipsevl Посмотреть сообщение
    Exposed pad не заземлил?
    оказывается его нету у этого чипа (или у меня китайская подделка?)
    а футпринт заменил.
    система в авто:
    процессор AudioBerry DSP1 -> усь Alpine MRP f900 -> ас Bewith Accurate 2 + саб Pioneer ODR TS2

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

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

    nabiullin, так вы пробовали точно подобрать нагрузочные емкости кварца?
    У меня сейчас стабильно работает схема на кварце с 1М резистором в параллель и с точно подобранными нагрузочными емкостями. Все.

  15. #154
    Новичок Аватар для nabiullin
    Регистрация
    08.05.2018
    Адрес
    Уфа, Башкирия
    Возраст
    40
    Сообщений
    62

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

    нет, не получилось, я не понял как подбирать нагрузочные емкости, жду почту с генератором на 12 мгц.
    система в авто:
    процессор AudioBerry DSP1 -> усь Alpine MRP f900 -> ас Bewith Accurate 2 + саб Pioneer ODR TS2

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

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

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

  17. #156
    Завсегдатай Аватар для MikeF
    Регистрация
    04.11.2004
    Адрес
    Кемерово
    Возраст
    40
    Сообщений
    3,117

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    с точно подобранными нагрузочными емкостями
    Это неправильная фигура речи или на самом деле нужно прям подбирать чтобы запустился генератор в проце?
    Для связи: Skype и почта на моём сайте в профиле.
    С уважением,
    Михаил.

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

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

    Цитата Сообщение от MikeF Посмотреть сообщение
    Это неправильная фигура речи или на самом деле нужно прям подбирать чтобы запустился генератор в проце?
    Имел ввиду подобрать с максимальной точностью из стандартного ряда номиналов. Под номинал нагрузочной емкости кварца (из ДШ), с учетом емкостей портов процессора.
    У меня по крайней мере работал нестабильно, или вообще не запускался, пока не поставил точные номиналы.

  19. #158
    Завсегдатай Аватар для MikeF
    Регистрация
    04.11.2004
    Адрес
    Кемерово
    Возраст
    40
    Сообщений
    3,117

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

    Цитата Сообщение от dortonyan Посмотреть сообщение
    У меня по крайней мере работал нестабильно
    Проц что ли такой капризный...
    Никогда этим не заморачивался с atmel, stm и прочими другими когда, например, помирали кварцы и нужен был ремонт.
    Просто ставил конденсаторы вдвое больше нагрузочной кварца, либо что было под руками из кварцев, естественно не зная их модели и параметров. Последнее нехорошо конечно, но работали
    Последний раз редактировалось MikeF; 22.02.2024 в 11:51.
    Для связи: Skype и почта на моём сайте в профиле.
    С уважением,
    Михаил.

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

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

    Цитата Сообщение от MikeF Посмотреть сообщение
    Проц что ли такой капризный...
    Да, какой-то касячный генератор, я про это в самом начале писал. Обычно при неточной нагрузке просто частота чуть уплывает.
    А у пиков в эррате вообще написано, что проверена работа только вот с таким-то конкретным кварцем (абракон вроде), с другими работа не гарантирована.

  21. #160
    Завсегдатай Аватар для MikeF
    Регистрация
    04.11.2004
    Адрес
    Кемерово
    Возраст
    40
    Сообщений
    3,117

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


    Offтопик:
    Мда, неприятная особенность, если для массового производства.
    Для связи: Skype и почта на моём сайте в профиле.
    С уважением,
    Михаил.

Страница 8 из 14 Первая ... 678910 ... Последняя

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

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

Ваши права

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