Показать сообщение отдельно
Старый 27.09.2016, 23:11   #2
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 42
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

Сделал тестовую печатку.
Вложение 44888

Запаял железо согласно даташиту и подключил ардуину мегу 2560
Вложение 44890
Вложение 44891
Вложение 44892

ТЕПЕРЬ СОФТ

Для начала открываем даташит и читаем
4 SOFTWARE SPECIFICATION

И там ищем chipadress, то есть I2C адрес чипа (звукового процессора)
Для TDA 7719
1000100
Открываем виндовый калькулятор вид – программист.
Выбираем BIN – 8 байт (то есть цифровой вид ОДИН-НОЛЬ, 8 символов)
Забиваем 1000100 и тыкаем в HEX.
Видимцифры44.
Значит I2C адреc TDA 7719 0x44

Для tda7442 адрес 0x80 (8 страница мануала)
5 DATA BYTES
Address = 80(HEX)

В скетч заливаю:
PHP код:
#include <Wire.h>
 
void setup() {
  
Wire.begin();
}
 
void loop() {
Wire.beginTransmission(0x80);  // i2c adress 7442
Wire.write(0b11110000);        // задаем десятки
//Wire.write(0b11111111);        // задаем еденицы
Wire.endTransmission();
//delay(500);
} 
И вижу осциллографом:

Вложение 44893
Синяя – SCL
Красная – SDA (наши данные). Если Посылать данные на другой адрес (например 0х44), то форма красной линии меняется.

Если я загружаю другой скетч, то осциллограмма не меняется:
PHP код:
//Для запуска TDA7719 достаточно загрузить скетчь который ниже в ардуино
//http://alekssandr.myjino.ru/na-stadii-razrabotki/audioprotsessor-na-tda7719
#include "Wire.h" 
 
void setup() 
{ 
Wire.begin(); 
delay(1000); 
Serial.begin(9600); 
 
} 
void loop(){ 
 
//delay(2000); 
 
tda7719(0, 0b11100000);  //Конфигурация входа/выбора источника     :Input Configuration / Main Source Selector 
tda7719(1, 0b00011111);  //2-й выбор источника / Прямой Путь       :2nd Source Selector / Direct Path 
tda7719(2, 0b00011111);  //Смешивание Источников / Смешивание Gain :Mixing Source / Mixing Gain 
tda7719(3, 0b00011111);  //Контроль смешивания и т.д               :Mix Control / Level Meter / DC Offset Detector Config 
tda7719(4, 0b00000000);  //Soft Mute / Others 
tda7719(5, 0b00000000);  //Soft Step I 
tda7719(6, 0b00000000);  //Soft Step II / DC-detector 
tda7719(7, 0b10000000);  //Громкость                              :Loudness 
tda7719(8, 0b00010000);  //Объем / Output Gain                    :Volume / Output Gain 
tda7719(9, 0b01110000);  //Treble filter  
tda7719(10, 0b01110000); //Middle filter 
tda7719(11, 0b01110000); //Bass filter 
tda7719(12, 0b01111000); //Настройки Сабвуфер/Средний/Басс        :Subwoofer / Middle / Bass 
tda7719(13, 0b00010000); //Настройки динамика передний левый      :Speaker Attenuator Left Front 
tda7719(14, 0b00010000); //Настройки динамика передний правый     :Speaker Attenuator Right Front 
tda7719(15, 0b00010000); //Настройки динамика задний Левый        :Speaker Attenuator Left Rear 
tda7719(16, 0b00010000); //Настройки динамика задний правый       :Speaker Attenuator Right Front 
tda7719(17, 0b00010000); //Настройки сабвуфера Левый              :Subwoofer Attenuator Left 
tda7719(18, 0b00010000); //Настройки сабвуфера Правый             :Subwoofer Attenuator Right 
 
} 
 
