TDA8425 audio CPU ПРОБЛЕМА!!!
Добрый вечер всем!
Собрал процессор на TDA8425, по датышу. ошибок в схеме нет, проверил. Она общается по i2c, написал на ардуине минимальный скетч чтобы просто выставить громкость, режим, вход. Но при подачи сигнала на выходе всегда пусто (тихо)
Грешу на скетч, так как не особо силен, и наверняка накидал грабли.
PHP код:
#include <Wire.h> // Библиотека
byte MAD = B10000010; // адрес модуля
byte VL = B11111111; // Громкость левого канала
byte VR = B11111111; // Громкость правого канала
byte BA = B11110110; // Регулировка НЧ / Басса
byte TR = B11110110; // Регулировка ВЧ
byte S1 = B11001010; // Функция входа
void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Wire.begin(); // Включить i2c
set();
}
void loop() // Главный цикл
{
}
void set() // Главный цикл
{
Wire.beginTransmission(MAD); // начало передачи, с адресом нужного нам Slave
//Wire.write(MAD); // отправляем данные для выбраного Slave
delay(100);
Wire.write(B00000000);
delay(100);
Wire.write(VL);
delay(100);
Wire.endTransmission(); // конец передачи
delay(100);
Wire.beginTransmission(MAD); // отправляем данные для выбраного Slave
delay(100);
Wire.write(B00000001);
delay(100);
Wire.write(VR);
delay(100);
Wire.endTransmission(); // конец передачи
delay(100);
Wire.beginTransmission(MAD); // отправляем данные для выбраного Slave
delay(100);
Wire.write(B00000010);
delay(100);
Wire.write(BA);
delay(100);
Wire.endTransmission(); // конец передачи
delay(100);
Wire.beginTransmission(MAD); // отправляем данные для выбраного Slave
delay(100);
Wire.write(B00000011);
delay(100);
Wire.write(TR);
delay(100);
Wire.endTransmission(); // конец передачи
delay(100);
Wire.beginTransmission(MAD); // отправляем данные для выбраного Slave
delay(100);
Wire.write(B00001000);
delay(100);
Wire.write(S1);
delay(100);
Wire.endTransmission(); // конец передачи
delay(100); // пауза
digitalWrite(13, HIGH);
}
В чем я ошибся?
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Возможно что устройство должно как то инициализироваться. В даташите не описан процесс инициализации?
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
Сообщение от
Chip
Возможно что устройство должно как то инициализироваться. В даташите не описан процесс инициализации?
Датыш могу приложишь.
вот тут уже разбирали этот проц. у него все заработало.
кусок кода для регулировки громкости лев или прав канала
PHP код:
void VL(signed char VLbyte) //Громкость левого канала
{
if (VLbyte>6) VLbyte = 6; //6 дБ наш максимум
if (VLbyte<-64) VLbyte = -80; //-80 дБ наш минимум
if (VLbyte<-80) VLbyte = -80;
if (!(VLbyte%2)) //если идем с шагом 2 дБ
{
if (VLbyte == -80) //если -80
{
I2CStart();
I2CSend(0x82); //адрес тда8425
I2CSend(0x00); //байт выбора левого канала
I2CSend(192 | 0); //шлем нулевое значение
I2CStop();
} else
{
I2CStart();
I2CSend(0x82);
I2CSend(0x00);
I2CSend(192 | (63 - (6-VLbyte)/2)); //иначе шлем по формуле
I2CStop();
}
}//!VLbyte
}
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
А для чего после отправки данных выдерживается пауза 100мс?
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
Сообщение от
Chip
А для чего после отправки данных выдерживается пауза 100мс?
Можно в принципе убрать. там в датише указано что после получения первого байта проц отвечает мастеру, после второго тоже отвечает что понял задачу. и после третьего. я поставил выдержку чтобы все это прошло. как то так.
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
А что приходит в ответ, и приходит ли? Возможно это поможет понять где проблема?
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
Сообщение от
manu_245
А что приходит в ответ, и приходит ли? Возможно это поможет понять где проблема?
по датышу в ответ проц должен прижать SDA к земле. На сколько я понял
Датыш
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
По даташиту (стр.9, fig. 4,5), вроде как, после включения команды должны идти одна за другой без STO после каждой, и с одним стопом в конце. А в скетче получается, команды уходят как не после ресета. (стр. 9. fig.6). Ну и я бы посмотрел, что приходит в ответ.
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Код:
#include <Wire.h>
#define MAD 130 // адрес модуля аудио процессора
#define LC 0 // адрес левого канала
#define RC 1 // адрес правого канала
void setup()
{
Wire.begin(); // Включить i2c
}
void loop() // Главный цикл
{
set(LC, 63 );
delay(1000);
set(LC, 0);
delay(1000);
set(RC, 63);
delay(1000);
set(RC, 0);
delay(1000);
}
void set(byte sab, byte volume)
{
Wire.beginTransmission(MAD); // начало передачи, с адресом аудио процессора MAD
Wire.write( sab ); // SAB адрес
Wire.write(volume); //уровень
Wire.endTransmission(); // конец передачи
}
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
а зачем через секунду громкость в 0 выставлять? чтобы проверить каждый канал по отдельности, тогда надо хотя бы сек 3
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
трезд не читал, но скажу что наверняка не выключен mute. сам несколько месяцев мучался с tda7342, не мог понять почему тишина на выходе-нужно выставить ему нули. а в даташите по этому поводу ничего не сказано. если есть проц, который изначально управлял вашим микшером, можно отснифать что он шлет в и2ц. например моя борьба с тда
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
Сообщение от
macau
трезд не читал, но скажу что наверняка не выключен mute. сам несколько месяцев мучался с tda7342, не мог понять почему тишина на выходе-нужно выставить ему нули. а в даташите по этому поводу ничего не сказано. если есть проц, который изначально управлял вашим микшером, можно отснифать что он шлет в и2ц. например
моя борьба с тда
mute в норме. сейчас сессия нет возможности проверить, как выйду на работу займусь и о результатах отпишу
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Проверил код - тишина.
Поигрался с Mute.
почему мы указываем 63?
если по таблице истинности 1 1 V05 V04 V03 V02 V01 V00 8 бит первых два 1 постоянны остальные в зависимости от громкости. получается не 63 а 255. Или я что то не правильно понимаю
изменил код до такого все равно ничего.
PHP код:
#include <Wire.h>
#define MAD 130 // адрес модуля аудио процессора
#define LC 0 // адрес левого канала
#define RC 1 // адрес правого канала
void setup()
{
Wire.begin(); // Включить i2c
}
void loop() // Главный цикл
{
set(1, 255, 2, 246, 3, 246, 8, 206);
delay(2000);
}
void set(byte sab, byte volume, byte ab, byte bb, byte at, byte bt, byte as, byte bs)
{
Wire.beginTransmission(MAD);// начало передачи, с адресом аудио процессора MAD
Wire.write(sab); // SAB адрес
Wire.write(volume); //уровень
Wire.write(ab); // SAB адрес
Wire.write(bb); //уровень
Wire.write(at); // SAB адрес
Wire.write(bt); //уровень
Wire.write(as); // SAB адрес
Wire.write(bs); //уровень
Wire.endTransmission(); // конец передачи
}
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Ну так что есть еще какие предложения/варианты почему не хочет микруха реагировать??? Команды вроде очень простые, ничего такого
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
почему мы указываем 63?
Потому что в документации написано что предел значений от 0 до 63
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
Сообщение от
Chip
Потому что в документации написано что предел значений от 0 до 63
Уверены? Если смотреть даташ, то по таблицам истинности при -80 дцб то есть при 0 громкости будет от 192 до 219 это все ноль. Максимальная громкость при 6 дцб а это есть 255.
Есть еще TDA7419, попробую на ней, но там функционала мама не горюй, кода писать много.
Вложений: 1
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Мы наверно разные Datasheet смотрим
Вложение 16413
Re: TDA8425 audio CPU ПРОБЛЕМА!!!
Цитата:
Сообщение от
Chip
Мы наверно разные Datasheet смотрим
У меня такой же. Эт получается из за того что старшие биты заморожены их не требуется посылать?! Тогда понятно почему 63. Поменял, но все равно тишина. Походу убитая TDA-шка. Буду играть с 7419, посмотрим что выйдет