SyncMOS Technologies International, Inc. EEPROM Application Note OCT 2007 APN_2007_10_02 EEPROM 功能应用说明 1 2 3 适用产品:SM59D04G2 series。 应用范围:针对需使用 EEPROM 做数据长期储存的应用。 功能说明: 3.1 本公司上述产品皆可使用 embedded FLASH 的内存存放空间,当作 EEPROM 使用,提供给 客户储存重要数据。 3.2 此 EEPROM 空间需以每 512 bytes 为一单位。(例如:Address 0x1000 Æ0x11FF 为一单位, 不可以 Address 0x1100 Æ0x12FF 为一单位) 3.3 此 EEPROM 为对指定之 embedded FLASH 地址(客户主程序之余的内存空间)做抹除及数 据写入功能,写入之数据可永久保存,以增加产品的使用范围。 4 使用方法: 4.1 将 EEPROM.LIB 加入开发程序中。 4.2 EEPROM.LIB 包含三个宏函式:EEPROM_Page_Clean,EEPROM_Byte_Program, EEPROM_Byte_change 及 EEPROM_Byte_change_Eram,这三个宏函式说明如下。 4.2.1 EEPROM_Page_Clean(Word eFlashAddr),为提供客户将欲使用之页清除;建议客 户于执行 EEPROM_Byte_Program 之前,先将该页清除干净。(如未清除干净,有可能 造成写入之数据错误),此函式需填入: 4.2.1.1 欲清除页之启始地址(Word eFlashAddr),每一页为 512bytes。 4.2.2 EEPROM_Byte_Program( Word eFlashAddr , Byte eFlashData )为提供客户于自行设 定之有效页区域写入客户之数据,此函式需填入: 4.2.2.1 欲写入之地址(Word eFlashAddr); 4.2.2.2 欲写入之值(Byte eFlashData)。 4.2.3 EEPROM_Byte_change( Word eFlashAddrCustomer,Word eFlashAddrBuffer,Word eFlashAddr ,Byte eFlashData, iWord Number ) 为提供客户修改已写入之数据,使用 512 Bytes Flash 当 buffer,此函式需填入: 4.2.3.1 客户数据之起始地址(Word eFlashAddrCustomer),以一页为一单位; 4.2.3.2 客户提供数据暂存区之起始地址(Word eFlashAddrBuffer),以一页为一单位; 4.2.3.3 客户欲更改数据之地址(Word eFlashAddr); 4.2.3.4 客户欲更改之地址的数据值(Byte eFlashData); 4.2.3.5 客户使用之总位数(iWord Number),最大值为 512(0x200)。 Specifications subject to change without notice, contact your sales representatives for the most recent information. Ver 1.0 IRFWX-A047 1/6 SyncMOS Technologies International, Inc. EEPROM Application Note OCT 2007 APN_2007_10_02 4.2.4 EEPROM_Byte_change_Eram( Word eFlashAddrCustomer,Word eFlashAddr ,Byte eFlashData, iWord Number ) 为提供客户修改已写入之数据,使用 Expand RAM 0x0100Æ0x02FF 当 buffer,此函式需填入: 4.2.4.1 客户数据之起始地址(Word eFlashAddrCustomer),以一页为一单位; 4.2.4.2 客户欲更改数据之地址(Word eFlashAddr); 4.2.4.3 客户欲更改之地址的数据值(Byte eFlashData); 4.2.4.4 客户使用之总位数(iWord Number),最大值为 512(0x200)。 5 范例程序: 5.1 EEPROM_Page_Clean(Word eFlashAddr) 范例: EEPROM_Page_Clean( 0x3000 ); //Page 0x3000 ~0x31FF clean before programming 5.2 EEPROM_Byte_Program( Word eFlashAddr , Byte eFlashData ) 范例一:使用固定地址及固定数据 EEPROM_Byte_Program( 0x3000 , 0x50); //Program 0x3000 to customer code 0x50 范例二:使用变量地址及数组数据 cByte TB[5]={0x20,0x21,0x22,0x23,0x24}; cByte TC[10]={0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C}; … iWord address; iByte i; EEPROM_Page_Clean( 0x3000 ); //Page 0x3000 ~0x31FF clean before program address = 0X3000; //Program TB table to 0x3000~0x3004 for (i=0;i<5;i++) { EEPROM_Byte_Program( address , TB[i]); address = address + 1; } address = 0x3100; //Program TC table to 0x3100~0x3109 for (i=0;i<10;i++) { EEPROM_Byte_Program( address , TC[i]); address = address + 1; } Specifications subject to change without notice, contact your sales representatives for the most recent information. Ver 1.0 IRFWX-A047 2/6 SyncMOS Technologies International, Inc. EEPROM Application Note OCT 2007 APN_2007_10_02 5.3 EEPROM_Byte_change( Word eFlashAddrCustomer,Word eFlashAddrBuffer,Word eFlashAddr ,Byte eFlashData, iWord Number ) 范例一:512 Bytes 全部使用 EEPROM_Byte_change( 0x3000,0x3C00,0x3001 ,0xAA, 0x0200 ); //The customer code area from 0x3000 to 0x31FF; //The Buffer code area from 0x3C00 to 0x3DFF; //Change customer code at 0x3001 to 0xAA, //Total use 512 Bytes (Max) EEPROM_Byte_change( 0x3000,0x3C00,0x3102 ,0x99, 0x0200 ); //Change customer code at 0x3102 to 0x99, 范例二:只使用 15 Bytes(执行此函式只有 0x3000~0x300F 值会保留) EEPROM_Byte_change( 0x3000,0x3C00,0x3001 ,0xAA, 0x0010 ); //The customer code area from 0x3000 to 0x31FF; //The Buffer code area from 0x3C00 to 0x3DFF; //Change customer code at 0x3001 to 0xAA, //Total use 512 Bytes (Max) 5.4 EEPROM_Byte_change_Eram( Word eFlashAddrCustomer,Word eFlashAddr ,Byte eFlashData, iWord Number ) 范例一:512 Bytes 全部使用 EEPROM_Byte_change_Eram( 0x3000,0x3001 ,0x55, 0x0200 ); //The customer code area from 0x3000 to 0x31FF; //The Buffer area at Expand RAM from 0x0100 to 0x02FF; //Change customer code at 0x3001 to 0xAA, //Total use 512 Bytes (Max) EEPROM_Byte_change_Eram( 0x3000,0x3103 ,0x66, 0x0200 ) ; //Change customer code at 0x3103 to 0x66, 范例二:只使用 15 Bytes(执行此函式只有 0x3000~0x300F 值会保留) EEPROM_Byte_change_Eram( 0x3000,0x3001 ,0x55, 0x0010 ) ; //The customer code area from 0x3000 to 0x31FF; // The Buffer area at Expand RAM from 0x0100 to 0x02FF; //Change customer code at 0x3001 to 0xAA, //Total use 512 Bytes (Max) Specifications subject to change without notice, contact your sales representatives for the most recent information. Ver 1.0 IRFWX-A047 3/6 SyncMOS Technologies International, Inc. EEPROM Application Note OCT 2007 APN_2007_10_02 附录 A:如何将 EEPROM.LIB 加入 步骤一:打开项目,选择加入档案 步骤二:选择加入档案类型为 Lib Specifications subject to change without notice, contact your sales representatives for the most recent information. Ver 1.0 IRFWX-A047 4/6 SyncMOS Technologies International, Inc. EEPROM Application Note OCT 2007 APN_2007_10_02 步骤三:选择加入文件名称为 EEPROM.lib(此档案可至新茂网站下载) 步骤四:完成步骤一至步骤四后,项目中就会将 EEPROM.lib 加入 Specifications subject to change without notice, contact your sales representatives for the most recent information. Ver 1.0 IRFWX-A047 5/6 SyncMOS Technologies International, Inc. EEPROM Application Note OCT 2007 APN_2007_10_02 步骤五:于主程序中将 EEPROM 外部函式加以宣告,即可使用 EEPROM 功能 Specifications subject to change without notice, contact your sales representatives for the most recent information. Ver 1.0 IRFWX-A047 6/6