Hallo, ich schaue mich nun im Reference Manual der MCU um, ob es dort irgendeinen Hardware-Support für "SSI" gibt, aber fündig wurde ich nicht. Gemeint ist ein serielles Dateninterface, das in http://www.ams.com/content/download/50206/533867/34236 auf Seite 13 beschrieben ist. Muss ich das per Software machen? Im FPGA lief die Statemachine dazu parallel in einem eigenen Modul, ich fänd's schade, wenn ich jetzt die ganze MCU während des Transfers brachlegen muss (zumal das Timing über GPIO wohl etwas Hirnschmalz benötigt, wie bekommt man da etwas gleichmäßiges hin, das ungefähr bei knapp unter 1 MHz läuft?). Hab ich im Reference Manual etwas übersehen, habt ihr Ratschläge? Viele Grüße
Das ist SPI, nur ohne MOSI. Zu verwenden mit USART, SSP oder SPI Schnittstellen. Die 18 Datenbits wird man irgendwie aufteilen müssen, bessere SPI Hardware hat oft einstellbare Bitlängen, so dass man z.B. 2 mal 9 Bits draus machen kann.
Ja, ich habe mal weitergeschaut, und kam auf den Gedanken, die SPI-Einheit auf der MCU sozusagen zu missbrauchen. Leider kann die ja nur 8 oder 16 Bit, sodass ich dann wohl 3 8-Bit transfers nehmen könnte. Aber das Chip-Select muss ich auf jeden Fall irgendwie per Software machen. Denn in der STM-Doku steht, dass schon das Taktsignal anliegt, sobald NSS auf high geht, der Encoder will aber das Takt-Signal erst nach einer Totzeit nachdem das "Chip-Select" wieder auf low gegangen ist (eigentlich ist das ja kein Select, sondern eher ein Capture-Trigger...). Also irgendwie so: Toggle-GPIO An/Aus per Software, mit Schleifen oder Timer die Zeit totschlagen. Dann per DMA 3x0-Bytes schreiben und das Ergebnis in einen lokalen Puffer schreiben lassen, die letzten 6 Bits wegschmeißen. Vielleicht kommt der IC aber auch damit klar, wenn man nur 16 Bit abholt und "resetted" sein Interface wenn man ihn wieder toggled. Klingt das grob nach einem Plan, den man weiterverfolgen könnte?
OMG, warum muss immer alles mit einem Mikrocontroller gemacht werden, auch wenn so ein Teil dafür völlig ungeeignet ist? Nimm den kleinsten MachXO2, den es gibt (256 Makrozellen oder wie das bei denen gerade heißt), und bau das dort rein (Impulsseriengeber, primitivste Ablaufsteuerung, Registeranschluss an den Rechner - auch gerne über SPI) und fertig ist die Laube. In den Rest der CLBs, oder wie das bei denen gerade heißt, kann du noch Portextender oder sonstwas unterbringen, da bleibt noch massig Platz.
Wenn Du meinen OP gelesen hättest, wüsstest Du, dass ich das Interface durchaus schon in nem FPGA implementiert habe. Da ich aber Higherlevel-Sachen in dem "Gerät" benötige, wollte ich nun auf eine MCU gehen und das FPGA nur dann einsetzen, wenn es wirklich notwendig wird: Schaltungsaufwand ist für mich schlimmer als Softwareaufwand, mit einigem Abstand. Und warum so aggressiv?
Danke für die Erlaubnis, dann kann ich mir ja jetzt wieder über das eigentliche Thema Gedanken machen!
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.