• Внешний USB-ЦАП-Аудиопроцессор CDD-010 можно купить

ADAU1701 не сохраняется уровень громкости

Добрый день, собрал свой вариант усилителя с ADAU1701 на борту, и все почти хорошо, единственная проблема, не сохраняется значение громкости (Регулируется энкодером) и после включения звук работает на максимум. Подскажите в чем может быть проблема, извиняюсь, если уже обсуждалось, похожей темы не нашел. Если я правильно понимаю, значения из interface read/write не записываются или не сохраняются в EEPROM? Хотя прошивка заливается нормально и самозагрузка тоже работает. Думал обойти эту проблему как то задав дефолтное положение регулятора, но пока не придумал как это сделать, буду благодарен за подсказки. Файл проекта прикладываю ну и фото усилка, для разнообразия)
photo_2023-01-17_21-03-33.jpg
photo_2023-01-13_09-47-13.jpg
photo_2023-01-13_09-47-13 (2).jpg
 

Вложения

Vitalii

Well-known member
Добрый день, собрал свой вариант усилителя с ADAU1701 на борту, и все почти хорошо, единственная проблема, не сохраняется значение громкости (Регулируется энкодером) и после включения звук работает на максимум. Подскажите в чем может быть проблема, извиняюсь, если уже обсуждалось, похожей темы не нашел. Если я правильно понимаю, значения из interface read/write не записываются или не сохраняются в EEPROM? Хотя прошивка заливается нормально и самозагрузка тоже работает. Думал обойти эту проблему как то задав дефолтное положение регулятора, но пока не придумал как это сделать, буду благодарен за подсказки. Файл проекта прикладываю ну и фото усилка, для разнообразия)
Посмотреть вложение 2605Посмотреть вложение 2606Посмотреть вложение 2607
Прямо комбайн.
 

viktar.kastrou

Active member
Что-то где-то было, но уже упустил детали, помню что человек советовал использовать отдельно модуль "RotEnc" и отдельно кнопки, тогда вроде как сохраняется положение энкодера.
 

Евгений

Administrator
Команда форума
Запись текущего состояния во внешнюю память происходит по определенному фронту (выбирается) входа WB только в режиме self boot. При этом WP вывод памяти должен быть подключен к GND для разрешения записи. Подробно в описании на ADAU1701, параграф Writeback, страница 27.
 
Запись текущего состояния во внешнюю память происходит по определенному фронту (выбирается) входа WB только в режиме self boot. При этом WP вывод памяти должен быть подключен к GND для разрешения записи. Подробно в описании на ADAU1701, параграф Writeback, страница 27.
Правильно ли я понимаю, что для этого необходимо отключить подтяжку от плюса WP (Убрав R17) подтянув его к земле?
 

Вложения

Евгений

Administrator
Команда форума
Правильно ли я понимаю, что для этого необходимо отключить подтяжку от плюса WP (Убрав R17) подтянув его к земле?
EEPROM_WP выведен на разъем. Его можно подключить к GND. Нужно организовать для WB переход на противоположное состояние в зависимости от настроек при отключении питания системы. Это будет инициировать запись в память.
 
EEPROM_WP выведен на разъем. Его можно подключить к GND. Нужно организовать для WB переход на противоположное состояние в зависимости от настроек при отключении питания системы. Это будет инициировать запись в память.
Спасибо за пояснения, то есть логика следующая, при запуске (Самозагрузка) WP высокий, после того как ПО запустилось, переводим его в низкий уровень для разрешения записи параметров в EEPROM (Writeback), так выходит?
 

Евгений

Administrator
Команда форума
Спасибо за пояснения, то есть логика следующая, при запуске (Самозагрузка) WP высокий, после того как ПО запустилось, переводим его в низкий уровень для разрешения записи параметров в EEPROM (Writeback), так выходит?
WP можно подключить к GND навсегда, т.е. запись в микросхему будет всегда разрешена. Для инициации записи в память при отключении питания нужно, чтобы менялся уровень WB.
 
WP можно подключить к GND навсегда, т.е. запись в микросхему будет всегда разрешена. Для инициации записи в память при отключении питания нужно, чтобы менялся уровень WB.
Нельзя, тогда самозагрузка не произойдет, если верить даташиту:
The ADAU1701 does not self-boot if WP is set low. Holding this pin low allows the EEPROM to be programmed in-circuit. The WP pin is pulled low (it typically has a resistor pull-up) to enable writes to the EEPROM, but this in turn disables the selfboot function until the WP pin is returned high.
А а обратная запись именно инициируется пином WB? она не происходит каждый раз при изменении параметра (например положения энкодера)?
 

Евгений

Administrator
Команда форума
Нельзя, тогда самозагрузка не произойдет, если верить даташиту:
Я писал про вывод EEPROM_WP - это вывод микросхемы памяти, не WP ADAU1701.
Как писал выше, в параграфе Writeback, страница 27 подробно расписано про сохранение во внешнюю память.
 
