Forum: Mikrocontroller und Digitale Elektronik STM32H753ZIT6 als SPI Slave zum Empfang von 128 bit


von Charly (Gast)


Lesenswert?

Hallo!

Ich möchte einen STM32H753ZIT6 als SPI Slave verwenden, um Daten eines 
AD-Wandlers (SPI Master, AD7768-4) zu empfangen. Der ADC hat 4 Kanäle 
und sendet die jeweils 32 bit pro Kanal (inkl. Statusbits) aneinander 
gehängt (also 4 x 32 bit = 128 bit) bzw. im sogenannten TDM-Mode. Das 
bedeutet, dass ich nur alle 128 bit einen Puls durch den ADC auf der 
Data-Ready-Leitung bekomme, die ich an SPIx_NSS des STM32 klemmen würde.

Kann das funktionieren? Der Mikrocontroller hat ja eine begrenzte 
Framesize (32 bit glaube ich). Würde der Rx-Buffer dann also immer 
überlaufen? Idealerweise würde ich die Empfangsdaten auch gerne direkt 
per DMA wegspeichern.

Danke für eure Hilfe!

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

TDM?
Das ist dann kein SPI.
Nimm den "SAI" der kann TDM empfangen und wertet auch den Syncpuls in 
Hardware aus.

von Charly (Gast)


Angehängte Dateien:

Lesenswert?

TDM heißt Time Division Multiplex. Tatsächlich muss ich zustimmen, dass 
dieses Format dann nicht mehr so ganz SPI entspricht, sondern eher an 
sowas wie I2S oder eben SAI erinnert.

Mich würde dennoch interessieren, ob ich nicht trotzdem die normale 
SPI-Peripherie verwenden kann. Habe nochmal im Reference Manual 
nachgelesen: Der RX-FIFO hat eine Länge von 16 x 8 bit = 128 bit. Diese 
Länge passt exakt zu meinen 4 x 32 bit. So könnte ich einfach eine 
DMA-Operation auslösen, sobald der RX-FIFO voll ist. Das sollte doch 
gehen, oder nicht?

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
Noch kein Account? Hier anmelden.