Хочу поделиться идеей воспроизведения звука на процессоре почти без аналогового тракта. Может уже где-то было. Класс D. Полный мост. У NXP CM0/CM3 и на других линейках есть таймеры с 4-мя MATCH регистрами. На две ножки процессора можно вывести два MATCH-сигнала в режиме PWM, работающих в противофазе от некоторого центра периода. Ещё один MATCH-регистр задаёт период PWM. И ещё один задаёт задержку входа в прерывание таймера для оптимальной позиции перезагрузки двух MATCH-регистров - перед самым обнулением счётчика таймера. Прерывание, конечно же, пишется на ассемблере. Работающих в противофазе это, например, когда при выводе сэмпла, равного 0 будет PWM1=X, PWM2=X, где X примерно половина периода. То есть переключение выходов будет одновременно и в середине и в конце периода. При выводе сэмпла, равного 1 будет PWM1=X+1, PWM2=X. При выводе сэмпла, равного -1 будет PWM1=X-1, PWM2=X. При выводе сэмпла, равного 2 будет PWM1=X+1, PWM2=X-1. При выводе сэмпла, равного -2 будет PWM1=X-1, PWM2=X+1.
Принципиальная схема: к ножкам MATCH подключаётся (ключевой) драйвер на нужное напряжение, а между парой выходов драйвера - один или два LC-фильтра последовательно, и далее громкоговоритель. Громкость регулируется программно.
Сообщение отредактировал GetSmart - Dec 4 2016, 12:08
--------------------
Заблуждаться - Ваше законное право :-)
|