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.

[参考译文] TMS570LS3137:从 SD 卡读取/写入

Guru**** 2551110 points
Other Parts Discussed in Thread: HALCOGEN, TMS570LS3137, TMS570LC4357

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1295876/tms570ls3137-read-write-from-sd-card

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGENTMS570LC4357

大家好!!

我有一个关于这张卡的问题。 我想知道如何在 SD 卡上读取数据。 例如、我必须向 SD 卡传递8个字节、我想知道是否有指令写入这8个字节。

然后、我需要读取这些字节并通过 CAN 协议传输它们。

执行此操作是否有指令、SD 卡上是否有用于写入和读取数据的示例?

如果没有、我可以使用 EEPROM 存储器执行此操作、并从特定位置进行读取和写入吗?

非常感谢您的帮助、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Federico:

    我有一个关于这张卡的问题。 我想知道如何在 SD 卡上读取数据。 例如、我必须向 SD 卡传递8个字节、我想知道是否有指令写入这8个字节。

    然后、我需要读取这些字节并通过 CAN 协议传输它们。

    执行此操作是否有指令、SD 卡上是否有用于写入和读取数据的示例?

    [/报价]

    通常、SD 卡将使用 FAT 文件系统来访问数据。 使用此库、我们可以以文件的形式写入数据。 示例我们可以创建文本文件并将数据写入该文件、然后我们可以在需要时再次读取该数据。

    为此、我们将提供不同的 API、例如:

    1. 打开文件:

          使用"f_open"函数打开文件。 文件不存在。 此函数可创建一个新文件。

    1. 写入数据:

         使用"f_WRITE"函数将数据写入已打开的文件。 您需要提供文件句柄、包含要写入数据的缓冲区、要写入的字节数以及指向实际写入字节数的指针。

    1. 读取数据:

          使用"f_read"函数读取已打开文件的数据。

    1. 关闭文件:

          写入数据后、使用"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

    --
    谢谢。此致、
    Jagadish。

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     Jagadish、您好、感谢您的帮助。

    我下载了 SD 卡示例、发现它用于 RM48 HDK。 我是否能够在 TMS570LS3137中使用此项目?  

    谢谢你!!

    费德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Federico:

    我的建议如下。

    不要尝试直接调试、不要仅为 TMS570LS3137创建一个新项目并根据 RM48进行 HALCoGen 修改和生成代码。

    现在将 SD 卡应用相关文件添加到 TMS570LS3137项目中、并确保没有生成错误。 执行该操作后、尝试调试项目。

    --
    谢谢。此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jagadish:

    完美,我会尝试它!

    感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉、我在 SD 示例中没有找到.hcg。 您能否共享它?

    谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉,我在 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;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您使用哪种电路板?

    TI HDK 电路板或任何定制电路板?

    你是否从 RM48将所有 utils 文件夹文件复制到新项目中?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 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。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jagadish! 我正在使用 TMS570LS3137、并启动了 SPI 接口(不是 mibspi)、正确吗? 或者、我应该使用 mibspi 来使用 SD 卡? 谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Federico:

    很抱歉耽误了时间,我上周在度假。

    Unknown 说:
    Hello Jagadish! 我正在使用 TMS570LS3137、并启动了 SPI 接口(不是 mibspi)、正确吗? 或者、我应该使用 mibspi 来使用 SD 卡? 感谢您 [/报价]

    实际上、可以使用 SPI 或 MibSPI、这不是问题。 通过将您的项目与我分享的项目进行比较来确保其他项目。

    --
    谢谢。此致、
    Jagadish。