基於單片機的檔案系統實現

來源:互聯網
上載者:User

首先申明,我只實現了部分的功能,沒有提到的功能預設是沒有的。

實現了:獲得SD資訊,獲得總分區資訊,獲得某分區的資訊,讀取fat分區表功能。

具體有列出根目錄下所有檔案功能,尋找某檔案是否存在功能,顯示某檔案內容功能,刪除某檔案功能。

都僅限於在根目錄下操作,且要滿足8.3檔案名稱格式。

因老師有要求,不能列出所有檔案內容,現列出標頭檔,給各位一個參考。

/*************************************************************sd卡底層驅動**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**檔案名稱:sd.h*依賴性:無*處理器:C8051F410*編譯器:keil 3*單位:寧夏大學**曆史:*<作者><時間><版本><描述>*李居強2011/11/11V1.0建立原始文檔***************************************************************程式著作權聲明**本程式為自由程式,您可以自由用於個人或商業行為。可以公布*程式碼,但是不得收費,不得修改。**本程式的著作權歸寧夏大學 李居強所有。**按照慣例 自由軟體不會對因為使用該軟體而造成的任何損失承擔*任何責任。請謹慎考慮!**更多資訊請訪問我的部落格:http://blog.csdn.net/lineter**本程式最終解釋權歸李居強所有。************************************************************/#ifndef SD_H#define SD_H#include "..\include\complier.h"#include "..\include\typedefs.h"#include "..\include\spi.h"typedef enum//SD_ErrorList{ SD_RESET_OK       = 0x00,// SD卡重啟成功 SD_RESET_TIMEOUT= 0x01,// SD卡重啟逾時(可能無卡) SD_ACTIVE_TIMEOUT   = 0x02,// SD卡初始化失敗 SD_NO_SPI = 0x03,// SD卡不支援spi模式(大於2G) SD_WRITE_BLOCK_ERROR= 0x04,// 不能設定為寫塊模式SD_WRITE_BLOCK_TIMEOUT = 0x05,// 設定塊寫入逾時SD_WRITE_NOT_ACCEPT = 0x06,// 塊寫入未接受SD_WRITE_SAVE_TIMEOUT= 0x07,// 塊寫入儲存逾時 SD_WRITE_BLOCK_OK       = 0x08,// 塊寫入成功SD_READ_BLOCK_TIMEOUT  = 0x09,// 設定塊讀取逾時SD_READ_RESPOND_TIMEOUT= 0x0A,// 塊讀取響應逾時SD_READ_BLOCK_OK  = 0x0B,// 塊讀取成功 SD_GET_CID_TIMEOUT    = 0x0C,// 設定讀取CID逾時 SD_CID_NOT_RESPOND    = 0x0D,// 讀取CID未響應 SD_GET_CID_OK      = 0x0E,// 讀取CID成功 SD_GET_CSD_TIMEOUT    = 0x0F,// 設定讀取CSD逾時 SD_CSD_NOT_RESPOND    = 0x10,// 讀取CSD未響應 SD_GET_CSD_OK      = 0x11,// 讀取CSD成功 SD_OTHER_ERROR      = 0xFE, SD_TIMEOUT_ERROR    = 0xFF}SD_ErrorList;typedef enum// CommandList{SD_CAMMAND= 0x40,// SD卡命令標示 SD_RESET                = 0x00,// SD卡重啟:0 SD_RECOGNITION          = 0x37,// SD卡識別:55 SD_ACTIVE          = 0x01,// SD卡啟用:1 SD_WRITE_BLOCK          = 0x18,// SD卡寫資料區塊:24 SD_READ_BLOCK          = 0x11,// SD卡讀資料區塊:17 SD_GET_CID              = 0x0A,// 獲得SD卡CID:10 SD_GET_CSD              = 0x09, // 獲得SD卡CSD:9 }CommandList;byte sd_write_command(byte Command, dword date, byte CRC);SD_ErrorList sd_reset(void);SD_ErrorList sd_init(void);SD_ErrorList sd_write_sector(byte *buffer, dword address);SD_ErrorList sd_read_sector(byte *buffer, dword address);word sd_get_capaity(void);#endif

一定要注意,spi模式下SD卡最大支援2G的卡,以上的用不了的,我在這上面可浪費了大半天時間。一般只要程式無誤,很快就可以調通的,讀寫扇區功能是很好實現的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.