Hi
Ich spiele gerade etwas mit meinem neuen ADAS1000* EKG IC und
begebe mich mit SPI in für mich unbekanntes Terrain.
(*
https://www.analog.com/media/en/technical-documentation/data-sheets/ADAS1000_1000-1_1000-2.pdf
)
Den IC habe ich (per SPI) an meinen Raspberry Pi 2 verkabelt.
Ziel soll für mich erst mal sein das ich korrekt Register schreiben und
lesen kann.
Der ADAS1000 hat einen freien GPIO(3) Pin den ich per Register (GPIOCTL)
setzten kann.
Also habe ich den Pin mit dem Register als OUTPUT und auf HIGH gesetzt.
Ich schreibe das ganze mit C++ und der bcm2835 Library.
Nachdem ich den 32bit Register in handliche 8bit Pakete zerlegt habe
und in ein char Array gepackt habe da ja der RPi nur 8bit auf einmal
übermitteln
kann, sende ich das ganze Array mit
1 | bcm2835_spi_transfern(spiOut,sizeof(spiOut));
|
an den IC. Das funktionierte auch auf Anhieb und ich konnte den Pin
mit dem Multimeter als HIGH messen. Soweit so gut.
Wie lese ich nun aber den Register wieder ein um ihn mit dem ersten
Schreibprozess vergleichen zu können?
Ich würde nun einfach nochmal den Register senden, nur halt diesmal mit
dem READ Bit
gesetzt und Datenbits alle mit "0".
Jetzt kapier ich aber noch nicht so richtig wie ich die Antwort zurück
bekomme.
Nachdem ich dem IC mitgeteilt habe das ich den Register lesen will
passiert ja nix weiter,
es kommen keine Daten über MISO rein. Ist das richtig das der IC im
Grunde nur wartet bis SCLK wieder aktiv wird und er dann Bit für Bit
ausgibt? Muss ich dann also nochmal 32 Takte an den IC senden damit er
mir den Register zurücksendet?
Was sende ich am besten um das zu machen? Einfach 32 Nullen oder müssen
das irgendwelche Daten sein?