I am working on FRDM-K64F and have interfaced an IO device (wifi module) over SDIO. I have configured SDIO to use ADMA2.
Below is the major flow of my program:
- Write 1000 Bytes of data (success).
- Read back 1000 Bytes of data (success) (Note: this is the first time I am reading large chunk of data since the start of program. So far data lines have been used only for writing large chunk of data).
- Read 4 bytes of data (this fails because Transaction complete flag never set)
- Write 1000 Bytes of data (fails with Data CRC error) (Interrupt status 0x200010).
I have probed the hardware lines in the failure case of 1000 byte write and below is my observation:
- Clock: on.
- Data 0-3: no activiy.
- CMD line: Activity detected.
I have tried to do a data line reset using the SDIO_reset() api from the SDHC driver before I failure case write but I see no effect.
Please help me understand why is there no activity on the data line and what is causing Data CRC error given that the first chunk of data is successfully transmitted with the same mechanism?