» » Поделки начинающего цапостроителя, часть 18/1. Рулим ЦАП АК4399 с помощью Arduino

 
 
 

Поделки начинающего цапостроителя, часть 18/1. Рулим ЦАП АК4399 с помощью Arduino

Разместил AlexD 23 марта 2016. Просмотров: 8 189

15

Я долго колебался – писать эту статью или нет. Это решение нужно было принять — основываясь на плюсах и минусах. Минусы были в том, что я в принципе ничего нового не создал и не изготовил. Получилась лабораторная работа студента-программиста, и то нагло списанная у одногруппника для получения зачета.
Но и плюс был весомый – все же процедура конфигурирования если и описана где-то в сети, то либо поставляется автором в виде готового .bin или .hex файла для прошивки контроллера (определенной модели) и заточена под конкретную конструкцию и функционал. А так как Arduino – гибкая платформа и вполне доступна для таких «ламеров» как я, то любому желающему будет несложно «допилить» ее под себя.
И я решил – опишу свои движения, может кому-то это будет полезно.
А началось все с того, что я решил пощупать ЦАП вида АК4399. Изначально у меня была идея попробовать ее в моно-режиме. То есть по одному корпусу на канал. Но эта идея так и осталась бы на уровне мечты, если бы у меня не появился коллега-программист. Пусть будет просто Программист. Он тоже интересуется техникой, качественным звуком, но он программист, а я электронщик. На этом мы и сошлись. Как то в разговоре с ним я упомянул про АК4399 и про то, что надо их программировать через SPI, чтоб использовать в режиме двойное моно, но я это не умею и никогда не делал.
Он ответил просто: «Бери пару, программу напишем!».

После такого смелого для меня утверждения, я не смог удержаться и сделал заказ на АК4399. Пока они спешили ко мне, я углубился в изучение материалов по ней. Что пишут люди, как используют. То, что я выяснил, немного шло в разрез с моими планами, но было более разумно.
Все дальнейшее описание будет основано на примере АК4399. Но контроллер можно использовать с любым другим ЦАП, поддерживающим программирование по SPI.

Итак. Нет смысла использовать ее в режиме моно – прирост качества будет небольщим. Больше внимания надо уделить питанию. Особенно питанию аналоговых выходов. Для этого монстры цапостроения используют малошумящие схемы стабилизаторов питания.
Также приветствуется и раздельное питание каналов.
Поэтому в процессе концепция поменялась.

Я не буду описывать ее здесь – это тема отдельной статьи, да и в принципе меняется только модуль ЦАП, а питание, цифровые входы и обработка мастерклока – остаются аналогичными моим предыдущим конструктивам. Например — ЦАП на сдвоенных РСМ1794. Я в нем выкинул модули ЦАП и выхлопа и заменил их на одну плату на АК4399. Поэтому она и получилась квадратной.

В процессе изучения даташита, возникла идея попробовать такую диковинку, как DSD.
Что это такое, можно прочитать в сети. Для меня же встала задача – как и откуда вытащить этот формат. Что это будет компьютер – это однозначно, но что компьютер должен еще и выдавать сигналы DSD – оказалось проблемой.

Недолгое изучение материалов по теме и выяснилось следующее:
Нужен USB интерфейс на базе процессора XMOS.
Мой текущий источник на базе Edel USB Interface не поддерживает нативно DSD, только DXD или DoP.
# накидал я тут терминов…
# я снова не буду описывать как передается DSD поверх I2S – это есть в сети и даташитах.
# что такое DoP и с чем его едят – тоже хорошо разжевано.

Моя проблема на тот момент – отсутствие источника USB to PCM/DSD. И я его нашел и купил – это Audiophonics XMOS USB interface.

Выбрал я его по следующим критериям: заявлена поддержка DSD на тех же ногах, что и у АК4399, то есть не потребуется мультиплексирование или отдельный разъем, поддержка внешнего тактирования, а также параллельная работа SPDIF выхода в режиме РСМ.

Минус только один – полное отсутствие какой-либо документации. Только надписи на плате и email производителя.
В общем к моменту приезда этой платы у меня был готов ЦАП с возможностью работы в хардварном режиме, а также с переключением в софтварный режим для конфигурации по SPI.

