Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu CS5463


von Gast (Gast)


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:
1
void SPI_read_register(uint8_t register_address, uint32_t *data)
2
{
3
  uint8_t temp = 0x00;
4
  register_address &= 0b00011111;  // Maskiere sicherheitshalber Register_addresse
5
  register_address = register_address << 1;  // Verschiebe um 1 nach links
6
  temp |= register_address;    // Füge beide Daten zusammen
7
  SPI_send(temp);      // Sende fertiges Packet
8
  // Was jetzt?!
9
}

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.

von Daniel L. (daniell)


Angehängte Dateien:

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.