Hi, ich hab hier ein Device vor mir liegen, welches ich per SPI mit 9bit langen Befehlen füttern muss. Das Datenwort, was als Antwort zurückkommt ist jedoch 16bit lang. Hat jemand eine Idee wie man das mit dem STM32 am besten bewerkstelligen kann? Was ich mir überlegt habe (jedoch noch ungetestet): Chip Select Low //Schreiben SPI deaktivieren SPI Framelänge auf 8bit setzen SPI aktivieren ersten 8bit übertragen SPI deaktivieren 9.bit "manuell" reintakten //Lesen SPI Framelänge auf 16bit setzen SPI aktivieren 16bit Datenwort lesen Chip Select High Ich hab ehrlich gesagt keine Ahnung ob das funktionieren kann. Am ehesten macht mir der Punkt "9.bit reintakten" Kopfzerbrechen. Kann das überhaupt funktionieren? Oder sollte man hierfür Software SPI in Betracht ziehen? Bin für Vorschläge offen.
Da die SPI-Schnittstelle ja ein Schieberegister ist, muss man sowieso 16-Bit reinschieben um 16-Bit zu erhalten. Eventuell sind noch "Dummy-Bits" einzufügen. Gruß Stefan
Hallo Stefan, du meinst also, dass der Befehl nicht 9bit sondern eigentlich 16bit hat? Versteh ich dich da richtig? Kann natürlich auch sein, dass ich da im Datenblatt[1] etwas falsch verstanden habe. Wenn ich die Abb. 5 auf Seite 8 richtig deute, dann schicke ich ein 9bit langes Datenwort an das Device und ein 16bit Datenwort kommt zurück. Aber bitte korrigiert mich, wenn ich etwas falsch verstehe. [1] http://dlnmh9ip6v2uc.cloudfront.net/datasheets/BreakoutBoards/AN230_0.61.pdf
Also meiner Meinung nach handelt es sich hierbei nicht um eine SPI-Schnittstelle. Bei einer SPI hast du 4 Leitungen und immer wenn du auf MOSI ein Bit herausschiebst bekommst du auf MISO ein Bit herein. Du hast nur 3 Leitungen und m.E. keine Schiebefunktionalität. Da wird dir nichts anderes übrigbleiben als das Protokoll selber zu implementieren.
klicke schrieb: > Hat jemand eine Idee wie man das mit dem STM32 am besten bewerkstelligen > kann? Stefan C. schrieb: >> Da wird >> dir nichts anderes übrigbleiben als das Protokoll selber zu >> implementieren. HUST bitte nicht, das Protokoll was dort verwendet wird heist I2C und ist im STM32 selbstverständlich in Hardware schon gegossen ! Gruß und n8
Ach ja, das gabs ja auch noch! Ich bedecke mein Haupt mit Schande, war wohl doch schon zu spät... Zumindestens war es keine SPI ;)
Ihr habt natürlich Recht Hand gegen Kopf. Da ich auf Watterott gelesen hab, dass das Si4703 Breakout Board SPI unterstützt war ich irgendwie so drauf fixiert und hab nich mehr nachgedacht. Sorry! I2C kann ich leider nicht nutzen, da die entsprechenden Portpins schon anderwertig belegt sind. Also wirds wohl doch auf selbst programmieren hinauslaufen - schade.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.