亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機軟件SPI和硬件SPI讀寫SD卡,TF卡測試程序 [打印本頁]

作者: pengxxx    時間: 2020-4-26 23:24
標題: 單片機軟件SPI和硬件SPI讀寫SD卡,TF卡測試程序
軟件SPI和硬件SPI讀寫SD卡,TF卡測試程序
SD卡模塊和SD卡



軟件SPI讀寫SD卡程序
測試平臺:STC89C516和STC12C5A60S2
內存卡大小:128MB和2GB
晶振:均為12MHz

硬件SPI讀寫SD卡程序
測試平臺:STC12C5A60S2
內存卡大小:128MB和2GB
晶振:12MHz
(89C52沒有硬件SPI)


為了盡可能的不給后來者留坑,這些代碼我在發出來之前反復測試過,確保無誤,
還有就是關于SD卡程序的讀寫我在程序中寫的很清楚,這里不再贅述

單片機源程序如下:
  1. #include "public.h"
  2. #include "SD.h"

  3. //測試平臺:STC89C516和STC12C5A60S2
  4. //內存卡大小:128MB和2GB
  5. //晶振:均為12MHz

  6. void main()
  7. {
  8.         unsigned int i;

  9.         SD_init();//SD卡初始化
  10.        
  11.         for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;
  12.         MCU_write_SD_512Byte(960,512);//MCU向SD卡寫入數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
  13.        
  14.         MCU_read_SD_512Byte(960,512);//MCU向SD卡讀取數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
  15.         P0=BUFFER_DATA[0];
  16.        
  17.         while(1);
  18. }

  19. /*
  20.         unsigned int i;
  21.        
  22.         SD_init();//SD卡初始化
  23.        
  24.         {
  25.                 在使用SD卡模塊前,先初始化SD卡
  26.         }
  27.        
  28.         for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;
  29.         MCU_write_SD_512Byte(960,512);//MCU向SD卡寫入數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
  30.        
  31.         {
  32.                 將數據寫入到SD卡:
  33.                 先將數據寫入到數據緩沖數組BUFFER_DATA中(這里的數據我全部都寫0x7F),
  34.                 然后運行MCU_write_SD_512Byte(960,512);
  35.                 960為SD卡的扇區,表示將數據寫入到SD卡的960扇區,512為一次性寫入的數據大小,為512字節,建議填512字節,
  36.                 因為1個扇區的大小為512字節
  37.         }
  38.        
  39.         MCU_read_SD_512Byte(960,512);//MCU向SD卡讀取數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
  40.         P0=BUFFER_DATA[0];
  41.        
  42.         {
  43.                 從SD卡讀取數據:
  44.                 先運行MCU_read_SD_512Byte(960,512);
  45.                 這里的960為你要讀的SD扇區,512位一次性讀取的數據大小,為512字節,建議填512字節,因為1個扇區的大小為512字節
  46.                 完成后數據存放在數據緩沖數組BUFFER_DATA中
  47.                
  48.                 因為沒有現象的話不好判斷SD卡讀寫是否成功,所以把P0BUFFER_DATA[0]賦給P0,P0接LED燈,就可以看見現象了
  49.         }

  50.         {
  51.                 注意:將程序下載到開發板后可能會出現P0口顯示的數據和SD卡寫入數據不一致的情況
  52.                 這時,
  53.                         要將開發板和SD卡模塊斷電
  54.                         要將開發板和SD卡模塊斷電
  55.                         要將開發板和SD卡模塊斷電
  56.                         不是復位
  57.                         不是復位
  58.                         不是復位
  59.                 將開發板斷電后再上電,就可以看見現象了
  60.                 如果還不成功,
  61.                         檢查連線是否正確
  62.                         檢查連線是否正確
  63.                         檢查連線是否正確
  64.                 或嘗試插拔SD卡
  65.                
  66.                 SD卡讀寫成功后,可以修改扇區和SD的寫入數據多實驗幾次,確保萬無一失
  67.         }
  68. */
復制代碼

所有資料51hei提供下載:
單片機讀寫SD卡.rar (78.27 KB, 下載次數: 464)

沒有積分的可從這里下載
鏈接:



作者: IdeaMing    時間: 2020-4-27 08:57
多謝分享,這些都是對新手最大的幫助。
作者: swj88ii    時間: 2020-5-4 11:02
標記一個,有時間再來詳細拜讀。謝謝樓主分享
作者: yechuan220    時間: 2020-10-14 12:21
多謝分享,這些都是對新手很好的。。贊
作者: 維修廝    時間: 2020-10-25 14:11
感謝分享,正在研究SD卡
作者: 分立元件    時間: 2020-11-14 11:40
非常感謝,終于找到一個可以用的程序了
作者: biren    時間: 2020-11-17 21:55
正用上,參考了。謝謝。
作者: SJ-123    時間: 2021-2-22 22:49
樓主: "SD.h"頭文件可以下載還是需要自己制作呢?
作者: pengxxx    時間: 2021-2-23 09:51
SJ-123 發表于 2021-2-22 22:49
樓主: "SD.h"頭文件可以下載還是需要自己制作呢?

單片機讀寫SD卡.rar

78.27 KB, 下載次數: 16, 下載積分: 黑幣 -5


作者: suqianfu    時間: 2021-6-22 13:10
感謝大佬的無私分享。感謝!愛你喔
作者: 13205495918    時間: 2021-9-5 10:17
我有一點 想問一下,比如這個扇區寫滿512,再寫下一個的時候時候自動進入下一個扇區還是覆蓋本扇區呢?
作者: saint_lee1986    時間: 2021-11-21 23:21
13205495918 發表于 2021-9-5 10:17
我有一點 想問一下,比如這個扇區寫滿512,再寫下一個的時候時候自動進入下一個扇區還是覆蓋本扇區呢?

