I have a custom board with an ATSAMD51G19A processor that uses SDHC among other things. Code for this board was designed and tested with a SAM E54 Xplained Pro, though the custom board lacks any external clocks, and different pins are used for the interfaces (including a switch from SDHC1 to SDHC0).
I made a new Atmel START configuration for the custom board, then adjusted the current code to use the new files from START. The CPU runs off of DFLL48M (which uses OSCULP32K as a reference), and peripherials either use that 48MHz clock or a division of it, like 12MHz. I've been trying different divisions to see if that affects the issue. The E54 configuration used XOSC32K instead of OSCULP32K.
The code gets stuck when the START-generated code tries to send commands to the SD card. In _mci_send_cmd_execute() (file hpl/sdhc/hpl_sdhc.c) the EISTR status register is polled after the command is written, which will ultimately read 0x03, indicating a "CMD line conflict." The internet hasn't provided much help in understanding how that conflict could be fixed. I feel like this issue is related to the clock setup, or something missing from the clock setup, because other than going from SDHC1 to SDHC0 that's the only thing that I believe has changed.
Has anyone had a similar issue, or could point me towards things to check/consider?
Thanks in advance.