void tda7719(int subaddress, int data)  //Вызов tda7719 
{ 
Wire.beginTransmission(0x80); //СТАРТ и Адрес микросхема TDA7442
Wire.write(subaddress);       //Подадрес команды 
//Wire.write(0b01110000);       //Подадрес команды 
Wire.write(data);             //Команда 
Serial.println(subaddress);   //Пишем подадрем в монитор 
Serial.println(data);         //Пишем команду в монитор 
//Serial.println(tda7719,(6)); 
Wire.endTransmission();       //СТОП 
//delay(500); 
} 
Теперь вопрос.
Как послать данные, какие послать данные, и как увидеть реакцию звукового проца(должен ли он что либо отвечать.



итак, запустил этим кодом.
не получалось потому, что адрес в мануале указан 80 (hex), а в bin адрес 1000000.
А адрес 1000000 в BIN это 40 HEX! Прямо в мануале обманули?
Итак, I2C адрес tda7442 HEX(0x40) или 0b1000000
Сканер I2C в ардуино тоже показал 0x40.
Работоспособность видно на осциллограмме.
Нажмите на изображение для увеличения
Название: IMG_20160927_215436_новый размер.jpg
Просмотров: 1383
Размер:	118.7 Кб
ID:	44902

По массам:
Массу DIGgnd можно не подключать (только к ардуине)
Масса Agnd подключается на минус источника питания (9В)
Подключение к ардуине:

ардуино мега 2560 tda7442
+5В ______________ на резисторы подтяжки шины
- ______________ - на DIGgnd
20pin ______________ - SDA
21pin______________ -SCL


PHP код:
//Для запуска tda7442 достаточно загрузить скетчь который ниже в ардуино
#include "Wire.h" 
 
void setup() 
{ 
Wire.begin(); 
delay(1000); 
Serial.begin(9600); 
 
} 
void loop(){ 
 
//delay(2000); 
 /*
tda7442(0, 0b01100000);  //INPUT ATTENUATION  -16dB (0b - показывает, что данные будут в двоичной форме. )
потом идут разряды
D7 D6 D5 D4 D3 D2 D1 D0
по даташиту (5,1 пункт) D7 это B ( в табличке, B = 1 incremental bus; active B = 0 no incremental bus;X = indifferent 0,1)поэтому D7 будет 0.
D7 D6 D5 D4 D3 D2 D1 D0
B  X  X  X  0  0  0  0    INPUT ATTENUATION (из даташита)

X X X 0 0 0 0 INPUT ATTENUATION

*/


tda7442(0, 0b01100000);  //INPUT ATTENUATION   (-16dB )
tda7442(1, 0b00000110);  //SURROUND & OUT & EFFECT CONTROL( -6 FIX OFF)
tda7442(2, 0b00000011);  //SURROUND PHASE RESISTOR( 37KOm)
tda7442(3, 0b00011111);  //BXXX0011 BASS SELECTION (0dB)
tda7442(4, 0b01111110);  //BXXX0100 TREBLE (0dB)
tda7442(5, 0b00000000);  //BXXX0101 SPEAKER ATTENUATION "L" (0dB)( SPEAKER ATTENUATION = 0dB ~ -79dB)
tda7442(6, 0b00000000);  //BXXX0110 SPEAKER ATTENUATION "R" (0dB)
tda7442(7, 0b00000000);  //BXXX0111 NOT ALLOWED
tda7442(8, 0b00000000);  //BXXX1000 NOT ALLOWED         
tda7442(9, 0b00000110);  //BXXX1001 INPUT MULTIPLEXER
            
 
} 
 
void tda7442(int subaddress, int data)  //Вызов tda7719 char??
{ 
Wire.beginTransmission(0x40); //СТАРТ и Адрес микросхема tda7442 
//или Wire.beginTransmission(0b1000000);
//после beginTransmission дуина ждёт по линии ДАТА ответа от tda7442 ( присаживание линии на землю)и потом передает
Wire.write(subaddress);       //Подадрес команды 
Wire.write(data);             //Команда 
Serial.println(subaddress);   //Пишем подадрем в монитор 
Serial.println(data);         //Пишем команду в монитор 
Wire.endTransmission();       //СТОП 
//delay(500); 
} 
в мониторе ком порта тоже видим реакцию - наши данные в десятичном виде
PHP код:
0
96
1
6
2
3
3
31
4
126
5
0
6
0
7
0
8
0
9
6
0
96
1
6
2
3
3
31
4
126
5
0
6
0
7
0
8
0
9
6 

Последний раз редактировалось admin; 27.10.2018 в 23:19.
oleg707 вне форума   Ответить с цитированием