M61541FP — это аудиопроцессор для домашних аудиосистем. Аудиопроцессор содержит 6-канальный электронный регулятор громкости и 2-полосный регулятор тембра.
Аудиопроцессор M61541FP демонстрирует высокое качество звука благодаря низкому коэффициенту нелинейных искажений (КНИ) и малому уровню шума. Входные/выходные характеристики устройства обеспечивают:
- Входное сопротивление: 17–33 кОм, что гарантирует стабильность работы с различными источниками сигнала.
- Максимальное выходное напряжение: 3.8–4.4 В (среднеквадратичное значение), что позволяет достичь высокого уровня громкости без искажений.
- Общее гармоническое искажение (THD): 0.0008 % (тип.), что свидетельствует о минимальных искажениях звука.
- Разделение каналов: –90 дБ (тип.), что обеспечивает четкое разделение сигналов между каналами и минимизирует перекрестные помехи.
Эти характеристики делают M61541FP надежным и качественным решением для домашних аудиосистем, обеспечивая чистый и детализированный звук.
Особенности
- Электронный регулятор громкости: 6 независимых каналов с диапазоном регулировки от -99 до 0 дБ с шагом 1 дБ.
- 6 независимых входных предусилителей с диапазоном усиления 0, 6, 12 и 18 дБ
- Регулировка тембра:
- НЧ: –14 до +14 дБ (шаг 2 дБ)
- ВЧ: –14 до +14 дБ (шаг 2 дБ)
Рекомендуемые условия эксплуатации
Диапазон напряжения питания: AVCC = 7,0 В (тип.), AVEE = –7,0 В (тип.), DVDD = 3,0 до 5,5 В
Описание контактов
Ниже приведены контакты микросхемы и их функции:
- Контакты 1, 8, 25, 32: Назначение — аналоговая земля (AGND). Эти контакты соединяются с общим проводом для аналоговых сигналов.
- Контакты 2, 3, 28, 29, 30, 31, 33, 34, 35, 36, 39, 40: Не используются (NC), то есть эти выводы никак не задействованы в данной схеме.
- Контакт 4 (CIN): Входной контакт канала C.
- Контакт 5 (SWIN): Входной контакт канала SW.
- Контакт 6 (SLIN): Входной контакт канала SL.
- Контакт 7 (SRIN): Входной контакт канала SR.
- Контакт 9 (SROUT): Выходной контакт канала SR.
- Контакт 10 (SLOUT): Выходной контакт канала SL.
- Контакт 11 (SWOUT): Выходной контакт канала SW.
- Контакт 12 (COUT): Выходной контакт канала C.
- Контакт 13 (DVDD): Питание внутренней логической схемы. Этот контакт подключают к положительному напряжению питания для обеспечения работы внутренних цепей.
- Контакт 14 (DATA): Входной контакт управляющих данных. Сюда поступают команды или данные для управления работой микросхемы.
- Контакт 15 (CLOCK): Входной контакт управляющего тактового сигнала. Через этот контакт подается синхросигнал.
- Контакт 16 (DGND): Земля внутренней логики. Этот контакт используется для заземления внутренней цифровой части микросхемы.
- Контакт 17 (ROUT): Выходной контакт канала R. Формирует выходной сигнал для правого аудиоканала.
- Контакт 18 (LOUT): Выходной контакт канала L. Формирует выходной сигнал для левого аудиоканала.
- Контакты 19, 20 (BASR1, BASR2): Настройка частотной характеристики правого канала (басы). Эти контакты регулируют низкие частоты (бас) для правого аудиоканала.
- Контакты 21, 22 (BASL1, BASL2): Настройка частотной характеристики левого канала (басы).
- Контакт 23 (TRER): Настройка частотной характеристики правого канала (высокие частоты).
- Контакт 24 (TREL): Настройка частотной характеристики левого канала (высокие частоты).
- Контакт 26 (RIN): Входной контакт правого аудиоканала (R).
- Контакт 27 (LIN): Входной контакт левого аудиоканала (L).
- Контакт 37 (AVCC): Положительное питание для внутренней аналоговой схемы. Подключение положительного напряжения питания для аналоговых частей микросхемы.
- Контакт 38 (AVEE): Отрицательное питание для внутренней аналоговой схемы. Подключение отрицательного напряжения питания для аналоговых частей микросхемы.
Управление аудиопроцессором цифровое, осуществляется через шину 2-Wire:
Регулировка громкости и тембра осуществляется при помощи 4-х регистров, каждый регистр имеет длину 24 бит:
Более подробную информацию об аудиопроцессоре можно узнать из даташита — m61541fp.pdf
Тестовый скетч (Arduino IDE)
// M61541FP // указываем пины подключения M61541FP #define DATA 3 #define CLK 4 // treb and bass int -7...+7 === -14...+14 dB int bass = 0, treb = 7; // volume int 0...99 === 0...-99 dB int volume_L = 15, volume_R = 0, volume_C = 0, volume_SW = 0, volume_SL = 0, volume_SR = 0; // gain int 0 1 2 3 === 0 6 12 18 dB int gain_L = 0, gain_R = 0, gain_C = 0, gain_SW = 0, gain_SL = 0, gain_SR = 0; void setup() { Serial.begin(9600); pinMode(DATA,OUTPUT); pinMode(CLK,OUTPUT); delay(100); } void loop() { byte_1(bass,treb); byte_2(gain_L, volume_L, gain_R, volume_R); byte_3(gain_C, volume_C, gain_SW, volume_SW); byte_4(gain_SL, volume_SL, gain_SR, volume_SR); delay(1000); } void byte_1(unsigned long bass_reg,unsigned long treb_reg){ bass_reg = bass_treb(bass_reg); treb_reg = bass_treb(treb_reg); write_byte((bass_reg << 12) + (treb_reg << 8)); } void byte_2(unsigned long gain_L,unsigned long volume_L,long gain_R,long volume_R){ write_byte((gain_L << 22) + (volume_L << 15) + (gain_R << 13) + (volume_R << 6) + 1); } void byte_3(unsigned long gain_C,unsigned long volume_C,long gain_SW,long volume_SW){ write_byte((gain_C << 22) + (volume_C << 15) + (gain_SW << 13) + (volume_SW << 6) + 2); } void byte_4(unsigned long gain_SL,unsigned long volume_SL,long gain_SR,long volume_SR){ write_byte((gain_SL << 22) + (volume_SL << 15) + (gain_SR << 13) + (volume_SR << 6) + 3); } int bass_treb(int data_tone){ switch(data_tone){ case 7: data_tone = 0b1111; break; // +14 dB case 6: data_tone = 0b1110; break; // +12 dB case 5: data_tone = 0b1101; break; // +10 dB case 4: data_tone = 0b1100; break; // +8 dB case 3: data_tone = 0b1011; break; // +6 dB case 2: data_tone = 0b1010; break; // +4 dB case 1: data_tone = 0b1001; break; // +2 dB case 0: data_tone = 0b1000; break; // 0 dB case -1: data_tone = 0b0001; break; // −2 dB case -2: data_tone = 0b0010; break; // −4 dB case -3: data_tone = 0b0011; break; // −6 dB case -4: data_tone = 0b0100; break; // −8 dB case -5: data_tone = 0b0101; break; // −10 dB case -6: data_tone = 0b0110; break; // −12 dB case -7: data_tone = 0b0111; break; // −14 dB } return data_tone; } void write_byte(unsigned long data){ // 0-22 bit digitalWrite(CLK, LOW); delayMicroseconds(3); for (int i = 23; i >= 1; i--) { digitalWrite(DATA, (data >> i) & 1); delayMicroseconds(3); digitalWrite(CLK, HIGH); delayMicroseconds(3); digitalWrite(CLK, LOW); delayMicroseconds(3); } // 23 bit digitalWrite(DATA,(data << 0)& 1); delayMicroseconds(3); digitalWrite(CLK, HIGH);delayMicroseconds(3); digitalWrite(DATA, HIGH);delayMicroseconds(1);// CLOCK digitalWrite(CLK, LOW);delayMicroseconds(1); digitalWrite(DATA, LOW);delayMicroseconds(1); digitalWrite(CLK, HIGH);delayMicroseconds(10); }
Форум — http://forum.rcl-radio.ru/viewtopic.php?id=695
!!! Требуется тестирование !!!