Gast
#3581188
Hallo! Ich benutze einen STM32F103 um auf eine SD Karte zu schreiben. Das Ganze funktioniert und die Daten sind konsistent. Nun habe ich jedoch das Problem, dass wenn ich sehr viele Daten übertragen will (z.B. 10'000x16x512 Bytes --> sequentiell 10'000 DMA Requests) der DMA keine Daten mehr überträgt und dadurch auch kein TC Flag mehr setzt. Reduziere ich die SDIO Frequenz von 24MHz auf 8MHz tritt das Problem nicht mehr auf. Kann es sein, dass das DMA Modul nicht darauf ausgelegt ist, sequentiell viele Anfragen abzuarbeiten? Oder benutze ich das Modul falsch? Hier ist der DMA Request der bei jedem Write Befehl ausgeführt wird: DMA_InitTypeDef DMA_InitStructure; DMA_ClearFlag(DMA2_FLAG_TC4 | DMA2_FLAG_TE4 | DMA2_FLAG_HT4 | DMA2_FLAG_GL4); /* DMA2 Channel4 disable */ DMA_Cmd(DMA2_Channel4, DISABLE); /* DMA2 Channel4 Config */ DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SDIO_FIFO_Address; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)BufferDST; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; DMA_InitStructure.DMA_BufferSize = BufferSize / 4; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; DMA_Init(DMA2_Channel4, &DMA_InitStructure); /* DMA2 Channel4 enable */ DMA_Cmd(DMA2_Channel4, ENABLE); Hat jemand eine Idee? Danke!