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.
调试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;
请教一下,是否是上面的写命令函数和读返回值函数使用的有问题呢?
特来请教
期待您的回复!
感谢您对TI产品的关注!为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上,将由资深的英文论坛工程师为您提供帮助。
e2e.ti.com/.../