SPI für Einsteiger

Gast #236613
Lesenswert?
• ▲
▼
Hallo zusammen,
ich möchte einen AD-Wandler(24bit-LTC2410) über die SPI-Schnittstelle
vom mega128 auslesen.
Programmieren möchte ich mit Codevision.

Kann mir einer bitte grob erklären, wie der Startvorgang in C aussieht,
um den ADC zum Senden zu bewegen?

Vielen Dank

Brillitsch
Gast #236616
Lesenswert?
• ▲
▼
1
void SPI_MasterInit(void)
2
{
3
/* Set MOSI and SCK output, all others input */
4
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
5
/* Enable SPI, Master, set clock rate fck/16 */
6
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
7
}
8
void SPI_MasterTransmit(char cData)
9
{
10
/* Start transmission */
11
SPDR = cData;
12
/* Wait for transmission complete */
13
while(!(SPSR & (1<<SPIF)))
14
;
15
}
Gast #236617
Lesenswert?
• ▲
▼
Danke für die schnellen Antworten.

Das Datenblatt und div. App.Note hab' ich ja gelesen, aber ich hab'
da wohl eine Blockade.

Konkret: Der mega128 liefert den Clock, steuert SS\(ist CE\ beim ADC)
und soll 24bit vom ADC empfangen.

Versteh ich das Codebeispiel vom Datenblatt richtig, das ich laut
Befehl: SPDR = cData; dem ADC erst ein Byte senden muss, um von ihm ein
Byte zuerhalten?

Wenn ja, ich möchte aber 24bit erhalten, muss ich dann 3x8 Einzelbit
senden?

Brillitsch
#236620
Lesenswert?
• ▲
▼
Ganz einfach: gar nichts, weil er sie nie erhält.
Der LTC2410 hat nur ein 3-Wire-Interface: /CE,SCK und SDO. Es fehlt ein
SDI (serial data in)
Somit wird MOSI nicht an den ADC angeschlossen.
Man muß nur 3 Byte senden, weil sonst die SPI-Schnittstelle keinen Takt
liefert. Der ADC ist sendebereit, sobald /CE auf low gezogen wurde.
Gast #236621
Lesenswert?
• ▲
▼
Hallo Rahul,

erst steh ich aufm Schlauch, und dann übersehe das korrekte
SPI-Interface aufm LTC.

Danke das Du mich drauf hingewiesen hast.


So, Feierabend is. Schönen Jahreswechsel.

Brillitsch

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.