Упражнения с выводами WB и WP результата не дали, ровно как и замена модуля таблицы модулем кнопок или энкодером громкости в сборе (текущая комбинация единственная, которая у меня заработала) нашел похожую проблему на форуме поддержки, там предлагают заменить модуль энкодера, фактически пересобрать его из базовых компонентов, выглядит это довольно монструозно, и у меня так же не работает (подозреваю из за проблем с конвертацией форматов данных, там описано для ADAU1452) ссылку приложу может кому то пригодиться:
(сайт заблокирован для РФ, заходить через ВПН)
Для себя лично я проблему решил хотя и очень некрасивым способом, с жуткими костылями, но зато это работает. Суть такова, при запуске стартует таймер, который отсчитывает небольшой отрезок времени и останавливает сам себя, за это время запускается генератор прямоугольных импульсов который тупо откручивает назад позицию в таблице, время работы таймера и частота импульсов подобраны опытным путем, чтобы громкость понизилась примерно на 15 пунктов (из 65). Эстетичней наверно было бы сделать это на модулях логических элементов, но, может потом, пока как есть, утомила меня немного эта платка. Файл тоже приложу, может кому то надо, ну или просто посмеяться и посмотреть как делать не надо. Все, можно кидаться тапками, но лучше предложить свой лучший вариант.
 

Вложения

MCA

New member
У меня та-же проблема. Плата самодельная, собрана как раз по схеме, которая была выше. Благодаря этой теме, а именно ответам Евгения, вроде как разобрался. Специально сейчас зарегался на форуме, чтобы написать вроде как работающее решение...

В общем, вывод памяти 7 (wp) я кинул на gnd, как и написал Евгений. Выводы адау 20 и 21 (wb и wp) через резисторы на 10к кинул на +3.3в. Вывод 20 (wb) отвечает за запись настроек в память. Перед выключением схемы нужно КРАТКОВРЕМЕННО замкнуть вывод 20 с gnd, именно в этот момент и запишутся текущие настройки! После этого нужно обесточить плату. После подачи питания загружается прошивка из флеш в адау с последними сохраненными настройками!

Сохранять настройки получается лишь 1 раз, поэтому логично это делать перед выключением питания (в даташите кстати так и сказано), потом тыкай не тыкай 20 вывод в gnd - ничего не сохраняется повторно до следующего включения питания. После включения можно опять записать новые настройки тем-же замыканием 20 вывода с массой.

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

Также есть метод выставления базовых значений (например уровень громкости при включении), которым я пользовался. Я пользуюсь для этого платой с алика cy7c68013a. Нужно подключить аудиопроц к компу через неё, загрузить в него прошивку через сигма студио, выставить желаемые настройки непосредственно на самом устройстве, которые будут базовыми при каждом включении, затем во вкладке hardware configuration, снизу выбрать вторую вкладку register control, и в открывшемся поле сверху слева есть 2 кнопки, нужно считать выставленные данные кнопкой read all (они изменятся в этом-же окне в interface register). После этого нужно повторно залить прошивку в аудиопроц, а из него уже в память (снизу вкладка config, пкм по adau1701 - write latest e2prom). После завершения записи прошивки можно отключать программатор. Теперь при каждой подаче питания на аудиопроц - загружается в него прошивка из памяти с теми самыми базовыми параметрами. :)

Вот такое чудо собрал и вживил в него аудиопроц.
Урал АК, tpa3255, 20шт высокотоковых 18650 (42в), adau1701.
 

Вложения

Последнее редактирование:

Vitalii

Well-known member
У меня та-же проблема. Плата самодельная, собрана как раз по схеме, которая была выше. Благодаря этой теме, а именно ответам Евгения, вроде как разобрался. Специально сейчас зарегался на форуме, чтобы написать вроде как работающее решение...

В общем, вывод памяти 7 (wp) я кинул на gnd, как и написал Евгений. Выводы адау 20 и 21 (wb и wp) через резисторы на 10к кинул на +3.3в. Вывод 20 (wb) отвечает за запись настроек в память. Перед выключением схемы нужно КРАТКОВРЕМЕННО замкнуть вывод 20 с gnd, именно в этот момент и запишутся текущие настройки! После этого нужно обесточить плату. После подачи питания загружается прошивка из флеш в адау с последними сохраненными настройками!

Сохранять настройки получается лишь 1 раз, поэтому логично это делать перед выключением питания (в даташите кстати так и сказано), потом тыкай не тыкай 20 вывод в gnd - ничего не сохраняется повторно до следующего включения питания. После включения можно опять записать новые настройки тем-же замыканием 20 вывода с массой.

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

Также есть метод выставления базовых значений (например уровень громкости при включении), которым я пользовался. Я пользуюсь для этого платой с алика cy7c68013a. Нужно подключить аудиопроц к компу через неё, загрузить в него прошивку через сигма студио, выставить желаемые настройки непосредственно на самом устройстве, которые будут базовыми при каждом включении, затем во вкладке hardware configuration, снизу выбрать вторую вкладку register control, и в открывшемся поле сверху слева есть 2 кнопки, нужно считать выставленные данные кнопкой read all (они изменятся в этом-же окне в interface register). После этого нужно повторно залить прошивку в аудиопроц, а из него уже в память (снизу вкладка config, пкм по adau1701 - write latest e2prom). После завершения записи прошивки можно отключать программатор. Теперь при каждой подаче питания на аудиопроц - загружается в него прошивка из памяти с теми самыми базовыми параметрами. :)

Вот такое чудо собрал и вживил в него аудиопроц.
Урал АК, tpa3255, 20шт высокотоковых 18650 (42в), adau1701.
Конечно, все это здорово. Но за такие деньги так заморачиваться не хочется.
 
Верх