DSP Amp mit LM3886

Aus Fingers Wiki
Zur Navigation springen Zur Suche springen

Bauteile

  • LM3886 (3x)
  • ATmega32
  • ADAU1701 (DSP)
  • CS8416 (SPDIF nach I2S)
  • CS4392 (DAC für SPDIF I2S)
  • LM837 (Signalopamp)

Aufbau

Leider ist die Schaltung nicht so wie ich mir das vorgestellt hatte.
Dachte, dass die Analogquellen gemischt werden und Stereo an die ADCs des DSP gehen und das SPDIF Signal zu I2S gewandelt wird und an den DSP geht.
Die XLR Quelle könnte dabei durchaus nur LInks sein.
Der Links/Rechts Schalter würde dann an den AVR gehen der die Parameter im DSP ändert.
Wollte mir ja eigentlich aus einem der Teile nen Stereo Amp bauen, der ber Chinch und SPDIF das Signal bekommt.

Nun ist es überhaupt nicht so, durchgemessen mit Signaleinspeisung (Stereo) über Cinch.
Das SPDIF Signal geht zwar in einen Receiver, der wandelt den Stream auch nach I2S um, aber das geht dann direkt an einen DAC.
Es werden also ALLE Quellen analog zusammengemischt!
Vermutung: XLR wird auf beide Kanäle gemischt.
Das Gemisch geht dann noch als Stereo auf den Schalter für -6dB/0dB/-6dB.
Ja die Schalter pfuschen direkt am Analogsignal rum!

Nach dem Pegelschalter geht das Ganze zum L/L+R/R Schalter.
Das ausgewählte Signal wird zum DAC geschickt, das Andere über den RJ45 zum anderen Lautsprecher.
Das Signal wird analog über das Cat6 Kabel gejagt! Daher solls auch Cat6 PiMF sein...
Damit sich nicht beide Lautsprecher anbrüllen muss das Kabel , wie auch die Bedruckung verlautet, ein Crossover LAN Kabel sein.
Der Kanalwahlschalter leitet dann das einkommende Audiosignal über RJ45 an den nicht ausgewählten Kanal weiter, sonst gäbs ja ne Rückkopplung.

Dann geht nurnoch ein Signal an den DSP (ADC1 Eingang), also nix Stereo bis DSP...
Auch wenn vom ADC0 Eingang eine Leiterbahn weggeht, so liegt dort kein Signal an.
Aus dem DSP kommen dann Tiefton und Hochton wieder raus (TT = VOUT1, HT = VOUT2).
Der DSP macht also nur Kennlinienanpassung, Lautstärke und Frequenzweiche (laaangweilig!).

Der DIP Switch geht direkt an den AVR und der spielt dann wohl am Parametersatz des DSP rum.

Anschlussbelegungen

DSP programmieren

Bei dem DSP handelt es sich um einen ADAU1701, ein DSP der Reihe SigmaDSP von Analog Devices.

Dieser lässt sich mit dem kostenlosen Programm SigmaStudio parametrisieren.

Aus SigmaStudio purzeln am Ende ein paar Header Dateien für C raus. Unter der Annahme, dass das Projekt "my_adau" heißt sind das folgende:

my_adau_IC_1.h Programm und Daten des DSP
my_adau_IC_1_PARAM.h Adressen der DSP Parameter des Projekts
my_adau_IC_1_REG.h Adressen der DSP Register

Das DSP Programm und seine Variablen liegen in der my_adau_IC_1.h als C Arrays vor und sind somit einfach in ein eigenes Projekt einbindbar. <source line lang="c" > /* DSP Program Data */

  1. define PROGRAM_SIZE_IC_1 5120
  2. define PROGRAM_ADDR_IC_1 1024

ADI_REG_TYPE Program_Data_IC_1[PROGRAM_SIZE_IC_1] = {}

/* DSP Parameter (Coefficient) Data */

  1. define PARAM_SIZE_IC_1 4096
  2. define PARAM_ADDR_IC_1 0

ADI_REG_TYPE Param_Data_IC_1[PARAM_SIZE_IC_1] = {} </source>

Allerdings müssen bei den .h Dateien, die das SigmaStudio ausspuckt, noch ein paar Änderungen vorgenommen werden.
So kennt das Sigmastudio ja kein PROGMEM.
Also überall #include <avr/pgmspace.h> includen
Weiterhin in der my_adau_IC_1.h folgendes erstzen: <source line lang="c" > //#define DEVICE_ADDR_IC_1 0x0 extern uint8_t DEVICE_ADDR_IC_1; </source> Weiterhin hinter alle Arrays PROGMEM schreiben.
Die Funktionen SIGMA_WRITE_REGISTER_BLOCK umbenennen nach SIGMA_WRITE_REGISTER_BLOCK_P

Mods

Es ist möglich Stereo an den DSP zu legen.
Lustigerweise ist der ADC0 Eingang belegt, bekommt aber kein Signal.
Der Pin geht zu einem Widerstand und das andere Ende verschwindet dann im Nirvana.
Die im Bild angepfeilten Widerstände auslöten.
Die Pfeile am DSP markieren direkt den ADCx Pin des DSP.
Die Pfeile im Bild sind die Analogkanäle nach dem Pegelwahlschalter, der Kanalwahlschalter ist mit diesem Mod totgelegt (den brauchts dann eh nicht mehr).
Allerdings muss dann noch der "Eingangsfilter" wie im DB dazwischen gelötet werden.