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.