好吧,这个问题说明了一切。我想要做的是,每次我给微控制器加电时,它应该从保存的数据中提取一些数据并使用它。它不应该使用任何外部闪存芯片。如果可能,请提供一些代码片段,以便我可以在AVR studio 4中使用它们。例如,如果我保存8个uint16_t数据,它应该将这些数据加载到uint16_t数组中。
发布于 2012-06-15 18:35:02
如果你不需要以编程方式更新数据,或者如果你想要读写支持,你必须将数据烧录到芯片的程序存储器中,你应该使用内置的EPROM。
Pgmem示例:
#include <avr/pgmspace.h>
PROGMEM uint16_t data[] = { 0, 1, 2, 3 };
int main()
{
uint16_t x = pgm_read_word_near(data + 1); // access 2nd element
}发布于 2012-07-14 05:17:38
您需要获取正在使用的零件的数据表。这样的微控制器通常至少包含一个闪存,有时还包含多个闪存,以支持不同的引导加载程序,同时使擦除整个闪存变得容易,而不会影响另一个闪存。同样的,有些也有eeprom。这都是内部的,而不是外部的。Esp,既然你说你需要通过编程来保存,这应该是可行的(记住它是多么容易耗尽闪存,不要保存,除非你需要)。eeprom或闪存都将满足在您上电时将该信息保存在那里的要求,并且是非易失性的。以及能够以编程方式保存它。谷歌会发现一些关于如何做到这一点的例子,除了你显然还没有读过的数据表,以及也包含这些信息的应用笔记(你应该已经读过了)。如果您正在寻找某种一次性可编程保险丝熔断的东西,可能会有avr的OTP版本,您将不得不阅读有关如何对该内存进行编程的数据表、程序员参考和应用说明,并且应该告诉您OTP部件是否可以通过编程方式编写,或者是否对它们进行了不同的处理。
数据的读取在数据表的内存映射中,编写代码来读取这些地址。在数据手册(程序员参考手册,用户指南,无论atmel怎么叫它)中也描述了编写,网上有很多例子。
https://stackoverflow.com/questions/11048916
复制相似问题