请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C129XNCZAD 我有一个带有 SDCard 的 tm4c129xnczad 微控制器、它通过 SPI3连接到它
1 GB 大小的 SDCard 有2个卷,每个卷大约500 MB
我想将数据写入每个可以访问第一个卷的文件中、但无法通过我所用的代码访问第二个卷、我所执行的步骤就是这样
首先,我开始安装这两卷
EIO_vmturnSDCardPowerON();
UTIL_vNonOSDelayMiliSeconds(200);/* this delay is gurantee the proper rest for the SD card */
/* Mount and register the FSHELL Card */
SDSPI_Params_init(&objstrsdspiParameters);
objsdspiHandle = SDSPI_open(Board_SDSPI0, DRIVE_NUM, &objstrsdspiParameters);
if(objsdspiHandle == STD_NULL)
{
FSHELL_vmLogError0(&objstrFSHELLModuleInfoType, "Can't mount SD card");
}
else
{
FSHELL_vmLogActivity1(&objstrFSHELLModuleInfoType, "SD card is mounted Drive:%u", DRIVE_NUM);
bSdMountState = STD_TRUE;
}
objsdspiHandle = SDSPI_open(1, 1, &objstrsdspiParameters);
if(objsdspiHandle == STD_NULL)
{
FSHELL_vmLogError0(&objstrFSHELLModuleInfoType, "Can't mount SD card");
}
else
{
FSHELL_vmLogActivity1(&objstrFSHELLModuleInfoType, "SD card is mounted Drive:%u", 1);
bSdMountState = STD_TRUE;
}
然后,我使用 了 studio.h (fopen、fclose、fwrite)函数中 的标准文件 API,这样
#include <stdio.h>
function (){
...
INT8S *ps8ProgFilePath = "fat:0:/ProgBlocks/Blocks.txt";
INT8S *ps8ProgFilePath_1 = "fat:1:/ProgBlocks/Blocks.txt";
FRESULT objFRESULT = FR_DISK_ERR;
FILE *pSourceFile;
...
objFRESULT = f_mkdir("/ProgBlocks");
if((objFRESULT == FR_OK)||(objFRESULT == FR_EXIST)) /* if folder is created or alredy existed */
{
pSourceFile = fopen((const INT8S*)ps8ProgFilePath, "a");
if(pSourceFile == STD_NULL)
{
SCFGM_vmLogError1(&objstrSCFGMModuleInfoType, "\"%s\" could not be created", (INT32U)ps8ProgFilePath);
}
else
{
u32NumBytesWritten = fwrite((INT8S*)ps8Data,1,(MAX_BLOCK_ID_STRING+(u32BlockLen*3)),pSourceFile);
if (u32NumBytesWritten != (MAX_BLOCK_ID_STRING+(u32BlockLen*3)))
{
SCFGM_vmLogError1(&objstrSCFGMModuleInfoType, "\"%s\"Err wrt Blk", (INT32U)ps8ProgFilePath);
}
}
if(fclose(pSourceFile) != 0)
{
SCFGM_vmLogError1(&objstrSCFGMModuleInfoType, "\"%s\" could not be Close", (INT32U)ps8ProgFilePath);
}
}
....
}
因此,我可以访问第一个卷“fat:0:”,但无法以相同的方式写入或甚至访问第二个卷“fat:1:”
那么、问题是、我甚至可以访问同一 SD 卡中的2个卷、如何访问?