使用SPI讀取SD CARD的範例程式

作者 allenghang 於 2018年11月21日 11:39:54
各位好,我是MCU剛入門的新手,使用PIC24FJ256GA705的SPI,配合MPLAB X IDE v5.10的模擬環境。

最近在學習SPI的SD CARD功能,其中寫入的部分我已經學會,但讀取的部分卻一直失敗。
其中,寫入SD CARD的程式碼如下
uint8_t TargetData[] = "Target: ";
// Register the GetTimestamp function as the timestamp source for the library.
FILEIO_RegisterTimestampGet (GetTimestamp);
// switch for SD Card
FILEIO_DriveMount('A', &gSdDrive, &mikroBusA);
FILEIO_Open (&file, "WRITE.TXT", FILEIO_OPEN_WRITE | FILEIO_OPEN_APPEND | FILEIO_OPEN_CREATE);
FILEIO_Write (TargetData, 1, sizeof(TargetData)-1, &file);
FILEIO_Close (&file);
可以產生一個WRITE.TXT的檔案,然後內部寫著"Target: "

另外,關於SD CARD讀取的功能,我的目標是讀取Set_V_A.TXT內的數值(例如:"100"),然後存入MCU的變數unsigned int,並給程式運算使用。
關於SD CARD的sample code,我找到的都是寫入SD CARD的功能,找不到關於讀取的sample code,因此我嘗試將寫入SD CARD的的程式修改為讀取,我的讀取程式碼如下
uint8_t SD_read_buffer[10];
// Register the GetTimestamp function as the timestamp source for the library.
FILEIO_RegisterTimestampGet (GetTimestamp);
// switch for SD Card
FILEIO_DriveMount('A', &gSdDrive, &mikroBusA);
FILEIO_Open (&file, "Set_V_A.TXT", FILEIO_OPEN_CREATE | FILEIO_OPEN_TRUNCATE | FILEIO_OPEN_READ);
FILEIO_Read (SD_read_buffer, 1, sizeof(SD_read_buffer)-1, &file);
FILEIO_Close(&file);
在讀取的過程中,無論我在Set_V_A.TXT內的數值怎麼改(例如:"100"改為"50"),最後得到的unsigned int都是3860的數值,因此想請教是否有其他可以讀取SD CARD的sample code,可以讓我參考與修改自己的程式,感激不盡。

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=2&topic_id=22464&post_id=78884