Списавшись с производителем, я все же разузнал, что и как надо правильно подключить к плате и как она должна работать. Вывел звук в режиме РСМ и мощное «ПШШШШШШШ» в режиме DSD.

Плата немного «допилена» по рекомендации производителя для приема внешнего MCLK от ЦАП — потому как они сами этот момент не проверяли, но в спецификации заявили.
Все это оформлено в отдельный корпус и с платы выведены нужные выходы для получения автономного источника.

Осталось дело за малым – программирование.
Мой товарищ- программист был занят по работе, поэтому весь процесс запуска прошел мимо него стороной.

Но собирать пыль очередному ЦАП на моем столе я не мог позволить – поэтому начал доставать Программиста:
 — Ну что, какой мне контроллер купить? В чем будем будешь программить? Мне же надо развести плату под девайс?
 — У меня есть «ардуина»… Мега там какая-то, не помню, дома гляну – сказал Программист, и на два дня уехал по рабочим делам.
 — Офигеть — сказал я, и на весь день погрузился в изучение матчасти.

Что такое «эта ваша ардуина» — я слышал, но не видел и не знал. Изучение матчасти немного прояснило ситуацию.
Но не до конца. Вариантов «ардуин» было так много, что я сначала просто не знал, за что схватиться. Во первых, никто и нигде не рассказывал, будет ли контроллер работать вне платы. Как залить этот самый «скетч» в чистый контроллер?

Ситуация стала меня напрягать все сильнее. Даже если мы запрограммим ее, то ставить большую отладочную плату внутрь ЦАП мне не улыбалось – просто не было места, разве что платы «мини», но и хотелось сделать свою плату под свою задачу.
Пинком под зад в выборе платы стала фраза Программиста:
 — Заказывай ардуину в нете, у меня моя чего-то не шьется, загрузчик слетел похоже…
 — Да, «Камазы» с водкой переворачиваются на нашей улице ежедневно, празднику нет конца – только и смог промолвить я в ответ.

Это еще ждать месяц, потом месяц будем программить такими темпами – короче слой пыли на новом ЦАП придется сметать лопатой. Будем разбираться своими силами или разбирать ЦАП. В общем поехал я в магазин наш местный на предмет приобретения «ардуины». Очень уж свербило и чесалось в одном месте.

И вот тут мне повезло. Мало того, что они были в магазине в наличии, так еще и можно было повыбирать. Встав в позу красной девицы на шоппинге, и игнорируя предложения продавца мне помочь (чем мне можно помочь, если я не знаю, что я хочу?), я тупил у витрины и понимал – надо принять решение! Вот вам хорошо это все читать, а мне было не весело!

Выбор пал на «Arduino UNO» на базе ATMega328 в корпусе DIP! В сокете моем любимом… Я уже тогда догадывался, что именно сокет спасет отца русской демократии. Не зря же он там установлен то?

На следующий день я задал вопрос монстру программирования:
 — Ну что, я пробую SPI подключить?
 — Не работает SPI на ардуине! Я пробовал! Пока не написал топорно перебором кода, не заработало – Программист был категоричен… Тут я добавлю, что он что-то там программил для SPI, поэтому слова его для меня были ударом по почкам.
 — Завтра заеду к тебе – попробуем.

Ага, это до завтра я не буду спать… И есть… И, возможно, даже пить — в ожидании чуда? Что мне нужно именно SPI, я уже понял, изучая матчасть по запросу «Arduino+SPI». Но почему оно не работает то?
Хорошо, у меня есть плата Arduino, есть готовый к бою ЦАП, есть поддержка DSD.

И вот в этот момент, как правило, происходит тот самый пинок, что ты даешь сам себе. Это смесь стыда за свою тупизну, обиды за себя и возмущения «почему я не смогу-то?»


Сам по себе процесс обмена данными не сложный и красиво разрисован в даташите:

Беру из примеров код инициализации SPI протокола, подключаю плату к компу, ставлю на стол осциллограф и начинаю программировать.
Сам по себе обмен по SPI подразумевает двунаправленную передачу данных. Если контроллер выдает данные, а устройство принимает их, то используется вывод контроллера MOSI — Master Output Slave Input. При чтении с устройства — MISO — Master Input Slave Output. АК4399 не поддерживает чтение — только запись.
Так же нужно выбрать, какой вывод будет отвечать за включение режима программирования — так называемый Slave Select. У АК4399 — это CSN.
По умолчанию у Arduino это вывод 10 (SS).

В общем соединить Arduino → AK4399 нужно так:
10 (SS) → (6)CSN
11 (MOSI) → (9)CDTI
13 (SCK) → (8)CCLK


Структура самого файла программы — «скетча» — тоже довольно проста. Сначала идет описание всех констант, библиотек, переменных, выводов и вводов. Все что нужно для инициализации системы.
Следом идет секция void setup {}.
В ней мы описываем режимы работы выходов, входов, флаги и константы, устанавливаемые при старте контроллера.
И главная секция void loop {}
Здесь размещается основной код. То, что исполняет контроллер в процессе работы. Из названия видно, что программа крутится в цикле.
Код оказался не сложным.

Начало.

Я решил не выходить за рамки примеров и обозначил данные, которые надо передать по SPI в явном виде, то есть в двоичном. «B» — binary. Так мне самому понятнее. Можно указать и шестнадцатеричный —, но склад ума не позволяет сходу переводить в уме форматы.
Если глянуть в даташит на АК4399, то видно, что в посылке идет сначала адрес, потом сами данные регистров.
Казалось бы в чем проблема — передавай 0010000000000111 и будет счастье.
Но контроллер может передать одной командой только 8 бит. Чтобы получить 16, нужно посылку делать из двух частей, и посылать эти части одну за другой. Сначала адрес, потом данные.

Продолжение.

Здесь описана секция setup.
Определяем пины. Нумерация как на плате Arduino.
Нога «0», например, конфигурируется как вход, на котором меняется логическое состояние от типа потока от источника- DSD или PCM.
Ноги «10,11,13» отданы под SPI, нога «12» — reset для ЦАП.
Далее идут режимы SPI.
SPI_MODE — режим передачи. Всего их 4. Отличия расписаны в документации.
MSBFIRST — порядок передачи бит.
SPI_CLOCK_DIV — скорость передачи. Значение определяется делением тактовой частоты на коэффициент (здесь «128» — самое медленное)

Продолжение.

Здесь сам процесс записи, начинается с SPI.begin (). Затем проверяется состояние входа «0» и происходит отправка той или иной посылки в ЦАП.
Подключаю осциллограф на 10 и 11 ногу ардуины.

То что я увидел на экране после загрузке «скетча» оказалось именно таким SPI, как нарисовано в даташите по АК4399.

Теперь перевожу АК4399 в режим serial. В таком виде по умолчанию она работает в режиме 24bit MSB justified, а это немного не подходит для моего режима 24bit I2S, что выдает мой источник. Ну да, звук есть, но с треском и шипением. Включаю «ардуину». Щелчок в наушниках и следом чистый звук!
YES!!! АК4399 явно отреагировала на мою посылку и переключилась в режим I2S!
Я себя представил в тот момент великим программистом! Чуть со стула не свалился от счастья!

А как там режим DSD. Это же самое интересное! Меняю тип вывода в настройках foobar2000, запускаю проигрывание. Источник переключается в режим DSD. Мощное «ПШШШШ» после включения ЦАП говорит о том, что поток дошел до ЦАП, но он его не понимает. Надо его перевести в DSD mode. Включаю «ардуину» — щелк, и голос Алана Парсона из наушников возвещает о моей победе над глупой железкой!
Да, время, деньги, силы потрачены не зря и что-то начало нарисовываться.

Теперь дело за малым – сделать так, чтоб контроллер менял режим по сигналу от источника. Для этого нужно код перенести в секцию void loop {}.
А она, как видно выше — у меня пустая…
Тупо перенести код туда не получилось, хоть компиляция и прошла успешно, но ожидаемой реакции ЦАП не было.
 — А ты в курсе, что я могуч? — Написал я сообщение Программисту – SPI то у меня работает!
 — Серьезно? Ну ты монстр! – он был явно удивлен.
 — Но дальше я туплю, без тебя не справлюсь.
 — Ладно, жди, завтра заеду.

Ну хорошо, результат уже есть, и пока я хожу по кругу, попробую, что еще может эта «ардуина». Подключил дисплей 16×2. Попробовал повыводить разные фразы и надписи. Работает.

