Hallo ins Forum,
ich habe einen ADS131M03 erfolgreich an meinem STM32H745 zum Laufen gebracht.
Der ADS131 gibt über einen Pin ein Signal aus wann eine Wandlung abgeschlossen ist und die Daten bereit sind zum Auslesen.
Die Samplingrate des ADS131 kann zwar bis max. 64kSPS eingestellt werden. Mir reichen für meine Anwendung eingentlich 1 bis 2kSPS.)
Mittels Interrupt angestoßen durch das externe Signal kann ich natürlich die Werte einlesen und verarbeiten. So weit so gut. Aber der Controller hat noch sehr viel anderes zu tun. (ILI9341 und FreeRTOS sind am Start)
Daher hätte ich das gerne etwas effizienter - etwa in der Art:
Wenn das Data-Ready-Signal (low-active) vom ADS131 an einem Pin des STM32H7 ankommt sollte ohne Zutun der CPU ein SPI_Receive_DMA erfolgen und die Werte (5x 32bit "brutto" (= "NOP_Befehl" + 3x 32-bit Werte Kanal 1, 2 & 3 (=netto) + CRC-Daten) mittels DMA in ein Array geschrieben werden.
Erst wenn das abgeschlossen ist sollte ein Interrupt kommen, damit ich die Werte verarbeiten kann.
Option: Es können auch eine definierte Anzahl von Werten am Stück (in einer definierten Zeit) gelesen werden und der Interrupt kommt erst dann wenn alle Werte eingelesen sind.
Bei meiner intensiven Recherche habe ich Ideen gefunden, "etwas Ähnliches" mittels eines extern (vom ADS131) getriggerten Timers zu machen, der dann wiederum das CS-Signal ansteuert (das machen die SPIs aller ST-Controller ja leider (?) nicht automatisch) und zudem auch den DMA anstößt, der wiederum den SPI-Transfer aktiviert... (oder so ähnlich...?)
Keines der gefundenen Themen passt aber wirklich auf mein Beispiel..
Daher Frage ich erst mal im Land der Dichter und Denker nach... ...bevor ich mich in die Abgründe der ST-Community begeben ;-)
Falls da jdm eine Idee hat wäre ich sehr dankbar.
Viele Grüße
Sheldon
P.S.: Soweit ich bei meiner Suche erfahren habe schütteln andere Controller (TI ?) diese Funktionalität aus dem Handgelenk - die STM32H7-Serie (muss nicht unbedingt ein 745 sein) ist bei dieser Anwendung aber (leider) "gesetzt"... :-(
Falls deratiges bei einem ESP32 geht wäre das aber für ein anderes Projekt durchaus interessant

