mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu CS5463


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe einen Messchip (CS5463: Datenblatt 
http://www.cirrus.com/en/pubs/proDatasheet/CS5463_F2.pdf ) mit meinem µC 
über SPI verbunden. Jetzt möchte ich einzelne Registerinhalte auslesen 
und hier kommt schon meine Frage. Auf Seite 21 steht:

"During data reads, the serial port requires
input data. If a new command and data is not
sent, SYNC0 or SYNC1 must be sent."

und als Beispiel steht auf Seite 22:

Example:
Reading register 6 in page 3.
1. Write 3 to page register with command and data:
0x7E 0x00 0x00 0x03
2. Read register 6 with command:
0x0C 0xFF 0xFF 0xFF

So jetzt ist aber meine Frage wie ich das ausprogrammiere. Ich muss ja 
Daten auch senden?

also hier der Code:
void SPI_read_register(uint8_t register_address, uint32_t *data)
{
  uint8_t temp = 0x00;
  register_address &= 0b00011111;  // Maskiere sicherheitshalber Register_addresse
  register_address = register_address << 1;  // Verschiebe um 1 nach links
  temp |= register_address;    // Füge beide Daten zusammen
  SPI_send(temp);      // Sende fertiges Packet
  // Was jetzt?!
}

Was soll ich nach dem ersten Packet machen? SPI_get() aufrufen und 
sehen, was der Messchip mir gesendet hat oder SPI_send(0xFF)?

Würde das so stimmen:
SPI_send(temp);
SPI_get();
SPI_send(0xFF);
SPI_get();
SPI_send(0xFF);
usw.?

Sorry leute, wenn ich gerade ein wenig auf der Leitung stehe oO Habe 
leider die Schaltung noch nicht fertig aufgebaut und von daher kann ich 
es auch nicht testen.

Autor: Daniel Lis (daniell)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gast,

Falls Dein Thema noch aktuell ist...im Dateianhang findest Du meinen 
Code für das Beschreiben und Auslesen der Register des CS5463. Der 
Mikrocontroller stellt bei mir nur eine Schnittstelle zw. PC und CS5463 
(USB<->UART<->SPI) her.
Auf dem PC läuft ein kleines Programm (programmiert in LabVIEW), welche 
in der Lage ist, die Parameter als ein Dez.String an den Controller zu 
senden und zu empfangen. Die Parameter in diesem String sind durch ":" 
voneinander
getrennt.

Da ich absoluter Anfänger in Sachen Elektronik und Programmieren bin, 
bin ich mir sicher, dass mein Code nicht die eleganteste Lösung ist, es 
funktioniert aber!

Gruß
Daniel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.