С тем обилием примеров в сети — это оказалось проще, чем SPI.

Тут же родилась идея, сделать уже не просто конфигуратор, а полноценный модуль управления ЦАП с селектором входов и индикацией режимов работы.
Блок-схема:

И я начал рисовать схему и плату. В этот момент я не был уверен, что ATMega сможет работать вне платы Arduino, но изучив документацию — все же рискнул. Просто как обычно выяснилось — никто таких задач себе не ставил — просто использовал готовую плату Arduino.

Схема модуля управления ЦАП с селектором входов и индикацией режимов работы

Исключён фрагмент. Полный вариант статьи доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.

Идей сразу вылезло масса. Убрать галетник как селектор входов, индикация режимов само собой, и плюс к этому возможность измерения и выдачи на экран текущего значения частоты семплов для PCM и для DSD.
Я настолько сильно раскатал губу, что у меня закончились ноги у контроллера, заклинив намертво губозакаточный станок.

На схеме все ноги подписаны, IC2- конвертер уровней с 5В на 3,3В. Так как контроллер запитан от 5В, а в ЦАП питание мультиплексоров 3.3В — это просто необходимо.

Кварца на 16 МГц у меня не нашлось, ехать покупать было лень, зато нашлось несколько точных генераторов на 16.000000МГц, поэтому на схеме изображено два варианта. На плате тоже. Логические уровни для режимов PCM\DSD и Mute указаны возле соответствующих выводов.
Поискав в сети примеры измерения частоты, и поиграв с ними я понял, что в лоб эту задачу не решить. Через таймеры оно работает медленно, а через простой счет импульсов — большая погрешность.

Пока решив отложить это, я прикрутил кнопки и LED для переключения входов и индикации выходов. И сел в ожидании чуда, точнее приезда настоящего программиста.

Он, как и обещал, приехал на следующий день. Обвинив меня в некомпетентности обрушив на меня пару ведер нечистот, несмотря на мои заявления о «ламерстве», он сел рядом и мы стали анализировать то, что я наковырял.

Оказалось, что для выборочной работы SPI, в зависимости от состояния ноги выбора режима, надо ввести так называемые «флаги». Проверяя которые в цикле, контроллер будет выполнять только тот код, что соответствует этим флагам.

Итак, креатив попер!

Я буду давать небольшие пояснения.

Ввели библиотеку для LCD дисплея. Добавили отдельно программирование режима MUTE. Ввели флаги. Здесь описание uint8_t простое число, которое присваивается каждому флагу. Флаги ввели для каждого режима работы, включая запись в дисплей. Но об этом ниже.

Здесь описан setup. Вместе с описанием выводов здесь задаются значения всех флагов, которые будут выставлены при старте. Обратите внимание — DSDFlag и MUTEFlag у нас задан значением 2, так как мы не знаем, что будет на входах PCM\DSD и MUTE при старте, и после чтения состояния соответствующих входов — отработает нужная процедура далее по тексту.

Исключён фрагмент. Полный вариант статьи доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Больше всего я переживал, что контроллер вне платы Arduino не захочет включаться и работать, но все мои опасения оказались напрасными!


Осталось проверить работу кнопок.


А также корректную смену режимов.

И запихать девайс в корпус.
 — Ну, а где частотомер? — спросит пытливый читатель.

Эта часть проекта зависит не от меня, поэтому буду ждать программиста. Пока код занимает 10% от объема памяти контроллера, поэтому его можно долго и упорно «допиливать». Будем отлаживать на готовом проекте, благо ничего менять в схеме и в оформлении не потребуется. Только прошивка —, а ее можно модифицировать как угодно.

Итого

В заключении, чтобы повествование было полным, пару слов про звук.
Ну что продукция АКМ мне нравилась издавна, я уже говорил. Мне вообще нравится их инженерный подход к делу. Очень детальный даташит, грамотная распиновка выводов, за исключением выходов, в одном канале приходится все время перекрещивать выходы, хороший, не утомляющий звук.

Но про DSD говорить пока рано, очень мало контента, и тот, что доступен, является, как правило, ремастерингом уже выпущенных на CD альбомах, это, например, сразу слышно даже по шуму мастер-ленты в начале и конце композиции. Но зато современная музыка, записанная уже на современном оборудовании звучит конечно очень ярко и насыщенно, но судить о преимуществах и недостатках пока мне сложно — мало материала отслушано.
Но похоже за этим форматом есть какое-то будущее, а значит иметь его поддержку в своем ЦАП не помешает.

