2014-02-08 07:36 AM
I made my own SDIO library and it is working fine , but I wanted to increase the transfer rate , so I read on the datasheet that the FIFO has 32 entry , while the KEIL defined only one FIFO register , so Are there really 32 FIFO places ? ...... or it is just 32 entryies to the same place? .
2014-02-08 11:00 AM
I don't know about FIFO but if you care about data transfer rate, then better plan to use DMA.
2014-02-08 11:26 AM
Peripheral registers and latches generally don't look/behave like memory cells. There is lots of complicated logic, and inaccessible structures behind the scenes.
The FIFO has 128 bytes (32 * 32-bits) stacked behind the one memory location. The depth can be read via another register.SDIO with DMA can achieve speeds of the order 13-15 MBps, writes are often significantly slower, by SDHC cards come in a wide range of performance levels which dramatically alter performance.Also don't do single block/sector reads and writes, in order to achieve any level of performance you want to read/write multiple blocks, 32 KB being a reasonable sweet-spot for a transfer length vs command setup latency.2014-02-08 12:28 PM
thx Clive and Ogden , ...... Yes i 'm currently working on the DMA to transfer data between the SDHC card and FSMC external SRAM , to do processing on the data ....... I just wanted to know if i can load the whole 32 SDIO FIFO entry rather than what im doing now which is load only the SDIO first FIFO address (defined in the manual) and wait for the RX/TX empty interrupt ? ...... because that way i would have reduced the transfer overhead .