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?