Файлы

Полный скетч программы и схема с платой здесь:
20-04-2016 Обновил архив с новым именем скетча.
datagor4490.7z | Файл 32,85 Kb загружен 60 раз.

Ну, а пока на этом все.
Просьба тем кто «в теме» не пинать ногами — это мой первый самостоятельный проект на МК и первое за много лет серьезное программирование.

Продолжение последует.
С уважением, Алексей.
Алексей (AlexD)
Алматы, Казахстан
Профиль AlexD
Родился 6 апреля 1972 года.
Хобби-радиоэлектроника.
Увлекся железом еще с раннего детства,чем доставлял немало хлопот родителям.
Не брали в радиокружок в 4 классе,т.к. в школе еще не преподавали физику (вот такие были правила).
Сейчас занимаюсь ремонтом и настройкой компьютеров,в свободное время что-нибудь паяю или собираю-разбираю:)
 

Понравилось? Палец вверх!

  • всего лайков: 120

20 апреля 2016 изменил Datagor. Обновил архив с новым именем скетча.

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья Поделки начинающего цапостроителя, часть 18/3. Рулим ЦАП с помощью Arduino. Работаем с графическим TFT-дисплеем... Продолжаю рассказ! После относительно успешных экспериментов с использованием Arduino...
Схема на Датагоре. Новая статья Поделки начинающего цапостроителя, часть 18/2. Рулим ЦАП АК4490 с помощью Arduino... Если бы мне кто-то сказал, что я когда то буду заниматься программированием, я бы наверное покрутил...
Схема на Датагоре. Новая статья Поделки начинающего цапостроителя. Часть 16. В погоне за THD... Я хорошо помню свое босоногое радиолюбительсткое детство. Тогда не было этих ваших интернетов, зато...
Схема на Датагоре. Новая статья Поделки начинающего цапостроителя. Часть 13. Грейд микросхем ЦАП. РСМ63Р-К... Заняться изготовлением данного утройства меня подтолкнуло любопытство. Когда я возился с новыми...
Схема на Датагоре. Новая статья Сделай сам 2.1 усилитель для портативного плеера. Чип MAX98400 - мощный усилитель класса D в действии... Компания MAXIM представила 11 ноября 2011г. обновленный Reference Design #4320В, который включает...
Схема на Датагоре. Новая статья Поделки начинающего цапостроителя. Часть 10. АК4113 от потомков самураев и WM8741 от британцев... Предлагаю вашему вниманию ресивер фирмы Asahi Kasei Microdevices – АК4113. А также ЦАП-ы с его...
Схема на Датагоре. Новая статья Поделки начинающего цапостроителя. Часть 8. Обзор цифровых ресиверов DIR9001, WM8805, AK4113, РСМ2707 (Обновлено)... Чем больше времени тратишь на разработку, тем меньше на сборку и отладку. Жизненное наблюдение. ...
Схема на Датагоре. Новая статья Поделки начинающего цапостроителя. Часть 3. РСМ1796, DIR9001, РСМ2704, ADM485... РСМ1796 - что это за зверь и с чем ее едят. Покорение новых горизонтов. Иногда наступает момент,...
Схема на Датагоре. Новая статья Простой гибридный гитарный усилитель для начинающих... Противостояние приятного на слух звука лампового гитарного усилителя и массогабаритных...
Схема на Датагоре. Новая статья Дискотека своими руками. Б.Ю. Семёнов... Дискотека своими руками. Б.Ю. Семёнов Издательство: "Солон-пресс" Год издания: 2005 Страниц: 256...
Схема на Датагоре. Новая статья Усилитель TL082 + UTC2030 с виртуальной массой... Идея приготовить самодельный усилитель из того, что имеется под рукой родилась неожиданно, когда...
Схема на Датагоре. Новая статья 12111 - троян ICQ System атакует?... Вы знаете, что такое массовая истерия? А вот, почитайте. Вам такое не присылали взволнованные...
<
  • Бонус
23 марта 2016 17:59

