我已经看过堆栈溢出问题使用SPI接口初始化microSD卡并没有看到任何与我的问题匹配的答案(也就是我尚未尝试过的事情).
我有类似的问题,我试图通过微控制器的SPI接口(特别是HC908)访问SD卡.我已经尝试遵循物理层简化规范v2.00中的流程图,它似乎在Transcend 1 GB和2 GB以及AE&C 1 GB卡上正确初始化.但是我在我的相机上使用的旧卡片藏有其他三张随机卡片时遇到了问题.
我的代码都是HC908汇编程序.我确定了SPI时钟线,并且在初始化期间它运行大约350 kHz(HC908在我的低MCU时钟速度下提供的唯一速度倍增器,在100 - 400 kHz窗口内).
以下是未完成初始化例程的三张卡的结果(所有这些都是连续完成而不更改任何代码或时序参数):
Canon 16Meg card (labeled as SD):
Set card select high
Send 80 SPI clock cycles (done by writing 0xFF 10 times)
Set card select low
Send CMD0 [0x400000000095] and Loop up to 8 times waiting for high bit on response to go low
R1 = 0x01 (indicates idle)
Send CMD8 [0x48000001AA87] and Loop up to 8 times waiting for high bit on response …Run Code Online (Sandbox Code Playgroud)