So anscheinend war es das - ich habe es jetzt halbwegs am laufen und kämpfe mit FATFS.
Ich habe die Funktion "NVIC_Configuration()" nachgetragen. Diese wird jetzt unmittelbar in "SD_Init()" aufgerufen.
Code:
static void NVIC_Configuration( void )
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig( NVIC_PriorityGroup_1 );
NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init( &NVIC_InitStructure );
}
Weiterhin wurde das Interupt "verlinkt" (stm32f10x_it.c):
Code:
void SDIO_IRQHandler(void)
{
/* Process All SDIO Interrupt Sources */
SD_ProcessIRQSrc();
}
Das ganze läuft jetzt ohne separates Interupt für den DMA - obwohl ich hier einige Beispiele gefunden habe die dies verwendeten....
Vlt. benötigt der F4 dies?! Demnächst werde ich das ganze auch auf einem F4 umsetzen ...
Die Clock-Divider (CLKDIV) für den SDIO konnte ich jetzt auf 1 reduizieren:
SDIO_TRANSFER_CLK_DIV = 1
Obwohl für die Frequenz gilt:
SDIO_CK frequency = SDIOCLK / [CLKDIV + 2].
läuft das ganze nicht mit CLKDIV = 0
Lesezeichen