在线时间0 小时
UID187544
注册时间2010-5-15
NXP金币0
该用户从未签到
新手上路

- 积分
- 0
- 最后登录
- 1970-1-1
|
发表于 2010-5-15 18:49:04
|
显示全部楼层
回复:SD卡调试一册通
楼主,我最近在调SD卡,用的是freescale的芯片MC9S08JM60,4G的金士顿SD卡,使用SPI模式,用的是DRM104SW,发送CMD0不成功,不返回0x01,而是0x00,SD初始化程序如下:
UINT8 SD_Init(void)
{
SPI_Init(); // SPI Initialization
SPI_SS=ENABLE;
SD_CLKDelay(10); // Send 80 clocks
SPI_SS=DISABLE;
gu8SD_Argument.lword=0;
SD_CLKDelay(8);
/* IDLE Command */
SPI_SS=ENABLE;
if(SD_SendCommand(SD_CMD0|0x40,SD_IDLE))
{
SPI_SS=DISABLE; //注,程序跑到这里了!!
return(1); // Command IDLE fail
}
SPI_SS=DISABLE;
(void)SPI_Receive_byte(); // Dummy SPI cycle
/* Initialize SD Command */
SPI_SS=ENABLE;
while(SD_SendCommand(SD_CMD1|0x40,SD_OK));
SPI_SS=DISABLE;
(void)SPI_Receive_byte(); // Dummy SPI cycle
/* Block Length */
SPI_SS=ENABLE;
gu8SD_Argument.lword=SD_BLOCK_SIZE;
if(SD_SendCommand(SD_CMD16|0x40,SD_OK))
{
SPI_SS=DISABLE;
return(1); // Command IDLE fail
}
SPI_SS=DISABLE;
SPI_High_rate();
SPI_Send_byte(0x00);
SPI_Send_byte(0x00);
//(void)SPI_Receive_byte(); // Dummy SPI cycle
return(0);
}
期待你的帮助。 |
|