I diesigned a data recorder using compact flash. I did the recordings to the CF disk using UDMA mode. The low level control was implemented in VHDL.
I now have a problem that newer cards (SANDISK EXTREME IV 4GB 45MB/s) dont work as older cards (SANDISK ULTRA 4GB 30MB/s). When I try to transfer multiple sectors using UDMA, the CF card stops the transfer after every sector. I look at the waveforms for my working CF cards and there I see the cards transfer multiple sectors without releasing DMARQ, on the newer cards however, the card first releases DMARDY (as it would when pausing a transfer) and then after about 150ns, releasing DMAQRQ (according to the CF spec this means the device terminated the transfer). Older cards don’t terminate the transfer, just pauses by negating DDMARDY. Older cards do not terminate the UDMA burst but will pause the transfer by negating DDMARDY after each sector transferred. Also after the card has terminated the write, I read the Error and Status registers on the card and they dont indicate any kind of error.
As I know in UDMA definition there is not such a termination during pause. My question is why are the newer cards terminating the UDMA burst? Does anyone have any idea of what might be going wrong?
Any ideas would be greatly appreciated. Thank you so much for your help.