你搞定TF卡操作了嗎?
作者: saint_lee1986    時間: 2021-11-22 00:09
        while(response)
        {
                SD_CS=1;
                SPI_write_Byte(0xFF);
                SD_CS=0;
                MCU_write_SD_command(0x01,0x00FFC000,0xFF);
                response=SD_response();
        }
我測試了新買的8G,32G內存卡,都卡在了這個地方,無法初始化,但是用之前的32g的,1g,2g的都正常,不知道是哪里問題,新的卡不支持SPI模式嗎?
作者: lsh04    時間: 2021-11-22 14:06
saint_lee1986 發表于 2021-11-22 00:09
while(response)
        {
                SD_CS=1;

時格式化的格式不一樣嗎?
作者: saint_lee1986    時間: 2021-11-24 07:21
lsh04 發表于 2021-11-22 14:06
時格式化的格式不一樣嗎?

還有個問題請教你一下,關于讀寫時,切換block問題,0x58,0x00,0x00,0x00,0x00,0xff,這是寫第一個block地址,如果要讀下一個,是要將地址改為:0x58,0x00,0x00,0x02,0x00,0xff?是這樣嗎
作者: CXGXGG    時間: 2021-11-24 15:45
太棒了!找了好久終于找到了!
作者: xiaoxiaoguai    時間: 2022-2-25 17:19
你好,感謝分享。你那個“檢測SD卡響應”的函數不怎么管用,改成如下好多了。
//檢測SD卡的響應————返回0xFF,沒檢測到;反之檢測到
u8 SD_response()
{
        u8 i;
        u8 response = 0xFF;

        for(i=0;i<9;++i)
        {
                response=SPI_read_Byte();
                if((response==0x00)||(response==0x01))
                        return response;
        }
        return response;
}
作者: 8800    時間: 2022-6-3 23:16
謝謝樓主,很有幫助
作者: 麗江春水    時間: 2023-2-28 10:20
我使用了stc32g12k128,修改了頭文件包涵和相應的管腳定義,用軟件模擬spi方式一次成功讀寫。用硬件spi方式反復試都不成功,不知是什么問題。
作者: 麗江春水    時間: 2023-2-28 10:40
使用了spi管腳選擇,試過各種頻率,都不行。讀出來都是0.
作者: 麗江春水    時間: 2023-2-28 11:08
有沒有人試過在程序中加一個清零語句?
void main()
{
        unsigned int i;

        SD_init();//SD卡初始化
        
        for(i=0;i<512;++i) BUFFER_DATA[i ]=0x7F;
        MCU_write_SD_512Byte(960,512);//MCU向SD卡寫入數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
                for(i=0;i<512;++i) BUFFER_DATA[i ]=0x00;//緩沖區數據清零

        MCU_read_SD_512Byte(960,512);//MCU向SD卡讀取數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
        P0=BUFFER_DATA[0];
        
        while(1);
}
我加了清零語句后發現我的讀語句沒起作用。用winhex打開tf卡看內存,960扇區是空白的,沒有被寫入內容,全是0

內存圖.png (103.79 KB, 下載次數: 128)

內存圖.png

作者: 河邊洗腳人    時間: 2023-6-3 11:53
感謝樓主分享!
今天試了用 硬件SPI移植到STC8F2K16S2上 ,試了128M和2G的內存卡,可以正常寫入,4G則失敗了


作者: liucan2020    時間: 2023-8-18 17:49
非常感謝,TF卡    正是我想學的
作者: men007    時間: 2023-8-22 08:58
非常感謝, 正是想學的
作者: rz12345    時間: 2023-8-31 18:21
標記一個,有時間再來詳細拜讀。謝謝樓主分享
作者: npn    時間: 2023-8-31 21:19
麗江春水 發表于 2023-2-28 10:20
我使用了stc32g12k128,修改了頭文件包涵和相應的管腳定義,用軟件模擬spi方式一次成功讀寫。用硬件spi方式 ...

具有硬件SPI功能的IO口是固定的,不同型號都可能不一樣。
有問題是寄存器配置有誤或中斷問題,使用邏輯分析儀檢查時序。
作者: KFLIUYUE    時間: 2023-9-20 20:08
感謝大佬的無私分享。感謝!愛你喔
作者: a399288395    時間: 2023-10-1 18:59
值得學習! Mark一下!
作者: jjy1039    時間: 2023-11-19 08:20
你就是我的神,多謝無私奉獻
作者: l630034911    時間: 2024-4-1 11:12
謝謝大神分享代碼
作者: gzgy    時間: 2024-4-7 09:48
謝謝分享!新手學習很需要這樣的帖子。
作者: xiaoyao166ny    時間: 2024-5-5 21:35
//SD卡初始化
u8 SD_init()
{
        u8 i;
        u8 response=0x01;
       
        SD_CS=1;
        for(i=0;i<10;++i) SPI_write_Byte(0xFF);
        SD_CS=0;
       
        MCU_write_SD_command(0x00,0x00000000,0x95);//發送命令0將MMC置于SPI模式

        response=SD_response();

        if(response!=0x01) return 0;
        while(response)
        {
                SD_CS=1;
                SPI_write_Byte(0xFF);
                SD_CS=0;
                MCU_write_SD_command(0x01,0x00FFC000,0xFF);
                response=SD_response();
        }
        SD_CS=1;
        SPI_write_Byte(0xFF);
        樓主 cmd1 是mmc 初始化  我用sd 卡cmd1 命令回應不正確  好坑啊  有sd 的沒 給新人學習下把 搞了一個多星期啊  我好想哭啊




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1