Es sieht so aus, also ob der DMA im STM32H7 für den Buffer einen maximalen Adressraum von 16 Bit hat, zumindest funktioniert der Code nur bis maximal ADCbufferSize = 65535 #define ADCbufferSize 65535 volatile uint16_t ADCbuffer[ADCbufferSize]; HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADCbuffer, ADCbufferSize); Schaue ich mir meinen Buffer (nach dem Interrupt von HAL_ADC_ConvCpltCallback) an, dann ist alles bis ADCbuffer[65534] mit ADC-Werten gefüllt und darüber stehen Nullen. Am Buffer liegt es nicht, wenn ich den mit einer Schleife mit Dummy-Zahlen fülle, dann liegen die Werte auch da. Im Grunde sollte dem DMA ein Adressraum von 32 Bit zur Verfügung stehen, warum hört der Code auf bei 16 Bit Adressraum zu funktionieren? Viele Grüße! Marko
Marko R. schrieb: > Im Grunde sollte dem DMA ein Adressraum von 32 Bit zur Verfügung stehen, Hast Du das im Referenz Handbuch verifiziert? DMA Register für "Transfer Size" haben gerne mal <32 Bit Breite, und arbeiten auch gerne mal nur auf spezifischen Speicherbereichen, z.B. nicht aus dem Flash. YMMV, denn das ist alles µC-spezifisch.
Ich habe es gefunden: DMA flow controller: the number of data items to be transferred is softwareprogrammable from 1 to 65535
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.