主题中讨论的其他器件:HALCOGEN、 TMS570LC4357
大家好!!
我有一个关于这张卡的问题。 我想知道如何在 SD 卡上读取数据。 例如、我必须向 SD 卡传递8个字节、我想知道是否有指令写入这8个字节。
然后、我需要读取这些字节并通过 CAN 协议传输它们。
执行此操作是否有指令、SD 卡上是否有用于写入和读取数据的示例?
如果没有、我可以使用 EEPROM 存储器执行此操作、并从特定位置进行读取和写入吗?
非常感谢您的帮助、
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好!!
我有一个关于这张卡的问题。 我想知道如何在 SD 卡上读取数据。 例如、我必须向 SD 卡传递8个字节、我想知道是否有指令写入这8个字节。
然后、我需要读取这些字节并通过 CAN 协议传输它们。
执行此操作是否有指令、SD 卡上是否有用于写入和读取数据的示例?
如果没有、我可以使用 EEPROM 存储器执行此操作、并从特定位置进行读取和写入吗?
非常感谢您的帮助、
尊敬的 Federico:
我有一个关于这张卡的问题。 我想知道如何在 SD 卡上读取数据。 例如、我必须向 SD 卡传递8个字节、我想知道是否有指令写入这8个字节。
然后、我需要读取这些字节并通过 CAN 协议传输它们。
执行此操作是否有指令、SD 卡上是否有用于写入和读取数据的示例?
[/报价]通常、SD 卡将使用 FAT 文件系统来访问数据。 使用此库、我们可以以文件的形式写入数据。 示例我们可以创建文本文件并将数据写入该文件、然后我们可以在需要时再次读取该数据。
为此、我们将提供不同的 API、例如:
- 打开文件:
使用"f_open"函数打开文件。 文件不存在。 此函数可创建一个新文件。
- 写入数据:
使用"f_WRITE"函数将数据写入已打开的文件。 您需要提供文件句柄、包含要写入数据的缓冲区、要写入的字节数以及指向实际写入字节数的指针。
- 读取数据:
使用"f_read"函数读取已打开文件的数据。
- 关闭文件:
写入数据后、使用"f_close"函数关闭文件。
对于演示示例、您可以参考以下链接:
(+) TMS570LS3137:我找不到对应 MCU 的 SD 卡库。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
如果不是,我可以用 EEPROM 存储器执行此操作,是否可以从特定位置读写?是的、您也可以使用 EEPROM。 我们有 FEE (闪存仿真 EEPROM)驱动器、 通过使用这个驱动 器、器件中的闪存组7可被用作 EEPROM。
您可以在 HALCoGen 中找到这个示例。
转到"帮助主题"部分:
在示例部分的此处、您可以找到名为"Example_TI_FEE_WRITE_READ"的示例
在这里、您可以找到用于创建 FEE 示例的分步说明。
并参考 FEE 用户指南来了解例程:
e2e.ti.com/.../6052.TI-FEE-User-Guide.pdf--
[/quote]
谢谢。此致、
Jagadish。
抱歉,我在 SD 示例中没有找到.hcg。 您是否可以共享它?
刚才我意识到了这一点、让我与我的同事确认一下。
尊敬的 Federico:
请使用以下项目、它也具有.hcg 文件。
e2e.ti.com/.../7356.RM48-HDK-RevE-SDCard-Demo.zip
--
谢谢。此致、
Jagadish。
您好,Jagadish!
我注意到 RM48 HDK 项目与 TMS570略有不同。
例如、在 PINMUX 项目上、RM48中有一个 TMS570上没有的"USB Device"选项。
RM48:

TMS570:

而另一个对此的怀疑。 我 想在 FreeRTOS 项目中使用 SD 卡。 需要它的 RM48 maks 为"Enable RTI Driver"。 有必要吗? 因为我无法在 FreeRTOS 项目中启用 RTOI。
感谢您的帮助!
尊敬的 Federico:
例如,在 PINMUX 项目上,RM48中有一个"USB Device"选项,但 TMS570上没有该选项。
不需要 USB PINMUX 配置、您可以忽略该配置并尝试遵循其他配置。
和另一个对此的怀疑。 我 想在 FreeRTOS 项目中使用 SD 卡。 需要它的 RM48 maks 为"Enable RTI Driver"。 有必要吗? 因为我无法在 FreeRTOS 项目中启用 RTOI。
RTI 也无需启用、我刚刚验证了 RM48项目中的所有 RTI API 实际上、它们并不调用这些 RTI API 中的任何一个。 因此您也可以忽略 RTI 配置。
--
谢谢。此致、
Jagadish。
完美,打你的帮助。
我尝试过代码、但在 f_mount 函数中收到一个_dabort。 我不确定这是否是在 SD 卡上记录的一步一步。
/** - Configure MibSPI3 for SD card application */
spiInit();
// esmInit();
/* USER CODE END */
// _mpuInit_();
int nStatus;
FRESULT iFResult;
FATFS g_sFatFs;
//
// Mount the file system, using logical disk 0.
//
iFResult = f_mount(0, &g_sFatFs);
if(iFResult != FR_OK)
{
while(1);
}
// Declarar un objeto FIL para representar el archivo
FIL file;
// Ruta del archivo que deseas abrir o crear
const TCHAR *filePath = "mi_archivo.txt";
// Modo de acceso al archivo
BYTE mode = FA_READ | FA_WRITE | FA_OPEN_ALWAYS;
// Llamar a la función f_open
FRESULT result = f_open(&file, filePath, mode);
// Verificar el resultado
if (result == FR_OK) {
// El archivo se abrió o creó exitosamente
/// record_function
f_close(&file);
} else {
// Se produjo un error al abrir o crear el archivo
}
return 0;您好 Jagadish:
我使用的是 TMS570LS3137板。 是的、我复制了所有这些文件。
我在调试时、问题 出在 chk_mounted 函数(在 f_open 函数内)

可能我在 f_open 之前错过了一个步骤?
这是我的 main.c 代码
void main(void){
canInit();
sciInit();
adcInit();
/** - Configure MibSPI3 for SD card application */
spiInit();
int nStatus;
FRESULT iFResult;
FATFS g_sFatFs;
//
// Mount the file system, using logical disk 0.
//
/*
iFResult = f_mount(0, &g_sFatFs);
if(iFResult != FR_OK)
{
while(1);
}
*/
// Declarar un objeto FIL para representar el archivo
FIL file;
// Ruta del archivo que deseas abrir o crear
const TCHAR *filePath = "mi_archivo.txt";
// Modo de acceso al archivo (puedes ajustar según tus necesidades)
BYTE mode = FA_READ | FA_WRITE | FA_OPEN_ALWAYS;
// Llamar a la función f_open
FRESULT result = f_open(&file, filePath, mode);
// Verificar el resultado
if (result == FR_OK) {
// El archivo se abrió o creó exitosamente
while(1);
// Aquí puedes realizar operaciones adicionales en el archivo si es necesario
// No olvides cerrar el archivo cuando hayas terminado con él
f_close(&file);
} else {
// Se produjo un error al abrir o crear el archivo
// Puedes manejar el error de acuerdo a tus necesidades
}
return 0;
// RTOSFunction();
}
然后、我在 f_open 之前尝试了该函数。
iFResult = f_mount(0, &g_sFatFs);
if(iFResult != FR_OK)
{
while(1);
}
当程序进入 f_mount 时、请在以下行中转到_dabort:
RFS = FatFs[vol];/*获取当前 FS 对象*/
不知道为什么在这一行中有一个_dabort。
感谢你的帮助。
尊敬的 Federico:
我没有 TMS570LS3137 HDK 板来测试此问题。
我在 TMS570LC4357上测试了以下代码、未发现该代码有任何问题。
e2e.ti.com/.../TMS570LC43x_5F00_HDK_5F00_SDCard_5F00_mibspiDMA.zip
我没有遇到任何中止问题、所以您能使用此代码验证您的代码吗?
我在这里看到他们正在禁用缓存等

因此、请确保完成这些操作并在结束时重试。
--
谢谢。此致、
Jagadish。
尊敬的 Federico:
很抱歉耽误了时间,我上周在度假。
Unknown 说:Hello Jagadish! 我正在使用 TMS570LS3137、并启动了 SPI 接口(不是 mibspi)、正确吗? 或者、我应该使用 mibspi 来使用 SD 卡? 感谢您 [/报价]实际上、可以使用 SPI 或 MibSPI、这不是问题。 通过将您的项目与我分享的项目进行比较来确保其他项目。
--
谢谢。此致、
Jagadish。