Ербол / erbol

  • С нами с 11.12.2014
  • Ушёл в реал Пользователь offline
  • 58 комментариев
  • 7 публикаций
 
  • 0
Добрый день, Алексей! Всегда с интересом читаю Ваши статьи. Рад, что приобщились к миру МК smile Спасибо за статью!

<
  • Подписчик
23 марта 2016 19:10

Андрей / 66Andy17

  • С нами с 3.04.2011
  • Ушёл в реал Пользователь offline
  • 35 комментариев
  • 2 публикации
 
  • 0
Алексейб как всегда впереди планеты всей. Идея и конструкция просто великолепны.
Идея аналогичного применения ардуины давно сидит в голове. Однако дальше смены мигания диода с однократного на двукратное руки пока на дошли)))
В качестве совета хотел бы предложить использование ардуино нано. Его можно целиком впаять в плату или установить в панельку. И корректировать программу прям в процессе наладки. Да и стоит он почти как голый контроллер.

<
  • Подписчик
24 марта 2016 05:23

Сергей / micbsv

  • С нами с 21.12.2011
  • Ушёл в реал Пользователь offline
  • 2 комментария
  • 0 публикаций
 
  • 0
Алексей, спасибо за очередное приключение!

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

<
  • Гражданин
24 марта 2016 09:37

Алексей / AlexD

  • С нами с 21.11.2008
  • Ушёл в реал Пользователь offline
  • 244 комментария
  • 44 публикации
 
  • +2
Цитата: erbol
Добрый день, Алексей! Всегда с интересом читаю Ваши статьи. Рад, что приобщились к миру МК smile Спасибо за статью!
Спасибо, Ербол, за отзыв. От земляка вдвойне приятно! handshake

Цитата: 66Andy17
В качестве совета хотел бы предложить использование ардуино нано.
Я немного анонсирую. Будет и NANO, и STM32, и цветной графический TFT 320*240, и ПЛИС начального уровня. Нужно немного подождать - это первая часть эпопеи, начало, так сказать!

Цитата: micbsv
как на законченном устройстве чтобы наслаждаться музыкой через наушники?
Да все они законченные в той или иной мере. Просто когда сделаешь устройство, задумываешься- а ведь можно попробовать что-то улучшить или сделать иначе... И начинааааается.... smile

<
  • Подписчик
24 марта 2016 12:18

Игорь / StalKer-NightMan

  • С нами с 15.03.2012
  • Ушёл в реал Пользователь offline
  • 86 комментариев
  • 1 публикация
 
  • 0
Спасибо, Алексей, очень добротная статья.

<
  • Гражданин
25 марта 2016 19:40

Марат / Злой

  • С нами с 20.01.2009
  • Ушёл в реал Пользователь offline
  • 15 комментариев
  • 0 публикаций
 
  • 0
Алексей, красиво и доходчиво.
А что не посмотрел на своих разработчиков, имею в виду продукцию Алексея Энергетика. У меня правда Болеро без ДСД (купил такую, хотя стоит с ДСД столько же).

<
  • Подписчик
26 марта 2016 02:41

Павел / Pavel-Pochivalov

  • С нами с 6.10.2013
  • Ушёл в реал Пользователь offline
  • 5 комментариев
  • 0 публикаций
 
  • 0
Читал взахлеб! Спасибо за очередную интересную статью! По поводу частотомера мое мнение - частотомер на atmega всегда дикий костыль. Не умеет эта микросхема быстро и качественно частоту мерить. Но это только мое мнение, возможно все получится, стоит только захотеть.

<
  • Гражданин
28 марта 2016 09:59

Алексей / AlexD

  • С нами с 21.11.2008
  • Ушёл в реал Пользователь offline
  • 244 комментария
  • 44 публикации
 
  • 0
Цитата: Злой
Алексей, красиво и доходчиво.
А что не посмотрел на своих разработчиков, имею в виду продукцию Алексея Энергетика. У меня правда Болеро без ДСД (купил такую, хотя стоит с ДСД столько же).

Самое интересное, Марат, что я про него совсем забыл. Читал ветку форума давно, еще когда он был в стадии разработки. Ну а когда приспичило - то просто напряг гугля на предмет XMOS+DSD smile

Цитата: Pavel-Pochivalov
Не умеет эта микросхема быстро и качественно частоту мерить. Но это только мое мнение, возможно все получится, стоит только захотеть.


Самое интересное, что даже STM32 c тактовой 72мгц не смог измерить в лоб с использованием прерывния для измерения частоту выше 800кгц. Любые измерения с отложенным выводом результата - пожалуйста, а в реалтайме никак. Может конечно если писать на ASM - то получится - но тут я пока пас...

Ну и конечно спасибо всем за отзывы! hi

<
  • Гражданин
31 марта 2016 22:20

Виктор / alchedat

  • С нами с 20.03.2009
  • Ушёл в реал Пользователь offline
  • 57 комментариев
  • 9 публикаций
 
  • 0
Маэстро ЦАПостроения!

<
  • Гражданин
19 апреля 2016 16:45

Артур / Artham

  • С нами с 25.01.2010
  • Ушёл в реал Пользователь offline
  • 8 комментариев
  • 0 публикаций
 
  • 0
Алексей, спасибо за очередную статью цикла, это как крутой блокбастер, сразу начинаешь ждать продолжения))). Купил на али ЦАП на AK4490 и как тут же в статье описано вместо DSD услышал мощное ПШШШШШШ.

Возникла мысль "прикрутить" описанное в статье устройство к моему ЦАПу.
Есть два вопроса:
1. Совпадают ли в смысле управления AK4399 и AK4490?
2. Не могу открыть Ваш скетч в среде Arduino 1.6.8, пишет "невозможно создать скетч", затем "ошибка при открытии скетча: путь к скетчу"

<
  • Гражданин
20 апреля 2016 15:42

Алексей / AlexD

  • С нами с 21.11.2008
  • Ушёл в реал Пользователь offline
  • 244 комментария
  • 44 публикации
 
  • +1
Цитата: Artham
1. Совпадают ли в смысле управления AK4399 и AK4490?

Немного не совпадают, но в следующей части будет про АК4490.
PCM\DSD точно переключится - адрес и данные в регистрах совпадают.
В целом они похожи, но АК4490 вариантов настроек побольше.
Цитата: Artham
2. Не могу открыть Ваш скетч в среде Arduino 1.6.8, пишет "невозможно создать скетч", затем "ошибка при открытии скетча: путь к скетчу"

Я не знаю с чем это связано, скачал архив, вытащил оттуда файл, сравнил с исходником - одинаков (исходник назван длинно и матерно), добавил _ к имени ( то есть скетч стал называться _AK4399.ino) и оболочка подхватила его номально. Попробуйте.

<
  • Гражданин
20 апреля 2016 16:05

Артур / Artham

  • С нами с 25.01.2010
  • Ушёл в реал Пользователь offline
  • 8 комментариев
  • 0 публикаций
 
  • 0
Цитата: AlexD
Я не знаю с чем это связано, скачал архив, вытащил оттуда файл, сравнил с исходником - одинаков (исходник назван длинно и матерно), добавил _ к имени ( то есть скетч стал называться _AK4399.ino) и оболочка подхватила его номально. Попробуйте.

Действительно, поменял название и открылся скетч. Теперь осталось дождаться следующей статьи цикла, хотя это очень сложно))).

<
  • Главный редактор
20 апреля 2016 18:56

Игорь Петрович Котов / Datagor

  • С нами с 25.02.2011
  • Ушёл в реал Пользователь offline
  • 1 608 комментариев
  • 257 публикаций
 
  • 0
Очень странная реакция среды Arduino. Обновил архив с новым именем скетча.

<
  • Гражданин
19 июня 2016 17:37

Владимир / Vlad_B

  • С нами с 2.02.2009
  • Ушёл в реал Пользователь offline
  • 15 комментариев
  • 0 публикаций
 
  • 0
ага... а что тогда не взять 1620 с I2C ? для ардуино их море и всего двумя проводками...

<
  • Гражданин
31 октября 2016 00:27

Максим / Fox123

  • С нами с 3.03.2010
  • Ушёл в реал Пользователь offline
  • 5 комментариев
  • 0 публикаций
 
  • 0
Очень хочется продолжения, особенно про реализацию частотомера. Алексей, хотя бы намекните, удалось ли его реализовать на элементной базе, описанной в статье? Ибо готовлюсь к разработке "с нуля" на AK4495...

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.