Разное и полезное > Микроконтроллеры и их программирование

Управление ES9018 с помощью Ардуино

(1/42) > >>

Morpheus123:
По многочисленным просьбам я решил создать новую ветку на тему разработки программы для управления чипом ЦАПа ES9018. Когда я заказал китайскую плату от Weiliang, оказалась, что, несмотря на примененный в ней продвинутый чип ES9018, в стоковом варианте звук она дает не очень хороший. Из своего опыта могу сказать, что почти все китайские недорогие ЦАПы дают примерно одинаковый пластмассовый звук. Чтобы реализовать заложенный в них потециал, их нужно серьезно доработать. Это касается в первую очередь схемотехники. Оказалось, что некоторые ЦАПы также имеют возможность настройки с помощью програмного обеспечения. ES9018 относится к их числу. 

ES9018 имеет 71 регистр. Не о всех из них можно найти полную информацию, но назначение многих из них можно понять из даташита ES9018. Все регистры Сабри транзиентные. Это значит, что если записать различные значения в регистры, после выключения питания они не сохранятся. При подаче питания на ES9018 регистры получат дефолтные значения. Записывая в них значения, отличные от дефолтных, можно менять характеристики ES9018, например коммутировать каналы, ES9018 является 8-канальным ЦАПом, коммутировать входы, менять различные параметры преобразования, что в конечном итоге влияет на звук. Также можно регулировать громкость, так как ES9018 имеет встроенный регулятор громкости. Менять значения регистров можно с помощью программы, записанной в контроллере. Управляющая программа програмирует регистры по протоколу I2C. В качестве контроллера можно использовать обычную Ардуину. 

Управляющая программа должна выполнять следующие основные функции:

   1. Обрабатывать нажатие на кнопки или работать с энкодером.
   2. Читать значения регистров ES9018.
   3. Выводить информацию на дисплей.
   4. Менять значения регистров.
   5. Сохранять текущие значения регистров в памяти контроллера и восстанавливать их при включении питания.

Около года назад я закончил работу над первой версией такой программы и опубликовал ее в ветке про ЦАП на ES9018. Я решил обсуждение этой программы и всю информацию о ней перенести в эту ветку.

Программа управляет регистрами Сабри по I2C. Она позволяет менять некоторые параметры ES9018, коммутировать входы и регулировать громкость. Все настройки сохраняются в памяти контроллера при выключении питания. Есть возможность сбросить сохраненные настройки и перейти к настройкам по умолчанию.
Программа работает с двухстрочным дисплеем и блоком кнопок, идущими в комплекте с ЦАПом.
Ниже я добавил архив, содержащий исходный код программы.

Это первая версия. Она написана в Atmel Studio 6, которую можно скачать бесплатно по этой ссылке: http://atmel-studio.software.informer.com/6.0/. Для работы также необходимо установить Visual Micro пагин, который можно найти здесь: http://www.visualmicro.com/page/Arduino-Visual-Studio-Downloads.aspx.

Напрашивается вопрос, почему я использовал Atmel Studio. Дело в том, что программа использует классы. Такой подход имеет свои плюсы и минусы. Главный минус в том, что использование классов сильно увеличивает память, которую требует программа. Плюс в том, что это позволяет легко читать и менять код, меняя классы. Скорее всего минусы перевешивают плюсы :D.

Сейчас я работaю над второй версией программы. Пока я отказался от Atmel Studio и перешел в Microsoft Visual Studio. Возможно я откажусь от использования классов.

Althair:
Хм. Говорите, чего надо, что куда писать... Я тут по уши в отладке будущего навороченного пульта, хоть отвлекусь...

323f:
О кей! Какой Ардуины достаточно?
Я вчера как раз Мегу спалил, так что, всё равно заказывать.

Morpheus123:

--- Цитата: 323f от 08 Февраля 2016, 11:16:09 ---О кей! Какой Ардуины достаточно?
Я вчера как раз Мегу спалил, так что, всё равно заказывать.
--- Конец цитаты ---

Моя программа может работать на Uno, Nano, Mega. Сейчас я запускаю ее на Uno, но собираюсь перейти на Nano, так как она занимает намного меньше места.


и добавил...
Александр (wuriks), сейчас я собираюсь перейти на Ардуино NANO, так как сейчас у меня много проводов и переодически теряется контакт, что приводит к сбоям. Для этого я воспользовался твоей инструкцией отсюда http://www.diyaudio.ru/forum/index.php?topic=4457.870. Собрал переходник на макетке, вставил туда Ардуино NANO (не припаял, а просто вставил в отверстия макетки), поставил диод, как на этой схеме:
[ Вложение: Вам нельзя просматривать вложения ]
Скажи, какие у тебя напряжения на входе, на шине I2C, 3.3 вольт ил 5 вольт? Думаю, какие меры предосторожности нужно предпринять, чтобы не спалить Сабрю...

wuriks:

--- Цитата: Morpheus123 от 08 Февраля 2016, 11:37:08 ---какие у тебя напряжения на входе, на шине I2C,
--- Конец цитаты ---
Точно не помню, где то 3,9 вольта. Думаю больше никаких мер не стоит предпринимать, у тебя же и с 5-ю вольтами тыщу лет проработало.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии