eeprom في فلاش
يقدم
ينفذ هذا الرمز وظيفة محاكاة فلاش بسيطة. يمكنك استدعاء واجهة EEPROM في المستوى العلوي من خلال تطبيق واجهة تشغيل الفلاش الأساسية. مناسبة للمشاريع ذات تخزين بيانات EEPROM أقل
مبدأ
تنقسم مساحة الفلاش المقدمة إلى EEPROM إلى قسمين ، يمكن أن يحتوي كل قسم على صفحات محو متعددة ، يتم محوها بشكل موحد أثناء المحو. أي قسم يستخدم حاليًا يتم تحديده من خلال البداية المستخدمة. تشكل البيانات الفعلية والعنوان الافتراضي EEPROM وحدة برمجة. عند الكتابة ، تتم كتابة البيانات الجديدة بالتسلسل ، وعند القراءة ، فإن القيمة الأخيرة هي القيمة الصحيحة. عندما يكون قسم واحد ممتلئًا ، يتم نسخ البيانات إلى قسم آخر.
تعليمات الزرع
- نسخ EEPROM_IN_FLASH.C و EEPROM_IN_FLASH.H إلى المشروع
- قم بتنفيذ واجهة الاتصال الأساسية لـ EE_ERASEPART و EE_PROGRAMWORD و EE_READWORD. يمكنك الرجوع إلى مثال eEPROM_PORT
- قم بتعديل تعريف الماكرو في EEPROM_IN_FLASH.H ، تكوين حجم عنوان الفلاش والمعلمات الأخرى ذات الصلة
- EEPROM_NUM_MAX: الحد الأقصى لعدد بيانات EEPROM ، الوحدة هي عدد بيانات 16 بت. يقتصر النطاق الاختياري على الحد الأدنى لحجم القسم ويجب أن يكون أقل من (EEPROM_PART_SIZE_MIN/4-1)
- EEPROM_PART0_SIZE/EEPROM_PART1_SIZE: حجم قسمين ، يمكن أن يكون بأحجام مختلفة. يمكن أن يحتوي كل قسم على صفحات متعددة محو ، وهو مضاعف عدد صحيح للصفحة المحوّة الحد الأدنى.
- eeprom_start_address: يستخدم لمحاكاة عنوان بدء الفلاش لـ eeprom
تعليمات للاستخدام
//参数:eeprom初始化值,NULL则无初始值
int EEPROM_Init ( void * default_data );
int EEPROM_Format ( void * default_data );
//参数Address:eeprom的地址,一个地址保存16bit数据,范围0 - (EEPROM_NUM_MAX-1)
//参数length:读写buf的长度,为16bit数据的个数
uint16_t EEPROM_Read ( uint16_t Address );
int EEPROM_Write ( uint16_t Address , uint16_t Data );
int EEPROM_Read_Buf ( uint16_t Address , uint16_t * buf , uint16_t length );
int EEPROM_Write_Buf ( uint16_t Address , uint16_t * buf , uint16_t length );
//参数addr:eeprom存储空间的地址,单位byte,与上面eeprom的参数呈2倍关系,地址空间不可重复,必须2字节对齐,范围0 - (EEPROM_NUM_MAX-1)*2
//参数length:读写buf的长度,单位字节长度,必须2字节对齐
int Config_Read_Buf ( uint16_t addr , void * buf , uint16_t length );
int Config_Write_Buf ( uint16_t addr , void * buf , uint16_t length );
قيود الاستخدام
- وحدة البرمجة الدنيا هي 32 بت أو أقل
- هناك ما لا يقل عن صفحتين قابلتين للمحو لاستخدامه EEPROM
- الحد الأقصى لمقدار EEPROM المخزن أقل من ربع مساحة الفلاش المتاحة
- القيمة الواضحة بعد المحو هي 0xFF
سمات
- حصة مورد منخفضة للغاية ، مناسبة لمشاريع متحكم صغيرة
- دعم فلاش محو توازن البلى
- يدعم انقطاع الطاقة الآمنة في أي وقت ، مع موثوقية عالية
- يتم تخزين جميع البيانات في الذاكرة ، وسرعة القراءة والكتابة سريعة
- لا يؤثر برنامج التحديث على المحتوى المخزن. يمكن تحديثه بشكل تدريجي أو يمكنك اختيار عدم استخدام البيانات القديمة.
- يدعم واجهة طباعة السجل لسهولة تصحيح الأخطاء
- يدعم متحكم 8 بت
- لا يتم دعم التحقق من صحة البيانات
أشياء يجب ملاحظتها
- عند استدعاء واجهة eEprom قراءة وكتابة ، انتبه إلى نطاق العنوان والطول ، ولا تغطي نطاقات عناوين بيانات مختلفة.
- واجهة برمجة عنوان فلاش EE_Programword. إذا كتب 32 بت إلى العمليات الذرية ، فيجب عليك أولاً كتابة 16 بت أقل ثم اكتب 16 بت أعلى و 16 بت أعلى.