По многочисленным просьбам я решил создать новую ветку на тему разработки программы для управления чипом ЦАПа 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. Дело в том, что программа использует классы. Такой подход имеет свои плюсы и минусы. Главный минус в том, что использование классов сильно увеличивает память, которую требует программа. Плюс в том, что это позволяет легко читать и менять код, меняя классы. Скорее всего минусы перевешивают плюсы
.
Сейчас я работaю над второй версией программы. Пока я отказался от Atmel Studio и перешел в Microsoft Visual Studio. Возможно я откажусь от использования классов.