DAC Philipsa - HELP HELP HELP

Apr 30, 2004 7 Replies

Witam



mam sobie takiego DACa - TDA1543

formatting link



16bitow, format wejsciowy I2S, wyjscie pradowe, przetwornik I/U zrobilem na najprostszym oporniku 1k, wyjscie Iref tez przez 1k do masy

DACa podlaczylem do AVRka i probuje udawac I2S - czyli 16bitow, zmiana stanu na WS, kolejne 16bitow i tak w kolko na DATA caly czas zero (albo jeden...)



na wyjsciu nie zmienia sie kompletnie NIC :( caly czas dac jest ustawiony w polowie (8000h) czyli ok 3V



z tego co widze w nocie, DAC nie ma zadnych wynalazkow jak cyfrowe filtry itp. powinien dzialac praktycznie przy kazdej czestotliwosci taktowania - probowalem w zakresie 4Mhz ... 200Khz - totalnie nic :( Zachowuje sie tak jakby w ogole nie dostawal danych wejsciowych wejscia sprobowalem tez podlaczyc przez bufor - 74LS04, ale to tez nic nie dalo probowalem przesuwac faze sygnalu WS wzgledem zegara, ale tez bez roznicy



czy grupowi eksperci mogli by przejzec note tego scalaka - moze znajda cos ciekawego co mi umknelo?



mam 6 sztuk, wszystkie nowe i wszystkie zachowuja sie tak samo :( ma ktos pomysl gdzie moze byc haczyk? wiem ze pewnie nikt tego scalaka nigdy nie uzywal w ten sposob, ale kazdy pomysl jest na wage zlota... :(



pzdr i dzieki z gory! mw



Uwaga na wzajemne polozenie danych i sygnalu left/right. Ostatni bit jest transmitowany po zmianie tego sygnalu a nie od razu jak moznaby sądzic. Moze to jest to.

B.

dzieki, ale wiem..... wysylam albo same 0 albo same 1 - wtedy to nie ma znaczenia, a na wyjsciu i tak nic sie nie zmienia :(

jakies inne pomysly? brak mi juz sil :(

trafilem na

formatting link
babel fish wyplul cos takiego (jedna z odpowiedzi) ale to taki belkot ze trudno cokolwiek zrozumiec.... moze ktos domysli sie o co chodzi? glownie na poczatku (shreds? generil? velveteen?) moze ktos przetlumaczy oryginal?
formatting link
it wore out, it was necessary to make more rapidly, also, without the jitter. Saved that I2S makes it possible to transfer excess shreds, that drop, on which it is loaded the parallel register TSAP (it renews vykhodny current) of generil with the aid of compare, and rest - with the aid of SPI. Mega8 spend on the load of one channel less than 3 s. Thus it managed without VELVETEEN, savings, pancake! Actually the question: TSAP has a conclusion Vref, to which it is necessary to connect resistor to the earth. The rating of this resistor and resistors of load must be selected so that with any code voltage on outputs would be entered in the permissible range. Otherwise output diagrams TSAP leave from the linear conditions, consumption and entire such. Although on the mind it is necessary to place the normal converter of current in the stress on OU. So that the standard diagram from Datasheet- A would work, OU must have bipolar nourishment

Czesc !

Kiedys opanowywalem tego scalaka wiec podziele sie tym co napisalem,

Program napisany dla 8051 dla obslugi TDA1543 - D/A 2x16 bit : procedura dziala poprawnie na 100 %.

Porownaj ten kod ze swoim, jak chcesz to podesle schemacik jak to-to jest popodlaczane na priv.

Pozdrawiam : Andrzej Sarbinowski

PS: Przepraszam ze wale zrodla na liste, ale nie sa zbyt dlugie, a moze komus jeszcze sie przydadza : a widze ze temat sie raz poraz pojawia na liscie.

; Plik i2s.asm

PUBLIC SendI2S $DEFFN SendI2S(0,0,0,0,0,4,0,0)

EXTERN _R

I2SWR EQU P1.1 I2SCL EQU P1.2 I2SDA EQU P1.3

RSEG CODE

macro %W10us MOV R5,#4 DJNZ R5,$ endmac

SendI2S: MOV R0,#$LOCBI SendI2S MOV @R0,_R+6 INC R0 MOV @R0,_R+7

MOV R0,#$LOCBI SendI2S MOV A,@R0 XRL A,#80h CLR KTORYKAN LCALL SendI2SB

MOV R0,#$LOCBI SendI2S+1 MOV A,@R0 CLR KTORYKAN LCALL SendI2SB

MOV A,#0 SETB KTORYKAN LCALL SendI2SB

MOV R0,#$LOCBI SendI2S+2 MOV A,@R0 XRL A,#80h SETB KTORYKAN LCALL SendI2SB

MOV R0,#$LOCBI SendI2S+3 MOV A,@R0 SETB KTORYKAN LCALL SendI2SB

MOV A,#0 CLR KTORYKAN LCALL SendI2SB

RET

SendI2SB: MOV R7,#7 NastBIT: RLC A MOV I2SDA,C %W10us SETB I2SCL %W10us CLR I2SCL DJNZ R7,NastBIT RLC A MOV I2SDA,C MOV C,KTORYKAN MOV I2SWR,C %W10us SETB I2SCL %W10us CLR I2SCL RET

RSEG BITVARS KTORYKAN DS 1

END

/* Plik przyklad.c */

typedef unsigned char byte; typedef unsigned int word;

extern void SendI2S(word,word);

void init_I2S(void);

void main(void) { word KanalL,KanalP;

init_I2S(); do { /* ........ */ SendI2S(KanalL,KanalP); } while(1); }

void init_I2S(void) { SendI2S(0,0); SendI2S(0,0); }

na najprostszym oporniku 1k, wyjscie Iref tez przez 1k do

A próbowa³e¶ ten rezystor podczepiæ nie do masy tylko do zasilania ?

Pzdr megaraptor

hmm splodzilem cos takiego, na szybko w C - chyba dziala identycznie jak Twoj kod... generuje mi piekne przebiegi, dokladnie takie jak powinny byc, ale DAC nadal milczy :(((

powiedz jak od strony hardwareowej masz podlaczonego DACa - jak zrobiles przetwornik I/U, co z Iref itp.

void wait() { unsigned char i; for(i=0;i!=100;++i); }

void sendi2s(unsigned int l, unsigned int r) { unsigned char i, j;

#define DATA PB2 #define WS PB1 #define CLK PB0 #define O PORTB

DDRB = 0xFF;

cbi(O,CLK); cbi(O,DATA); cbi(O,WS);

j = l >> 8; for(i=0;i!=8;++i) { cbi(O,CLK); if(j & 0x80) sbi(O,DATA); else cbi(O,DATA); j <<= 1; wait(); sbi(O,CLK); wait(); }

j = (unsigned char)l; for(i=0;i!=7;++i) { cbi(O,CLK); if(j & 0x80) sbi(O,DATA); else cbi(O,DATA); j <<= 1; wait(); sbi(O,CLK); wait(); } cbi(O,CLK); sbi(O,WS); if(l & 0x80) sbi(O,DATA); else cbi(O,DATA); j <<= 1; wait(); sbi(O,CLK); wait();

j = r >> 8; for(i=0;i!=8;++i) { cbi(O,CLK); if(j & 0x80) sbi(O,DATA); else cbi(O,DATA); j <<= 1; wait(); sbi(O,CLK); wait(); }

j = (unsigned char)r; for(i=0;i!=7;++i) { cbi(O,CLK); if(j & 0x80) sbi(O,DATA); else cbi(O,DATA); j <<= 1; wait(); sbi(O,CLK); wait(); } cbi(O,CLK); cbi(O,WS); if(l & 0x80) sbi(O,DATA); else cbi(O,DATA); j <<= 1; wait(); sbi(O,CLK); wait(); cbi(O,CLK);

}

dzieki wszystkim za odpowiedzi

juz sobie poradzilem :) ale problem byl ........ dziwny na zasilaniu byl zwykly kondensator 100nF TDA podlaczylem na plytce experymentalnej z PLD, AVRkiem i innymi szpejami

no i jak sie okazalo szum na zasilaniu skutecznie ukatrupial DACa, tak ze nie reagowal na zadne dane wejsciowe :(

dopiero dolozenie 100uF (!!!) bezposrednio na zasilanie TDA sprawilo ze zaczal dzialc perfekcyjnie :)

pzdr dla wszystkich mw

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required