0

我是嵌入式电子/编程的新手,但我有一个项目。对于这个项目,我想在没有文件系统的 SD 卡(SPI 模式)上的 512b 缓冲区中写入传感器提供的原始数据。

我试图通过使用 FATFS 库的低级函数来做到这一点。我听说我必须创建自己的格式并重写函数才能做到这一点,但我迷失在所有这些行代码中......我想我必须首先使用命令序列(CMD0,CMD8 ,CMD55,ACMD41...)。

我不确定接下来的步骤,如果我必须使用该功能打开一个文件fopen然后使用该fwrite功能......

如果有人可以向我解释它如何适用于非文件系统 SD 卡并指导我按照步骤进行操作,我将不胜感激。

4

2 回答 2

0

如果您不想使用文件系统,那么fopenfwrite无关紧要。您只需使用低级块驱动程序。如果您指的是http://www.elm-chan.org/fsw/ff/00index_e.html,那么您需要的 API 子集是:

  • disk_status- 获取设备状态
  • disk_initialize- 初始化设备
  • disk_read- 读取数据
  • disk_write- 写入数据
  • disk_ioctl- 控制设备相关功能

但是,由于您必须以某种方式管理这些块,以便知道哪些块可用以及接下来要在哪里写入(例如一个大文件),因此您实际上将编写自己的文件系统(尽管是一个非常简单且有限的文件系统)。所以它引出了一个问题,为什么你不只使用现有的文件系统?

在嵌入式系统中不使用 FAT 的原因有很多,但其中很少有可以通过实现自己的“原始”文件系统来解决,而无需您做大量工作来重新发明文件系统!考虑一些更健壮且专为资源受限的嵌入式系统而设计的东西,这些系统具有潜在的不可靠电源,例如littlefs

于 2021-12-14T09:56:01.220 回答
0

请记住,SPI 模式不支持内存容量 > 2Tb 的卡(物理层简化规范

于 2021-12-14T14:10:27.453 回答