初始化代码:
alt_u8 Spi_SDInit(void)
{
alt_u8 r1; //响应变量
alt_u8 time = 0; //超时变量
alt_u8 r7[4]; //响应变量
//发送CMD8检测接口条件,若r1返回0x01,r7返回0x000001aa,则表示检测成功
do{
r1 = Spi_SDSendCmd(8,0x000001aa,0x87); //发送CMD8命令
r7[0]= Spi_SDReadByte(); //读取响应0x00
//r7 <<= 8;
r7[1]= Spi_SDReadByte(); //读取响应0x00
//r7 <<= 8;
r7[2]= Spi_SDReadByte(); //读取响应0x01
//r7 <<= 8;
r7[3]= Spi_SDReadByte(); //读取响应0xaa
time++;
if(time > 254) return 1; //超时退出返回1
}while((r1 != 0x01) && (r7 != 0x000001aa)); //等待r1返回0x01,r7返回0x000001aa
time = 0;
//此处省略发送CMD58命令
//发送CMD55+ACMD41,收到0x00表示成功
do{
r1 = Spi_SDSendCmd(55,0,0xff); //发送CMD55命令
if(r1 == 0x01) r1 = Spi_SDSendCmd(41,0x40000000,0xff); //发送ACMD41命令
time++;
if(time > 254) return 1; //超时退出返回1
}while(r1 != 0x00); //等待返回0x00
//此处省略发送CMD58命令
return 0; //初始化成功,则返回0
}
调试发现r1=1,是对的,可是r7是个很大的数。
|
@cooldog123pp :好像不是吧
是专门做电机驱动的那家么