主题中讨论的其他器件:C2000WARE
在调试 SD 卡驱动程序的过程中、尝试向 SD 卡发送 CMD0命令、然后读回返回值。 (使用 SPI 协议。 在正常情况下、如果发送了 CMD0且已接收到命令、则响应为 R1、R1应为多少、表示已进入 SPI 模式?)
运行我编写的程序后、我发现 R1的回读值为0x95FF。 R1的值错误。 R1只有1个字节、最高位始终为0。
我的想法是:
可能是我向寄存器发送命令的位置错误、或者当 SD 卡的响应被读回时、对象读回错误。
请专家帮助分析导致该问题的原因?
程序代码如下:
CS_LOW;
//针对加电延迟实现74个 CLK,实际上,下一个周期提供80 ***个脉冲
for (i=0;i<10;i++)
{
SPI_writeDataBlockingNonFIFO (***、0x00);//发送虚拟数据以接收状态。
}
//
//发送 CMD0命令。
//
for (i=0;i<6;i++)
SPI_writeDataBlockingNonFIFO (***、CMD0[i]);
//发送命令结束,增加16个时钟周期。
for (i=0;i<2;i++)
SPI_writeDataBlockingNonFIFO (***、0x00);
R1 = SPI_readDataBlockingNonFIFO (***);
//
//将芯片选择拉高。
//
CS_HIGH;
请告诉我、上述写入命令函数和读取返回值函数是否存在问题?
我使用的 SD 卡是 Kingston 的高速卡 C10、内存大小为64G。 文件系统为 FAT32。
另一个问题是、如何判断您使用的 SD 卡是否支持.SD3.0协议或其他协议?
根据信息、不同 SD 协议的命令略有不同。
根据这些信息、我的 SD 卡属于 SDXC。 一些消息来源说、它支持 SD3.0版本。
来询问
期待您的回复!