SD卡的讀寫和FatFS檔案系統

2021-06-19 10:45:29 字數 1241 閱讀 9098

u8 spi_readwritebyte(u8 txdata); //spi匯流排讀寫乙個位元組

u8 sd_waitready(void); //等待sd卡就緒

u8 sd_sendcommand(u8 cmd, u32 arg, u8 crc); //sd卡傳送乙個命令

u8 sd_sendcommand_nodeassert(u8 cmd, u32 arg, u8 crc); //sd卡傳送乙個命令,不斷線

u8 sd_init(void); //sd卡初始化

u8 sd_receivedata(u8 *data, u16 len, u8 release); //sd卡讀資料

u8 sd_getcid(u8 *cid_data); //讀sd卡cid

u8 sd_getcsd(u8 *csd_data); //讀sd卡csd

u32 sd_getcapacity(void); //取sd卡容量

u8 sd_readsingleblock(u32 sector, u8 *buffer); //讀乙個sector

u8 sd_writesingleblock(u32 sector, const u8 *buffer); //寫乙個sector

u8 sd_readmultiblock(u32 sector, u8 *buffer, u8 count); //讀多個sector

u8 sd_writemultiblock(u32 sector, const u8 *data, u8 count); //寫多個sector

這是diskio.c中的一段**,在disk初始化中,我們呼叫了spi_sd_driver.c中的sd卡初始化函式。

dstatus disk_initialize (

byte drv /* physical drive nmuber (0..) */

)state = sd_init();

if(state == sta_nodisk)

else if(state != 0)

else

}

總之fatfs檔案系統具有很高的可移植性,經測試,在stm32的18mspi時鐘下,讀檔案的速度在每秒300k以上,寫檔案也有100多k的速度,應該說基本滿足了嵌入式工程應用中,對磁碟讀寫的速度要求。如果進一步優化sd卡讀寫**,速度應該還會有一定提高,同時還要注意的是flash自身讀寫速度沒有ram那麼快,通過更換sd卡發現讀寫速度和卡本身有直接的關係,所以應該盡量選擇速度較快的卡。

SD卡中讀寫檔案

在往sd卡中讀寫檔案時,遇到一些問題 當我們想要往sd卡中寫檔案時,檔名為 file targetfile new file environment getexternalstoragedirectory getcanonicalpath test.bin 一定要記得加 不然會出現錯誤.在看瘋狂安卓...

SD卡與fatfs檔案系統 2

sd卡fat分割槽內容 1 主引導記錄mbr和分割槽表 mbr和分割槽表佔512個位元組 占用第1個扇區的空間 分割槽表的內容 2 分割槽引導記錄 dbr 中記錄著檔案系統的起始位置 大小 每簇扇區數 fat表個數及大小等相關資訊。分割槽啟動扇區的內容是fdc或fdc擴充套件描述符 3 檔案分配表 ...

sd卡的讀寫

sd卡全稱為 secrue digital memory card,具有輕巧 可加密 傳輸速度高 適用於手持裝置使用等優點。二 匯流排介面 sd需要高速讀寫,同時也要使手持等嵌入式裝置能方便使用,特設有兩個訪問介面中 sd 模式介面和spi 介面。sd卡在上電初期,卡主控通過檢測引腳 dat3 來決...