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.

[参考译文] TMS320F2.8379万D:Hish Speed SD卡数据记录

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/573439/tms320f28379d-hish-speed-sd-card-data-logging

部件号:TMS320F2.8379万D
主题: controlSUITE中讨论的其他部件

您好,

我们正在开发基于TMS320F2.8379万D的控制板。 我们需要高速数据记录。 我所说的高速是在大约20微秒内以CSV格式写入大约20个信号(每个一个字大小)。 我看了参考手册,有一个高速SPI通信模式。 但我找不到任何写入CSV的示例。 此外,鉴于它是高速数据记录,我想将文件拆分为n MB大小。 因此,基本上,在写了相当于n MB文件大小的m样例后,我想关闭旧文件,打开新文件并开始数据记录到新文件。 我们的收获是,在这一过渡期间,我不能错过任何样品。 我计划使用DMA。

我是C2000的新手,也是高速数据记录和文件系统的新手。 任何见解都值得赞赏。 请提供建议。 感谢大家的参与和帮助。

此致,

归正

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

    在controlSUITE中,有一个在SD卡上使用SPI创建FATFS文件系统的示例。该示例位于:C:\ti\controlSUITE\device_support\F2837xD\v190\F2837xD_Examples_CPU1 \SD_CARD2837 \SD_CARD

    请阅读/理解/尝试示例。 如果您在获取示例时遇到任何问题,请告诉我们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    感谢你的消息。 因此,我能够以CSV格式写入SD卡。 无论怎样,它都非常缓慢,而且我无法理解原因以及我可以修改什么来解决问题。 要求是每50微秒向SD卡写入大约24个浮点数。 但是,CPU需要大约20微秒来计算这些数字,因此CPU在向卡写入24个浮点数字时所需的时间基本上不会超过25微秒。 下面是我一直使用的示例代码。

    f_open (&g_sFileObject,"0:/Message.csv",fa_read | fa_write | fa_open_always);
    ReadCount = 512;
    Size =(&g_sFileObject)->fsize;
    
    ////////////////////////////// 第2节////////////////////////////////////////////////////////
    
    fresult = f_lseek (&g_sFileObject,size);
    f_write (&g_sFileObject," 1000.00 ,1001.00 ,1002.00 ,1003.00 ,1004.00 ,1005.00 ,1006.00 ,150,15.1152万 ,110000,1000,10 002360.1234 ,\n",大小10 of (" 1000.00 ,1001.00 ,1002.00 ,1003.00 1006.00 ,1004.00 ,1005.00 ,150,15.1152万 ,1,1000,10,002360.1234 ,");
    f_sync (&g_sFileObject);
    
    //////////////////////////////// 第2节结尾为////////////////////////////////////////////////
    
    f_close(&g_sFileObject);
    

    因此,基本上“第2节”中包含的代码必须每隔50微秒出现一次。 在调试模式下使用时钟工具,我尝试计算刻度,结果“第2节”中的逻辑大约需要5毫秒。 然后我尝试进一步清除代码,我发现了以下内容:

    1.) f_lseek大约需要2毫秒

    2.) f_write实际上只需大约10微秒。 (我甚至没有启用FIFO和DMA)

    3.) f_sync大约需要2.9 毫秒。

    所以我试着不使用f_sync来缩短时间,但是如果我不是每个周期都执行它,数据就不会被写入。 对于f_lseek函数,有一个f_read语句,该语句需要所有时间。 所以,我试着对这句话进行评论,当时没有写数据。 所以,我现在似乎陷入困境,不知道我可以做些什么来达到这个要求。

    请提供一些见解,说明如何修改代码,以实现计时并可靠地执行数据记录。 此外,此时我正在使用“ltoa”将所有浮点转换为字符串,这是一种低效的数据记录方法。 请提出建议。

    感谢大家的参与,并感谢你们的帮助。

    此致,

    归正