Аудиопроцессор LC75343M (Arduino)

Стерео аудиопроцессор LC75343M (производства компании Sanyo) предназначен для регулирования громкости и тембра, содержит селектор входов. Аудиопроцессор может регулировать тембр по 2 и 3 полосам в зависимости от схемы подключения, имеет групповую и раздельную регулировку громкости.

Основные характеристики аудиопроцессора LC75343M

  • Регулировка громкость от 0 дБ до -78 дБ  (64 шага регулирования)
    • от 0 дБ до -50 дБ (шаг 1 дБ),
    • от -50 дБ до -70 дБ (шаг 2 дБ),
    • от -70 дБ до -78 дБ (шаг 4 дБ)
  • Независимая и групповая регулировка громкости
  • Регулировка тембра ±10 дБ с шагом 2 дБ
  • Трех полосная регулировка тембра
  • 5-и канальный стерео селектор входов
  • Предварительный усилитель входов от 0 дБ до +30 дБ (шаг 2 дБ)
  • Напряжение питания от 4,5 В до 9 В
  • Управление цифровое 3-Wire (максимальная тактовая частота 500 кГц)
  • Входное сопротивление 50 кОм
  • Коэффициент нелинейных искажений 0.007 %

Даташит содержит 3-и типовые схемы включения LC75343M, для тестирования была выбрана схема № 3, с трех полосным регулированием тембра.

Для управления LC75343M используются цифровые входы CL, DI и CE. Конфигурация данных состоит в
общей сложности из 40 битов, первые 8 бит — адрес и остальные 32 бита — данные.

Ниже показан тестовый скетч запуска LC75343M, который позволяет регулировать громкость и тембр по 3-м полосам, управлять коммутатором входов.

#define CE 3
#define DI 2
#define CL 4
 
byte input_m[8]={0b0001,0b1001,0b0101,0b1101,0b0011,0b0111,0b1111};
byte input_gain_m[16]{0b0000,0b1000,0b0100,0b1100,0b0010,0b1010,0b0110,0b1110,0b0001,0b1001,0b0101,0b1101,0b0011,0b1011,0b0111,0b1111};
byte volume_m[64]{0b000000,0b100000,0b010000,0b110001,0b001000,0b101000,0b011000,0b111000,0b000100,0b100100,0b010100,0b110100,0b001100,
0b101100,0b011100,0b111100,0b000010,0b100010,0b010010,0b110010,0b001010,0b101010,0b011010,0b111010,0b000110,0b100110,0b010110,0b110110,
0b001110,0b101110,0b011110,0b111110,0b000001,0b100001,0b010001,0b110001,0b001001,0b101001,0b011001,0b111001,0b000101,0b100101,0b010101,
0b110101,0b001101,0b101101,0b011101,0b111101,0b000011,0b100011,0b010011,0b110011,0b001011,0b101011,0b011011,0b111011,0b000111,0b100111,
0b010111,0b110111,0b001111,0b101111,0b011111,0b111111};
byte ch_sel_m[3]{0b10,0b01,0b11};
byte tembr_m[11]{0b1010,0b0010,0b1100,0b0100,0b1000,0b0000,0b1001,0b0101,0b1101,0b0011,0b1011};
 
 
void setup() {
  pinMode(CE,OUTPUT);pinMode(DI,OUTPUT);pinMode(CL,OUTPUT);
  digitalWrite(CL,LOW);digitalWrite(CE,LOW);digitalWrite(DI,LOW);
 
  audio_R();audio_L();
  }
 
void loop() {
  }  
 
void audio_R(){Write(0,0,1,  0 , 5,5,5 );}  
void audio_L(){Write(0,0,0,  1 , 5,5,5 );}  
 
void Write(byte input,byte input_gain,byte volume,byte ch_sel,byte treb,byte mid,byte bass){
  digitalWrite(CL,LOW);
  digitalWrite(CE,LOW);
  byte addr = 0b01000001;
     for(int i = 7; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (addr >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }  
  digitalWrite(CE,HIGH); 
      for(int i = 3; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_m[input] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }
      for(int i = 3; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (input_gain_m[input_gain] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 5; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (volume_m[volume] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 1; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (ch_sel_m[ch_sel] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[treb] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }        
      for(int i = 3; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[mid] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }    
      for(int i = 3; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (tembr_m[bass] >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }  
      for(int i = 3; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DI, (0b1101 >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }                                      
   digitalWrite(CL,LOW);
   digitalWrite(CE,LOW);             
  }

Подключение к Arduino Nano осуществляется по четырем проводам — CE, DI, CL и GND

#define CE 3  // D3

#define DI  2  // D2

#define CL 4  // D4

Основные функции управления:

void audio_R(){Write(0,0,1, 0 , 5,5,5 );}
void audio_L(){Write(0,0,0, 1 , 5,5,5 );}

Громкость каждого канала регулируется раздельно. Функции позволяют регулировать основные параметры аудиопроцессора, всего доступно семь параметров.

Параметры регулирования:

  1. Write(0,0,1, 0 , 5,5,5 ) — коммутатор входов (byte 0…4 === input 1…5)
  2. Write(0,0,1, 0 , 5,5,5 ) — предусилитель входа (byte 0…15 === 0…30 dB)
  3. Write(0,0,1, 0 , 5,5,5 ) — независимая регулировка громкости для каждого канала (byte 0…63 === от -90 до 0 dB)
  4. Write(0,0,1, 0 , 5,5,5 ) — независимая регулировка громкости (0 — левый канал, 1 — правый канал)
  5. Write(0,0,1, 0 , 5,5,5 ) — Регулировка тембра TREBLE (byte 0…10 === +10 … -10 dB, byte 5 === 0 dB)
  6. Write(0,0,1, 0 , 5,5,5 ) — Регулировка тембра MIDDLE (byte 0…10 === +10 … -10 dB, byte 5 === 0 dB)
  7. Write(0,0,1, 0 , 5,5,5— Регулировка тембра TREBLE (byte 0…10 === +10 … -10 dB, byte 5 === 0 dB)

 

Добавить комментарий

Войти с помощью: