eeprom ในแฟลช
แนะนำ
รหัสนี้ใช้ฟังก์ชั่น EEPROM แบบจำลองแฟลชแบบง่าย คุณสามารถเรียกอินเทอร์เฟซ EEPROM ที่ระดับบนสุดโดยเพียงแค่ใช้อินเทอร์เฟซการทำงานของแฟลชพื้นฐาน เหมาะสำหรับโครงการที่มีการจัดเก็บข้อมูล EEPROM น้อยลง
หลักการ
พื้นที่แฟลชที่มีให้กับ EEPROM แบ่งออกเป็นสองพาร์ติชันแต่ละพาร์ติชันสามารถมีหน้าลบหลายหน้าซึ่งจะถูกลบอย่างสม่ำเสมอในระหว่างการลบ พาร์ติชันใดที่ใช้ในปัจจุบันจะถูกกำหนดโดยจุดเริ่มต้นที่ใช้ _mark ข้อมูลจริงและที่อยู่เสมือน 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 บิตที่สูงขึ้น 16 บิตและสูงกว่า 16 บิต