Posted on May 17, 2011 at 13:57STOne-32Call SDIO_ITConfig(T_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_DATAEND | SDIO_IT_TXUNDERR | SDIO_IT_STBITERR, ENABLE);create a race condition what is trigger interrupt, if SDIO_IT_DATAEND hit firstall data already...
Posted on May 17, 2011 at 13:57STOne-32The reason DMA was loop indefinetly, because trasmission was canceled inSD_ProcessIRQSrc, due StopCondition flag ( set to 1 in SD_WriteMultiBlock)So even if timeout has been set we still cancel transmission on ...
Posted on May 17, 2011 at 13:57Fong Just set datatimeout value proportional blocks number you writingHere what I didSDIO_DataInitStructure.SDIO_DataTimeOut = NumberOfBlocks * SD_DATATIMEOUT; Thus DMA will able finish transfering data beforetimeout. ...