LPCXpresso LPC1114 SSP多扇區讀寫(xiě)SD卡
在FatFs文件系統時(shí),發(fā)現為了提高SD卡的讀寫(xiě)速度,需要一個(gè)多扇區讀寫(xiě)的函數。當然很多人都會(huì )第一反應為,用循環(huán)調用單扇區讀寫(xiě)函數不就能實(shí)現嗎?如:
uint8 i;
for (i=0; i < count; i++)
{
MMCWriteSingleBlock(); // 單扇區寫(xiě)
MMCReadSingleBolck(); // 單扇區讀
}
事實(shí)上的確可以這樣實(shí)現,但是,如果是按照這樣的方式實(shí)現就沒(méi)有多扇區讀寫(xiě)的優(yōu)勢了。速度是沒(méi)有任何提升的。于是我們查閱SD卡技術(shù)可以得到如下時(shí)序:
先看看SD卡的單扇區與多扇區的讀寫(xiě)時(shí)序,可以發(fā)現,其時(shí)序基本一直。只是多扇區讀函數在讀取完成后需要發(fā)送一個(gè)停止命令。實(shí)現函數如下:
查看時(shí)序,再對于一下函數非常容易理解,本人就不再細說(shuō)了。其實(shí)SD卡寫(xiě)的函數也是一樣的,先看看如下時(shí)序:
同樣我們發(fā)現單扇區寫(xiě)和多扇區寫(xiě)的時(shí)序基本一致,只是多扇區寫(xiě)函數多了一個(gè)“send stop transmission token ”。即停止令牌,函數如下:
對比以上時(shí)序和函數非常容易理解,不在敘述。
經(jīng)過(guò)以上時(shí)序和函數的實(shí)現我們知道,多扇區的讀寫(xiě)函數比用單扇區讀寫(xiě)函數循環(huán)執行效率高很多,當然函數里邊的一些代碼進(jìn)行適當的修改將會(huì )進(jìn)一步提高執行效率,在此就不多說(shuō),有編程經(jīng)驗的網(wǎng)友都知道怎么更改。
再看看主函數的實(shí)現:
實(shí)驗結果如下:


評論