軟件SPI和硬件SPI讀寫SD卡,TF卡測試程序
SD卡模塊和SD卡
軟件SPI讀寫SD卡程序
測試平臺:STC89C516和STC12C5A60S2
內存卡大小:128MB和2GB
晶振:均為12MHz
硬件SPI讀寫SD卡程序
測試平臺:STC12C5A60S2
內存卡大小:128MB和2GB
晶振:12MHz
(89C52沒有硬件SPI)
為了盡可能的不給后來者留坑,這些代碼我在發出來之前反復測試過,確保無誤,
還有就是關于SD卡程序的讀寫我在程序中寫的很清楚,這里不再贅述
單片機源程序如下:
- #include "public.h"
- #include "SD.h"
- //測試平臺:STC89C516和STC12C5A60S2
- //內存卡大小:128MB和2GB
- //晶振:均為12MHz
- 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))
-
- MCU_read_SD_512Byte(960,512);//MCU向SD卡讀取數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
- P0=BUFFER_DATA[0];
-
- while(1);
- }
- /*
- unsigned int i;
-
- SD_init();//SD卡初始化
-
- {
- 在使用SD卡模塊前,先初始化SD卡
- }
-
- for(i=0;i<512;++i) BUFFER_DATA[i]=0x7F;
- MCU_write_SD_512Byte(960,512);//MCU向SD卡寫入數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
-
- {
- 將數據寫入到SD卡:
- 先將數據寫入到數據緩沖數組BUFFER_DATA中(這里的數據我全部都寫0x7F),
- 然后運行MCU_write_SD_512Byte(960,512);
- 960為SD卡的扇區,表示將數據寫入到SD卡的960扇區,512為一次性寫入的數據大小,為512字節,建議填512字節,
- 因為1個扇區的大小為512字節
- }
-
- MCU_read_SD_512Byte(960,512);//MCU向SD卡讀取數據,一次最多512字節(扇區,數據長度(最大為512,建議填512))
- P0=BUFFER_DATA[0];
-
- {
- 從SD卡讀取數據:
- 先運行MCU_read_SD_512Byte(960,512);
- 這里的960為你要讀的SD扇區,512位一次性讀取的數據大小,為512字節,建議填512字節,因為1個扇區的大小為512字節
- 完成后數據存放在數據緩沖數組BUFFER_DATA中
-
- 因為沒有現象的話不好判斷SD卡讀寫是否成功,所以把P0BUFFER_DATA[0]賦給P0,P0接LED燈,就可以看見現象了
- }
- {
- 注意:將程序下載到開發板后可能會出現P0口顯示的數據和SD卡寫入數據不一致的情況
- 這時,
- 要將開發板和SD卡模塊斷電
- 要將開發板和SD卡模塊斷電
- 要將開發板和SD卡模塊斷電
- 不是復位
- 不是復位
- 不是復位
- 將開發板斷電后再上電,就可以看見現象了
- 如果還不成功,
- 檢查連線是否正確
- 檢查連線是否正確
- 檢查連線是否正確
- 或嘗試插拔SD卡
-
- SD卡讀寫成功后,可以修改扇區和SD的寫入數據多實驗幾次,確保萬無一失
- }
- */
復制代碼
所有資料51hei提供下載:
單片機讀寫SD卡.rar
(78.27 KB, 下載次數: 464)
2020-4-26 23:23 上傳
點擊文件名下載附件
沒有積分的可從這里下載
鏈接: 游客,本帖隱藏的內容需要積分高于 1 才可瀏覽,您當前積分為 0
|