Сделал тестовую печатку.
Вложение 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.
Работоспособность видно на осциллограмме.
По массам:
Массу 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