2011-04-28 28 views
1

我最近一直在使用由GHI Electronics提供的uALFAT microSD卡进行数据记录,但是我的可靠性一直存在问题;它的一些函数调用有时花费的时间比我能处理的要长得多。我目前使用一个MSP430微控制器与uALFAT进行通话。microSD卡FAT模块

在那里有什么类似的电路板可以用来替代希望更可靠的uALFAT?

OR

什么是最有利的解决方案的OEM如果我需要设计自己的接口板与MSP430工作?

回答

6

我想这会有点不同。任何基于闪存的存储设备都可能具有可变的写入时序。尤其是一个具有文件系统和磨损均衡的功能。它往往是闪存的本质,因为你必须擦除整个块并移动它。如果你不能适应可变时序,我过去所做的就是将这部分代码移出代码的关键部分。

通常,我会添加一个时间关键代码写入的队列,然后在队列中从队列中拉出并写入SD卡。在RTOS中,这将是一个较低优先级的任务。在轮询循环中,当系统处于空闲状态时,它将被调用。

这将约束从一个函数调用的最坏情况时机改变为仅仅能够满足记录的平均吞吐量要求。最差的延迟和吞吐量决定了队列的大小。通常这可能很小。

+0

正是我会建议的。 – Clifford 2011-04-30 08:13:34

4

它可能比这更复杂,最好的解决方案是,因为@sbass建议,即使您选择更改文件系统。您需要确定在发生uALFAT之前确切地知道发生延迟的原因和原因。

但是,对于记录,我已成功使用ELM FatFs,其截止ELM Petit FatFs,还有EFSL。对于等待时间,例如在使用ELM的情况下,我已经使用SPI实现了每秒高达300kbit/s的写入速度(速度主要取决于卡,并且速度范围可以从30kbps到99kbit/s到1   Mbit/s),我无法成功使用它记录96   kbit/s的任何持续时间长度的数据流,即使具有优化的缓冲区大小(扇区大小的倍数)和50 kbit/s队列512  字节扇区。这不是图书馆的问题,而是SD卡的性质,它明显位于1   Mbit的边界上,最多会失去128  毫秒,这足以耗尽队列提供的缓冲。当然,解决方案是增加缓冲,就像@sbas所说的那样,但是在这种情况下,总系统RAM只有64个 千位,所以这是不可能的。

如果您可以抛出内存和RTOS任务(可能是TI自己的SYS/BIOS),那么您应该能够使用它来处理该库。所需的RAM数量取决于数据速率以及是否突发或连续。

1

感谢球员们,我最终实现了一个循环缓冲区,带有额外的内存,这似乎已经完成了。感谢您的好评!