kingston 512M TF卡初始化失败
各位大虾我现在用软件SPI初始化kingston 512M TF卡,发送CMD0失败。想请教以下问题:
1TF卡加了一个SD的适配器应该就和SD卡完全兼容了吧?
2用的程序是elefan大哥的程序:http://www.ouravr.com/bbs/bbs_content.jsp? bbs_sn=501454&bbs_page_no=1&sub_kind_id=1398&bbs_id=1000,试过了在SCK上升延前后使用不同时间的延时,都不行,请问是什么原因?
3在elefan的发送命令程序中:
unsigned char Write_Command_MMC(unsigned char *CMD)
//****************************************************************************
{
unsigned char tmp;
unsigned char retry=0;
unsigned char i;
//set MMC_Chip_Select to high (MMC/SD-Card disable)
MMC_Disable();
//send 8 Clock Impulse
Write_Byte_MMC(0xFF);
//set MMC_Chip_Select to low (MMC/SD-Card active)
MMC_Enable();
//send 6 Byte Command to MMC/SD-Card
for (i=0;i<0x06;i++)
{
Write_Byte_MMC(*CMD++);
}
//get 16 bit response//这里为何把所有的回应当作2字节来处理?
Read_Byte_MMC(); //read the first byte,ignore it.
do
{ //Only last 8 bit is used here.Read it out.
tmp = Read_Byte_MMC();
retry++;
}
while((tmp==0xff)&&(retry<100));
return(tmp);
}
程序中统一丢掉了返回值的第一个字节,如果是R1类型的1 BYTE大小的返回值的话,启不是会被丢掉?
请大虾门帮忙解释这三个问题,先谢谢拉 大虾们,救我一下吧,莫非真的要我换卡?万一是程序问题,我可心疼偶的MONEY啊 自己发贴,自己解决拉
在这里说一下找到的原因,因为ICCAVR的C编译器不支持,do{}while()语句,所以要把
elefan的代码中所有的此种语句改成while语句。如果不改的话就一直循环,并且不会判断跳
出循环的条件。
用ICCAVR的兄弟们也不少吧?没有人发现这个问题吗? 自己再顶,昨天晚上发现CMD0后面紧跟着发送CMD1时,还是会提示CMD0失败,后来终于自己解决拉,搞到了半夜,成夜猫子拉,呵呵 哈哈,太爽拉,可以操控SD卡拉
下面是我初始化SD卡后的打印信息:
Welcome to williams AVR world!
Initial SD card sucessful!
Product:
SD512
Total:
488MB hi williamwanglei
我现也用KINGSTON的1G SD CARD,也出现同一问题.可否详细请教一下?
谢谢! 使用很底速的CLOCK同步,初始化
然后提高CLOCK操作 Hi cctnt
我试过,不是初始化 CLOCK速度问题, 现在我的问题是初始化OK,
但是读BPB错误, 现猜想是读数据出错,我用是的硬SPI接口.其它的卡OK,就是KINGSTON的有问题.呵 回复【楼主位】williamwanglei
-----------------------------------------------------------------------
可否介绍一下解决办法?CMD0后面紧跟着发送CMD1时,还是会提示CMD0失败,怎么解决的呢?我的用SD卡就没问题,换成TF卡后,CMD0总是失败。 说半不说半! 我也想知道 williamwanglei 发表于 2007-7-28 08:12
自己再顶,昨天晚上发现CMD0后面紧跟着发送CMD1时,还是会提示CMD0失败,后来终于自己解决拉,搞到了半夜, ...
怎么解决的?请教 最后怎么搞定的没说?
页:
[1]