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

標題: 單片機驅動SD卡初始化失敗,一直卡在CMD0寫入失敗 求解 [打印本頁]

作者: cheney03    時間: 2020-11-3 17:08
標題: 單片機驅動SD卡初始化失敗,一直卡在CMD0寫入失敗 求解
本帖最后由 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


作者: cheney03    時間: 2020-11-4 16:56
沒人回答么,自己頂以下
作者: cheney03    時間: 2020-11-5 13:45
寫入CMD0,返回值是FF,收不到回應0x01,是什么原因呢,哪位大神有成功驅動過SD卡的幫忙指導一下
作者: meijieboxi    時間: 2021-5-10 11:40
sd卡cmd0寫入失敗的問題解決了嗎
作者: 麗江春水    時間: 2023-3-2 14:31
cheney03 發表于 2020-11-5 13:45
寫入CMD0,返回值是FF,收不到回應0x01,是什么原因呢,哪位大神有成功驅動過SD卡的幫忙指導一下

我的回復也是0xff,更換硬件線路和mcu頻率都無效果,
作者: 麗江春水    時間: 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模式
作者: 天ノ憶    時間: 2023-3-2 14:52
直接上示波器或者邏輯分析儀抓波形,比你在這問快得多
作者: xiaoyao166ny    時間: 2024-5-5 21:41
我 cmd0 可以過  但是 cmd1  sd卡是過不了的   那是mmc卡 的代碼  剛找到原因
作者: 外號米蟲    時間: 2024-5-6 08:52
有沒有發現你的延時程序 int  time    整型數據  只有8位    256最大   哪來的1000 。想要1000的延時  只能做嵌套循環實現1000 。用C來寫延時程序不是很準。最好還是上指令集吧,算周期的時間是最準確的。實在不行,那就只能單獨編譯延時程序,模跑一下,看時間咯。





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品伦理一区 | 国产黄a三级三级三级看三级男男 | 制中文字幕音影 | 三级黄色片网站 | 视频一二区 | 国产黄a三级三级看三级 | 久久精品日韩 | 色婷婷基地 | 99视频网站| 中文字幕日韩高清 | 无毒不卡 | 天天爽夜夜爽夜夜爽 | 中文字幕一级片 | 日韩午夜激情 | 国产视频黄 | 午夜tv| 国产在线不卡视频 | 天天搞天天搞 | 成年人免费看片 | 中日韩毛片 | 91久久综合亚洲鲁鲁五月天 | 久草免费在线视频 | 最新国产在线视频 | 久久精品一 | 日韩视频免费看 | 日韩精品一区在线 | 九九视频免费观看 | 欧美丰满少妇 | 国产精品国产三级国产 | 久久99精品久久久久久水蜜桃 | 日韩有码在线视频 | 亚洲人网站 | 国产第一福利 | 精品在线一区二区 | 日韩a视频 | 欧美一二 | 欧美成人精品一区二区三区在线看 | 国产一级片免费看 | 久久人人视频 | 黄色片毛片 | 中文天堂在线观看 |