SDIO - 在SD card編輯檔案

材料準備
  • Ameba x 1
  • SD card or MicroSD card x 1
  • SD sniffer x 1 (optional)
範例說明
Ameba提供SD Host的功能,可以處理接上SD device的應用。讀寫SD Card是常見的應用,讓Ameba可以在SD Card上面讀取或紀錄資料。 資料的格式使用常見的FAT,所以當Ameba讀寫完SD Card之後,可以在電腦上經由讀卡機存取。 因為使用SD介面,所以可以直接接線到SD Card,不需要額外購買經由SPI介面的SD模組。底下是常見的SD Card的接腳: 1 這些接腳可以直接焊線接上Ameba: 2 注意:D1和D0分别对应WP和CD,需要分别接地,SD host控制器会根据这两根引脚判断SD card状态。 WP與CD狀態說明: Low: GND High: Vcc
WP CD 說明
High High 没有插入SD card
HIGH LOW 插入SD card,寫保護
LOW LOW 插入SD card,無寫保護
如果不想焊線在SD Card上面,市面上也有一些轉接板: SD Sniffer: https://www.sparkfun.com/products/11468 SD Breakout: https://www.sparkfun.com/products/12941 但不論焊線或是使用轉接板,不可以將連接的線拉的過長,線的長短會影響傳輸品質。範例裡使用的線材是20公分的杜邦線。 底下是SD轉接板的接線,其中多了WP與CD的接線,這兩根是卡槽的功能,所以沒有出現在SD Card上: 3 另外,MicroSD的接法也是類似,可以直接接線、使用轉接板、或是使用SD轉接卡。底下是一般MicroSD的pin腳: 4 接線之後,打開範例 “File” -> “Examples” -> “AmebaSdFatFs” -> “file_read_write” 這個範例裡,會新增文字檔案 “test.txt”,內容是 “hello world!”,編輯完成之後關閉檔案。然後再打開它,讀出內容,並且印在Serial Monitor上。 5 接著將SD Card放入讀卡機,在電腦上確認一下是否成功 6
程式碼說明
程式碼宣告了SdFatFs類別的物件來管理SD Card上面的Fat File System
SdFatFs fs;
接著呼叫begin()來對Fat FS初始化,包括對SD Host初始化,以及掛載檔案系統
fs.begin()
接著打開檔案,呼叫open()函數,參數裡填的路徑是絕對路徑,回傳值是SdFatFile類別的物件,用來操作這個被打開的檔案。
SdFatFile file = fs.open(absolute_filename);
SdFatFile這個類別繼承了Stream類別,所以可以直接使用println對檔案做寫入
file.println(write_content);
寫完之後關閉檔案
file.close()
讀的方式也是使用Stream的函數,所以我們再將檔案打開,做讀的動作:
file.read(buf, sizeof(buf));
將讀出來的資料印在Serial Monitor上面之後,最後將Fat File System關閉
fs.end();
請先確認已安裝QQ通訊軟體