Skocz do zawartości

Uruchomienie układu TDA7564B


apaczenko1993

Pomocna odpowiedź

Cześć 

Mam taki układ zmontowany na płytce prototypowej a teraz zamierzam go uruchomić by wykorzystać go budowy głośnika bluetooth. Wiem z dokumentacji że trzeba go włączyć komendą po i2c.

Mam napisany już kod na Arduino, skaner i2c wykrywa TDA pod adresem 0x6c, binarnie 1101100. 

W dokumentacji dziwi mnie że ostatni 8 bit adresu ma decydować czy chcemy coś wysłać czy odebrać z TDA.

Czyli przykładowo:

11011000 - adres wysłania do TDA (8 bitowy adres?)

11011001 - odczyt z urządzenia (8 bitowy adres??)

Poniżej link z programem Arduino: 

#include <Wire.h>

void setup() {
  Wire.begin(108);   //adres 108 czyli binarnie 1101100 bez ostatniego bitu 0 lub 1 ktory decyduje czy mamy wysylac czy odbierac
                     // urzadzenia TDA 
  Wire.beginTransmission(108); 
  Wire.write(0b0); // tutaj wysylam bit wyboru 0 czyli chce wyslac do TDA komende, wiem że zapewnie zle to robie
  Wire.write(0b00000110);        // wysylam 8 bitowy ciag zer i jedynek zgodnie z tabela IB1 z dokumentacji
  Wire.endTransmission();    
  delay(1);
  Wire.beginTransmission(108); 
  Wire.write(0b0); 
  Wire.write(0b00010000);        // wysylam 8 bitowy ciag zer i jedynek zgodnie z tabela IB2 z dokumentacji
  Wire.endTransmission();    
}

 

Podaje także link do dokumentacji TDA:

https://www.st.com/resource/en/datasheet/tda7564b.pdf

 

Pytanie co robię źle bo układ nawet nie chce zagrać? Wydaje mi się że problemem jest ten ostatni 8 bit adresu. Z tego co wiem arduino ma 7 bitową adresację. Wczoraj próbowałem już wszystkich opcji i zero postępów. Czy jakaś mądra głowa jest w wstanie podać mi kod który uruchomi mi ten układ?

Link do komentarza
Share on other sites

Adres I2C to jest siedem bitów wybierających urządzenie i ósmy bit wybierający czy chcesz pisać czy czytać. Biblioteka Arduino oczeukuje 7-bitowego adresu, bez tego ostatniego bitu — doda go sobie automatycznie w zależności czy piszesz czy czytasz. Twój przykładowy program poprawnie używa adresu 108. Nie wiem czym ma być w twoim programie "bit wyboru". Datasheet oznajmia, że urządzenie oczekuje dwóch bajtów flag. I niby rzeczywiście wysyłasz dwa bajty, tylko nie wiem czemu ustawiasz IB1 na same zera, co wycisza wszystkie kanały.

Link do komentarza
Share on other sites

Co do ramki danych czyli samych zer do tablicy IB1, pierwsza paczka bajtu

Wire.write(0b00000110) czyli:

0 - z dokumentacji D7 ma być zawsze 0

0 - z dokumentacji tryb diagnostyczny, dałem 0 by wyłączyć

0 - offset detection - dałem na 0 by wyłączyć

Następne dwa zera dotyczą gain a dałem na 26dB czyli zera

Kolejne dwie jedynki dotyczą wyciszania kanałów - dałem na 1 by były aktywne, unmute

Ostatni bit dałem na 0 - clip detector 2%

 

Następna ramka danych z tabeli IB2, druga paczka bajtu:

Wire.write(0b00010000) czyli:

0 - próg wykrywalności natężenia?? dałem na Low,

0 - z tabli IB2 D6 = 0;

0 - dałem na normal muting,

1 - standby off, czyli uruchamiam TDA,

0 - power amplifer mode diagnostic???

0 - diagnostyka wykrycia natężenia, dałem na defeat,

Dwa ostatnie zera oznacza że kanały pracują w normalnym trybie

 

Nie ukrywam że 1 raz korzystam z i2c. 

@deshipu -  w takim razie jak powinien wyglądać program? Na ten moment poprawiłem go na:

void setup() {
  Wire.begin(108);   //adres 108 czyli binarnie 1101100 bez ostatniego bitu 0 lub 1 ktory decyduje czy mamy wysylac czy odbierac
  Serial.begin(9600);     
  Wire.beginTransmission(108); 
  Wire.write(0b00000110);        // wysylam 8 bitowy ciag zer i jedynek zgodnie z tabela IB1 z dokumentacji
  Serial.print("IB1 paczka: ");
  Serial.println(Wire.endTransmission());  
  delay(1);
  Wire.beginTransmission(108); 
  Wire.write(0b00010000);        // wysylam 8 bitowy ciag zer i jedynek zgodnie z tabela IB2 z dokumentacji
  Serial.print("IB2 paczka: ");
  Serial.println(Wire.endTransmission());      
}

Funkcja Wire.endTransmission() zwraca same 0 czyli można powiedzieć że jest sukces, lecz TDA dalej nie chce zagrać.

W załączniku dodałem tabele IB1 oraz IB2

 

ib1.png

ib2.png

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.