久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3870|回復: 8
打印 上一主題 下一主題
收起左側

單片機驅動SD卡初始化失敗,一直卡在CMD0寫入失敗 求解

[復制鏈接]
回帖獎勵 25 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次(中獎概率 50%)
跳轉到指定樓層
樓主
ID:743654 發表于 2020-11-3 17:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 cheney03 于 2020-11-4 11:11 編輯

最近在調試SD卡時,初始化時一直卡在CMD0寫入失敗  。SD卡從128M/256M/512/1G/2G都試過,SD卡讀寫模塊也試了幾個,不知道什么原因。還有一個問題,在初始化時速度不能高于400KHz,這個速度怎么計算?下面是我的延時函數和復位初始化過程。

單片機型號:STC89C52RC,晶振:11.0592MHz

void delay(unsigned int time)  //time取1000
{
while(time--);
}



******************************************************************
- 功能描述:復位SD卡,用到CMD0,使用SD卡切換到SPI模式
- 隸屬模塊:SD/SDHC模塊
- 函數屬性:內部
- 參數說明:SD卡的命令是6個字節,pcmd是指向命令字節序列的指針
- 返回說明:調用成功,返回0x00,否則返回INIT_CMD0_ERROR (sdx.h中有定義)
******************************************************************/

unsigned char SD_Reset()
{
unsigned char time,temp,i;
unsigned char pcmd[] = {0x40,0x00,0x00,0x00,0x00,0x95};

is_init=1; //is_init置為1,讓SPI速度慢下來

SD_CS=1;
for(i=0;i<0x0f;i++) //初始時,首先要發送最少74個時鐘信號,這是必須的!!!
{
  SD_spi_write(0xff); //120個時鐘
}

SD_CS=0;
time=0;
do
{
  temp=SD_Write_Cmd(pcmd);//寫入CMD0
  time++;
  if(time==TRY_TIME)
  {
   return(INIT_CMD0_ERROR);//CMD0寫入失敗   
  }
}while(temp!=0x01);

SD_CS=1;
SD_spi_write(0xff); //按照SD卡的操作時序在這里補8個時鐘
Beep=0;
return 0;//返回0,說明復位操作成功
}
/******************************************************************
- 功能描述:初始化SD卡,使用CMD1
- 隸屬模塊:SD/SDHC模塊
- 函數屬性:內部
- 參數說明:無
- 返回說明:調用成功,返回0x00,否則返回INIT_CMD1_ERROR (sd.h中有定義)
******************************************************************/

unsigned char SD_Init()        
{  
unsigned char time,temp;
unsigned char pcmd[] = {0x41,0x40,0x00,0x00,0x00,0xff};//第2個字節為0x40  HCS置位,說明主機支持高容量卡

SD_CS=0;

time=0;
do
{
  temp=SD_Write_Cmd(pcmd);
  time++;
  if(time==TRY_TIME)
  {
    return(INIT_CMD1_ERROR);//CMD1寫入失敗
  }
}while(temp!=0);
                    
is_init=0; //初始化完畢,將is_init設置為0,為了提高以后的數據傳輸速度

SD_CS=1;  //關閉SD卡的片選

SD_spi_write(0xff); //按照SD卡的操作時序在這里補8個時鐘

Beep=0;
return(0); //返回0,說明初始化操作成功
}



SD卡讀寫 程序.docx

16.9 KB, 下載次數: 13

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:743654 發表于 2020-11-4 16:56 | 只看該作者
沒人回答么,自己頂以下
回復

使用道具 舉報

板凳
ID:743654 發表于 2020-11-5 13:45 | 只看該作者
寫入CMD0,返回值是FF,收不到回應0x01,是什么原因呢,哪位大神有成功驅動過SD卡的幫忙指導一下
回復

使用道具 舉報

地板
ID:487909 發表于 2021-5-10 11:40 | 只看該作者
sd卡cmd0寫入失敗的問題解決了嗎
回復

使用道具 舉報

5#
ID:1039438 發表于 2023-3-2 14:31 | 只看該作者
cheney03 發表于 2020-11-5 13:45
寫入CMD0,返回值是FF,收不到回應0x01,是什么原因呢,哪位大神有成功驅動過SD卡的幫忙指導一下

我的回復也是0xff,更換硬件線路和mcu頻率都無效果,
回復

使用道具 舉報

6#
ID:1039438 發表于 2023-3-2 14:33 | 只看該作者
unsigned char pcmd[] = {0x40,0x00,0x00,0x00,0x00,0x95};
我在別的程序中看到CMD0不是這樣的,
MCU_write_SD_command(0x00,0x00000000,0x95);//發送命令0將MMC置于SPI模式
回復

使用道具 舉報

7#
ID:139866 發表于 2023-3-2 14:52 | 只看該作者
直接上示波器或者邏輯分析儀抓波形,比你在這問快得多
回復

使用道具 舉報

8#
ID:79094 發表于 2024-5-5 21:41 | 只看該作者
我 cmd0 可以過  但是 cmd1  sd卡是過不了的   那是mmc卡 的代碼  剛找到原因
回復

使用道具 舉報

9#
ID:878800 發表于 2024-5-6 08:52 | 只看該作者
有沒有發現你的延時程序 int  time    整型數據  只有8位    256最大   哪來的1000 。想要1000的延時  只能做嵌套循環實現1000 。用C來寫延時程序不是很準。最好還是上指令集吧,算周期的時間是最準確的。實在不行,那就只能單獨編譯延時程序,模跑一下,看時間咯。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品小视频在线观看 | 久久久www成人免费精品张筱雨 | 国产精品自拍一区 | 国产在线一区二区三区 | 操人网站 | 在线观看日本高清二区 | 精品一二三区 | 欧美一区二区在线观看 | 国产sm主人调教女m视频 | 成人3d动漫一区二区三区91 | 国产精品黄色 | 亚洲天堂精品久久 | 国产高清久久久 | 欧美性生活视频 | 97精品超碰一区二区三区 | 91婷婷韩国欧美一区二区 | 日韩中文字幕免费在线观看 | 亚洲狠狠丁香婷婷综合久久久 | av影音资源 | 欧美无乱码久久久免费午夜一区 | 色综合一区二区三区 | 国产欧美精品区一区二区三区 | 欧美日韩久久精品 | 成人在线观看免费 | 国产一区精品 | 欧美v片| 日韩成人影院 | 亚洲网站在线观看 | 在线看日韩 | 玖玖国产 | 日本成人福利视频 | 人人鲁人人莫人人爱精品 | 九九视频在线观看 | 欧美中文字幕一区二区三区亚洲 | 99久久免费观看 | 精品在线一区 | www.国产精品 | 国产精品毛片一区二区三区 | 青青久草 | 亚洲精品一区二区在线观看 | 亚洲精品一区二区在线观看 |