Показать сообщение отдельно
Старый 27.09.2016, 23:11   #2
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 40
Город: 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(00b11100000);  //Конфигурация входа/выбора источника     :Input Configuration / Main Source Selector 
tda7719(10b00011111);  //2-й выбор источника / Прямой Путь       :2nd Source Selector / Direct Path 
tda7719(20b00011111);  //Смешивание Источников / Смешивание Gain :Mixing Source / Mixing Gain 
tda7719(30b00011111);  //Контроль смешивания и т.д               :Mix Control / Level Meter / DC Offset Detector Config 
tda7719(40b00000000);  //Soft Mute / Others 
tda7719(50b00000000);  //Soft Step I 
tda7719(60b00000000);  //Soft Step II / DC-detector 
tda7719(70b10000000);  //Громкость                              :Loudness 
tda7719(80b00010000);  //Объем / Output Gain                    :Volume / Output Gain 
tda7719(90b01110000);  //Treble filter  
tda7719(100b01110000); //Middle filter 
tda7719(110b01110000); //Bass filter 
tda7719(120b01111000); //Настройки Сабвуфер/Средний/Басс        :Subwoofer / Middle / Bass 
tda7719(130b00010000); //Настройки динамика передний левый      :Speaker Attenuator Left Front 
tda7719(140b00010000); //Настройки динамика передний правый     :Speaker Attenuator Right Front 
tda7719(150b00010000); //Настройки динамика задний Левый        :Speaker Attenuator Left Rear 
tda7719(160b00010000); //Настройки динамика задний правый       :Speaker Attenuator Right Front 
tda7719(170b00010000); //Настройки сабвуфера Левый              :Subwoofer Attenuator Left 
tda7719(180b00010000); //Настройки сабвуфера Правый             :Subwoofer Attenuator Right 
 

 
void tda7719(int subaddressint 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
Просмотров: 1029
Размер:	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(00b01100000);  //INPUT ATTENUATION   (-16dB )
tda7442(10b00000110);  //SURROUND & OUT & EFFECT CONTROL( -6 FIX OFF)
tda7442(20b00000011);  //SURROUND PHASE RESISTOR( 37KOm)
tda7442(30b00011111);  //BXXX0011 BASS SELECTION (0dB)
tda7442(40b01111110);  //BXXX0100 TREBLE (0dB)
tda7442(50b00000000);  //BXXX0101 SPEAKER ATTENUATION "L" (0dB)( SPEAKER ATTENUATION = 0dB ~ -79dB)
tda7442(60b00000000);  //BXXX0110 SPEAKER ATTENUATION "R" (0dB)
tda7442(70b00000000);  //BXXX0111 NOT ALLOWED
tda7442(80b00000000);  //BXXX1000 NOT ALLOWED         
tda7442(90b00000110);  //BXXX1001 INPUT MULTIPLEXER
            
 

 
void tda7442(int subaddressint 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


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