2015-10-24 01:52 PM
Hi Folks, am running The SD interface, along with FatFS on an F4 Discovery board plugged into a Discovery-BB which has a uSD card slot. I am running DMA for Rx and TX data, 4 bits wide to the card. It all runs great. The only problem is that I DID provide error callbacks for the DMA Tx and Rx error ISR's. The Rx is fine, but the Tx DMA stream generates a single error interrupt on every block (512 bytes) transfer to the card. The error is Type 2 which I believe translates to a FIFO error.
I am NOT seeing any data loss, the transfers complete with no problem at all. Am using the latest CubeMX to generate the startup code. Also, using the USB port for console I/O running printf() to see status etc. Anyone else seeing anything like this? My interim fix is just to ignore the errors and all works fine. However the engineer in me doesn't like leaving something like this in a system without at least understanding what's going on and whether it is truly benign.2015-10-30 03:53 AM
Hi bauch.aaron.001,
You have described a normal scenario, as SDIO requested next data before the DMA being able to fill its FIFO to perform the new burst. SDIO FIFO (32words) is larger than DMA ones (4words). This is a warning of possible underrun on peripheral side, but if there is no error on peripheral side (no SDIO txunderrun) no data are lost. As you said, you have only to ignore the error. -shahrzad-2015-11-02 08:32 AM