EVAL-ADICUP 3029 with SD card

Hello,

We are working with the EVAL-ADICUP 3029 board and are trying to interface with an SD card found on a W6100 (MKR) Ethernet shield but having difficulty finding examples of SD card drivers for the ADuCM3029 microcontroller.

We found a resource located at,

http://elm-chan.org/docs/mmc/mmc_e.html

that talked about working with SD cards in embedded systems and provided some interfacing drivers but not the low level disk I/O.

It would be very helpful if some could point us in the right direction to find either a project that contains SD card code or drivers that could be integrated with this module.

Thanks,

Aleks

  • I was able find the resource I was looking for. It was found under the EV-COG-AD3029LZ Development Kit examples with the EV-GEAR-EXPANDER1Z board.

    https://wiki.analog.com/resources/eval/user-guides/ev-cog-ad3029lz/example_project/sd_card_example

    It goes over what is required to interface a SDHC memory card to the EV-COG-AD3029LZ through SPI Interface, which helps a lot since it included the necessary low level drivers. One issue is that it doesn't fully map to the EVAL-ADICUP 3029 board since the example was made for the IAR environment and I am using CrossCore.

    With that I am having difficulty getting it to initialize the SD card, a 32GB SanDisk microSDHC card. I am debugging the code while also observing the communications with an Oscilloscope and have noticed a discrepancy in the SPI received data.

    Data seems to be getting sent properly over SPI:      (Blue: SCLK,  Red: MOSI,  Green: MISO,  Yellow: CS)

    Above we see CMD0 (Reset) being sent to the SD card with the proper frame sizes and CRC value.

    Taking a closer look at the response from the SD card:

    Here we can see that the hex value sent to the MISO pin is 0x01 and if we look at the what the code is expecting from a CMD0 we see that it is expecting a 0x01:

    But when I look at the value of variable resp it shows as 0x00:

    This SPI communication is using DMA and I am not very familiar with how it should properly work but when I set the DMA setting to FALSE in the receive transaction, MISO pin data is actually saved in the resp variable.

    If anyone could help out in pointing out a setting or configuration that is not properly set that could be affecting the SPI DMA receive data that would be great.

    Thanks,

    Aleks