This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMDSCNCD28388D: C2000

Part Number: TMDSCNCD28388D

调试SD卡的驱动程序过程中,尝试将CMD0的命令发送到SD卡中,然后读回返回值。(用的是SPI协议,正常情况下,如果发送CMD0,并且已经接受到了命令,那么reponse是R1,R1应该是多少的情况下,说明,已经进入SPI模式呢?)

我这边,写的程序,运行后,发现读回的R1值为0x95FF。这个R1的值是不对的。R1只有1个字节,而且,最高位始终为0。

我思考的是:

可能是我的发送命令到寄存器的位置不对,或者是读回SD卡的response的时候,读回的对象不对。

请专家帮忙分析一下,是什么原因导致的呢?

程序代码如下:

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(***);

//
// Pull chip select high.
//
CS_HIGH;

请教一下,是否是上面的写命令函数和读返回值函数使用的有问题呢?

特来请教

期待您的回复!