最近在用FPGA写SD卡SPI控制器,但是搞不出来,不知道是不是因为8个延迟时钟的问题,SD2.0协议里说的是发送命令后和接收响应后需要8个时钟,但是我看见有的程序和网文上却是在发送命令前也加了8个时钟,比如下面的程序:
// write a command to SD-CARD
// return: the second byte of response register of SD-CARD
u8 SD_CARD_Write_CMD(u8 *CMD)
{
u8 temp,retry;
u8 i;
sd_nCS=1; // set chipselect (disable SD-CARD)
SD_CARD_Write_Byte(0xFF); // send 8 clock impulse
sd_nCS=0; // clear chipselect (enable SD-CARD)
// write 6 bytes command to SD-CARD
for(i=0;i<6;i++) SD_CARD_Write_Byte(*CMD++);
// get 16 bits response
SD_CARD_Read_Byte(); // read the first byte, ignore it.
retry=0;
do
{ // only last 8 bits is valid
temp=SD_CARD_Read_Byte();
retry++;
}
while((temp==0xff) && (retry<100));
return temp;
}
把我弄得一头雾水,请大家帮帮我,谢谢