Содержание
Одиночный регулятор громкости
| Блок «Одиночный регулятор громкости» — это регулятор громкости, управляемый через GUI. Он обеспечивает доступ как к алгоритмам со слей (slew), так и без него. | ![]() |
Щелкните правой кнопкой мыши по границе или заголовку блока, чтобы добавить алгоритмы, которые добавляют пины, управляемые регулятором. Каждый пин может быть связан с другим алгоритмом (со слей или без) под управлением этого регулятора. Будьте внимательны при выборе нескольких алгоритмов. На блоке нет видимых обозначений, указывающих, соответствует ли каждый пин алгоритму со слей или без. Функция «Пользовательский комментарий» может помочь вам отслеживать, какие пины какому алгоритму соответствуют.
Контекстное меню также позволяет выбирать различные режимы слей (slew).
Минимальное/максимальное значение и шаг регулятора можно настроить. Чтобы изменить настройки регулятора, щелкните по нему правой кнопкой мыши, что вызовет всплывающее окно управления (показано ниже).
Регулировка регулятора громкости с микроконтроллера
Предполагается, что у вас есть работающая платформа микроконтроллера с кодом интерфейса SigmaDSP, основанным на «Взаимодействие процессоров SigmaDSP с микроконтроллером».
SigmaStudio GUI позволяет пользователям выбирать значение усиления в dB. Однако внутри процессоров SigmaDSP значение регулятора громкости хранится как линейное усиление. SigmaStudio автоматически выполняет это преобразование. В системе с контроллером контроллер должен преобразовывать ввод пользователя в dB в линейное значение.
Линейный масштабный коэффициент хранится в десятичном формате (8.24 или 5.23).
Чтение значений громкости из SigmaDSP
double read_volume_control(int controlAddress) { double linear_gain = SIGMA_READ_REGISTER_FLOAT(controlAddress); return 20 * log10(linear_gain); }
Пример использования:
// Выведи текущую громкость в dB; настрой MOD_SWVOL1_ALG0_TARGET_ADDR в соответствии с твоим регулятором громкости Serial.println(read_volume_control(MOD_SWVOL1_ALG0_TARGET_ADDR));
Запись значений громкости в SigmaDSP
void write_volume_control(int controlAddress, double dBGain) { double linearGain = pow(10, dBGain / 20); SIGMA_WRITE_REGISTER_FLOAT(controlAddress, linearGain); }
Пример использования:
// Установи текущую громкость регулятора на -30 dB write_volume_control(MOD_SWVOL1_ALG0_TARGET_ADDR, -30);

