ADC LTC2445 - Funktionskontrolle / Ansteuerung über SPI

Gast #2168769
Lesenswert?

Hi Leute,
ich weiß net ob ihr den LTC2445 ADU kennt bzw. schon mit dem Erfahrungen 
habt. Aber ich habe hier jetzt gerade einen und würde den gerne via SPI 
- Ansteuern. Der ADU soll Master sein.
Jetzt mal ganz allgemein und unabhängig von SPI - ich will nur primär 
erstmal gerne Sehen, dass eine Clock vom ADU generiert wird:

Im Datenblatt steht, beim Power-Up wird der ADC auf 
Standard-Einstellungen (Kanal 1,1x-Mode,...)gesetzt
Und wenn man den Pin !EXT auf HIGH stellt, wird der interne Oszillator 
als Clock verwendet.
Außerdem steht da noch wenn man den Chip-Select auf LOW setzt fängt der 
ADC zu arbeiten an.
Also hab ich mal EXT auf HIGH und CS auf LOW gesetzt und natürlich VDD 
und GND angeschlossen. Ich würde jetzt sagen, dass an CLK ein 
Clock-Signal anliegen müsste. Dort liegt aber konstant 5 V an 
(Oszi-Messung)
Also irgendwie braucht der anscheinend doch noch einen Tritt oder ist 
kaputt...

Das Datenblatt findet sich hier
http://cds.linear.com/docs/Datasheet/2444589fb.pdf

Wo ist mein Denkfehler? Bzw. hat da jemand ne Idee?
Gast #2169114
Lesenswert?

Hi nochmal,
ich hab jetzt mal probiert, die SPI Daten manuell einzulesen, weil ich 
es gerne verstehen würde. Mir ist klar, dass man das wohl in dem meisten 
Anwendungen mit der SPI-Einheit von nem Microcontroller macht :)

Wie auch immer, mein Versuch war folgender:
1
while(1)
2
  {
3
i=0;
4
  mPORTBClearBits(BIT_2);  //ADU aktivieren
5

6
  while(mPORTFReadBits(BIT_6)) ; // Warten auf fallende Taktflanke 
7
  while(!mPORTFReadBits(BIT_6)); // Warten auf steigende Taktflanke
8

9
  while(i<32)
10
    {
11
    ausgabe[i]=mPORTFReadBits(BIT_7);  // Datenbit lesen
12
    while(mPORTFReadBits(BIT_6)) ;    // Warten auf fallende Taktflanke
13
    while(!mPORTFReadBits(BIT_6)) ;  // Warten auf steigende Taktflanke
14
    i++;  // Nächstes Bit
15
    }
16
  mPORTBSetBits(BIT_2); //ADU deaktivieren
17
  
18
for(i=0;i<=500000;i++) ; //Warten
19
}
Dabei gilt:
BIT_6 ist die externe Clock vom ADU
BIT_7 ist SPI
BIT_2 ist CS - und das wird anscheinend nur zum an und auschalten vom 
ADC-verwendet...

Irgendwie ist aber mein Ergebnis nicht plausibel :( - obwohl ich die 
Spannung am ADU nicht ändere bleiben nicht mal die ersten 2 MSBs 
gleich...und das kann ja irgendwie nicht sein
Fang ich mir hier irgendwelche Bit-Verschiebungen ein?
Ich dachte, dass kann ich abwenden, in dem ich den ADU nach jeder 
Konversation abschalte...
Gast #2169890
Lesenswert?

ja, die Herren, die die Platine fertigen lassen haben, haben das 
verbockt :/ - der eine PIN der dafür verantwortlich ist liegt auf 5 V 
und das ist eine winzig kleine Platine. Und des Ding gibts jetzt in 
x-facher Ausführung. Damit hatte ich gar nix zu tun :] - Aber mir wurde 
jetzt gesagt, ich soll mal schauen, was man da machen kann, dass es 
trotzdem geht. So wie ich die SPI-Architektur verstanden hab, sollte es 
doch eigentlich in beide Richtungen funktionieren...

Hex Oschi schrieb:
> Der Controller sollte immer der Master sein. Alles andere macht wenig
> Sinn.

Warum ist das so schlimm? Weil man die Übertragung der einzelnen 
Datenwerte schlecht voneinander unterscheiden kann?
Gast #2169991
Lesenswert?

ah egal, der Code ist einfach richtung und der uC ist mit 80 MHz einfach 
zu langsam um eine 1Mhz Clock und die zugehörigen Datenbits schnell 
genug zu erfassen.

Versteh zwar nicht genau warum, aber anscheinend braucht es mehr als 80 
CPU-Zyklen um einen Port viermal zu lesen :)

Werds über das SPI-Register machen.
Aber warum es ein Problem ist, dass der ADU der Master ist versteh ich 
nicht. Wenn Chips miteinander über SPI kommunizieren muss ja auch einer 
der Slave sein... :)
#2170241
Lesenswert?

Das ist richtig. Der Eine davon hat ja vielleicht noch was anderes zu 
tun und wuerde den Zeitpunkt gerne bestimmen. Wenn der Controller den 
Slave spielt, dann muss er hinreichend schnell pollen um keine Aenderung 
zu verpassen. Im wesentlichen muss der slave aufpassen dass er den 
Zeitpunkt der CLK Flanke mitbekommt, dann das Datenbit lesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren