Gast
#1431390
Ich beschäftige mich jetzt schon eine gute Weile mit SPI/DMA auf dem STM32 und komme einfach nicht weiter. Die Initialisierung erledige ich wie in diesem Beitrag: http://www.st.com/mcu/forums-cat-8238-23.html allergings läuft Frameworkbedingt die SPI-Initialisierung vor der DMA-Initialisierung ab, sprich: SPI wird auch vor der DMA-Initialisierung auf enabled gesetzt. (Ist das problematisch?) Mein momentaner Code crasht immer ein paar Befehle nachdem ich DMA auf enabled gesetzt habe. Die Initialisierten Werte finde ich auch so im Speicher wieder, soweit sollte das korrekt sein (Abweichende Werte zum Link: DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&SPI1->DR; DMA_InitStructure.DMA_MemoryBaseAddr = (u32) pReadBuffer; DMA_InitStructure.DMA_BufferSize = wByteCount; wobei pReadBuffer bzw. pWriteBuffer ein (Byte-)Pointer auf einen vorher schon existierenden Puffer ist und wByteCount dessen Anzahl an Bytes enthält). Es funktioniert weder mit noch ohne initialisierte Interrupts (und DMA_IT_TC, ENABLE). Leider habe ich keine Application Note zu SPI/DMA gefunden. In der AN2548 wird zwar in der Beschreibung erwähnt, dass für SPI1_RX DMA1 Ch2 verwendet wird, im Code wurde das aber offensichtlich vergessen und nur der ADC mit DMA implementiert. Hat eventuell jemand einen funktionierenden Codeausschnitt oder kann mir Tipps zur Fehlersuche geben? Ich kann auch gerne weiteren Code posten, allerdings ist meiner weitestgehend gleich dem im obigen Link. Ich bin für jeden Tipp dankbar, da mich das Problem jetzt schon ein paar Tage aufhält. Vielen Dank!