I'm trying to interface a Swissbit 512MB (S-450u Series) SD card (datasheet here) with an ARM microcontroller through the card's SPI interface. The datasheet for this card says it's fully compliant with SD Spec v3. When I send CMD0, I get the expected response. But when I send CMD8 with check pattern=0x1AA and CRC=0x87, I get the response 0x21F, even though the card is supposed to echo the check pattern.
This has been discussed here, but the accepted response doesn't make any sense, and doesn't work for me either. I haven't been able to find anything in the SD Card Simplified Spec to describe malformed check pattern responses. If I received the Illegal Command flag, I would know that this is a version 1 card, but I don't receive that flag, just the malformed check pattern. The card works just fine when I plug it into my PC and format as FAT. I've tried with a Samsung card and I get the same result.
I also have tried sending SCK pulses before each transmission, while CS is high, as suggested by many people.
What causes malformed check pattern responses in SD cards?
EDIT: The SD card and the microcontroller were previously being powered from 2 different supplies. Now I've switched to powering them off of the same supply, and they draw about 30mA at 3V. This hasn't changed the SD card's response to CMD8. However, I have noticed that if I send CMD55 after CMD8, the SD card responds with the R1 response of 0x03 (idle bit and erase reset bit on). I'm not sure if this is a useful hint though, or just barking up the wrong tree.