I'm using a custom board featuring the LM4F120H5QR - A3 (as the Tiva devices are not ready yet) on a custom board featuring and SD card in a data logging application. The board also uses the hibernate module to go in and out of hibernation when the user presses a button. I was using the FatFS code from the LM4F232 board example and it worked correctly but was extremely slow. On a closer inspection this was due to the large time delay between the actual byte transactions on the SPI bus. The solution to this was to use uDMA for the block transfers to and from the card. I added this functionality to mmc.c (Attached) and it works well (significant speed up) when I program the board the first time. However, if I hibernate and wake back up the board gets into an unknown state. I blink an LED in my uDMA error handler ISR so I know a DMA error is occuring but I'm now sure how and since I'm coming out of hibernate I can't attach the debugger. Any help would be greatly appreciated, once this is correclty working it would also be beneficial for others.
↧