forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-22 66ea95dcb8fd91d29465c2f11ced4dd6153a2504
Function/E2P/EEPROM.c
@@ -14,7 +14,7 @@
#include "eeprom.h"
#include "spi.h"
#include "delay.h"
//#include "devicegpioinit.h"
#include "gpio.h"
volatile uint8_t Fram_cs_flag = 0;  //´æ´¢Æ¬Ñ¡±êÖ¾£¬ÒÔºóÔö¼ÓһƬ´æ´¢Ð¾Æ¬£¬ÓÃÓÚÑ¡Ôñ²Ù×÷ÄÇÒ»¿é´æ´¢£¬·Ç1ΪµÚ1¿é£¬1ΪµÚ2¿éÐÂÔöµÄ¡£
@@ -23,7 +23,20 @@
//static u16 WR_times_suc=0;
//eeprom ¶ÁÊÇ1¸ö×Ö½Ú50us¡£
void E2P_Ctrl_Gpio_Init(void)
{
   CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱÖÓ£¨GPIO£©Ê¹Äܺ¯Êý
   OutputIO(EEPROM_PWR_PORT,EEPROM_PWR_PIN,OUT_PUSHPULL);
   OutputIO(EEPROM_CS1_PORT,EEPROM_CS1_PIN,OUT_PUSHPULL);
   OutputIO(EEPROM_CS2_PORT,EEPROM_CS2_PIN,OUT_PUSHPULL);
   CloseIO(EEPROM_WP_PORT,EEPROM_WP_PIN);
   E2P_PWR_OFF;
   EEPROM_CS_LOW;
   EEPROM_CS_2_LOW;
}
typedef union 
{
@@ -74,19 +87,19 @@
//      laddr = (addr16 & 0xff);     //low  8 bit address 
     
//     delay_us(10);
     EEPROM_CS_LOW;
     EEPROM_CS_ENABLE;
     FM_ReadWriteByte(FM_WREN);             
    EEPROM_CS_HIGH;
    EEPROM_CS_DISABLE;
      
//     delay_us(10);
      
     EEPROM_CS_LOW;
     EEPROM_CS_ENABLE;
      FM_ReadWriteByte(FM_WRITE);
     FM_ReadWriteByte((uint8_t)((addr_fit)>>16));
     FM_ReadWriteByte((uint8_t)((addr_fit)>>8));
      FM_ReadWriteByte((uint8_t)((addr_fit)));
     FM_ReadWriteByte(data);
     EEPROM_CS_HIGH;
     EEPROM_CS_DISABLE;
   
   
@@ -112,13 +125,13 @@
//    haddr = (addr16 >> 8) & 0x7f;//high 7 bit address  
//    laddr = (addr16 & 0xff);     //low  8 bit address 
   
   EEPROM_CS_LOW;
   EEPROM_CS_ENABLE;
   FM_ReadWriteByte(FM_READ);
   FM_ReadWriteByte((uint8_t)(addr_fit>>16));
   FM_ReadWriteByte((uint8_t)(addr_fit>>8));
   FM_ReadWriteByte((uint8_t)(addr_fit));
   data = FM_ReadWriteByte(0xff);//data = FM_ReadWriteByte(0xff);
   EEPROM_CS_HIGH;
   EEPROM_CS_DISABLE;
   
   return data;
}
@@ -134,16 +147,16 @@
void EEPROM_stat_write(uint8 stat) 
{
//     delay_us(10);
     EEPROM_CS_LOW;
     EEPROM_CS_ENABLE;
     FM_ReadWriteByte(FM_WREN);             
    EEPROM_CS_HIGH;
    EEPROM_CS_DISABLE;
      
//     delay_us(10);
      
     EEPROM_CS_LOW;
     EEPROM_CS_ENABLE;
      FM_ReadWriteByte(FM_WRSR);
     FM_ReadWriteByte(stat);
     EEPROM_CS_HIGH;
     EEPROM_CS_DISABLE;
   
}
@@ -159,10 +172,10 @@
   uint8 stat;
   
   delay_us(10);
   EEPROM_CS_LOW;
   EEPROM_CS_ENABLE;
   FM_ReadWriteByte(FM_RDSR);
   stat = FM_ReadWriteByte(0xff);
   EEPROM_CS_HIGH;
   EEPROM_CS_DISABLE;
   
   return stat;
}
@@ -177,9 +190,9 @@
void EEPROM_sleep(void)
   delay_us(10);
   EEPROM_CS_LOW;
   EEPROM_CS_ENABLE;
   FM_ReadWriteByte(FM_SLEEP);
   EEPROM_CS_HIGH;
   EEPROM_CS_DISABLE;
}
@@ -195,13 +208,13 @@
   uint8 i;
   delay_us(10);
   EEPROM_CS_LOW;
   EEPROM_CS_ENABLE;
   FM_ReadWriteByte(FM_RDID);
   for(i = 0;i < 9;i ++)
   {
      dst[i] = FM_ReadWriteByte(0xff);
   }
   EEPROM_CS_HIGH;
   EEPROM_CS_DISABLE;
}
@@ -296,7 +309,7 @@
 *****************************************/
u32 EEPROM_data_read_uint32(uint32 addr16) 
{
   u32_un t;
   t.data[0] = EEPROM_data_read(addr16);
   t.data[1] = EEPROM_data_read(addr16+1);
@@ -399,18 +412,18 @@
   {
      
      
      EEPROM_CS_LOW;
      EEPROM_CS_ENABLE;
      FM_ReadWriteByte(FM_WREN);             
      EEPROM_CS_HIGH;
      EEPROM_CS_DISABLE;
         
      EEPROM_CS_LOW;
      EEPROM_CS_ENABLE;
      FM_ReadWriteByte(FM_WRITE);
      FM_ReadWriteByte((uint8_t)((addr_temp)>>16));
      FM_ReadWriteByte((uint8_t)((addr_temp)>>8));
      FM_ReadWriteByte((uint8_t)(addr_temp));
      for(i = 0;i < bytewrite;i ++)
        FM_ReadWriteByte(*ptr_data ++);
      EEPROM_CS_HIGH;
      EEPROM_CS_DISABLE;
      
      
@@ -445,14 +458,14 @@
{
   u16    index;
   
   EEPROM_CS_LOW;
   EEPROM_CS_ENABLE;
   FM_ReadWriteByte(FM_READ);
   FM_ReadWriteByte((uint8_t)(addr>>16));
   FM_ReadWriteByte((uint8_t)(addr>>8));
   FM_ReadWriteByte((uint8_t)(addr));
   for(index = 0;index < bytes;index ++)
     data[index] = FM_ReadWriteByte(0xff);
   EEPROM_CS_HIGH;
   EEPROM_CS_DISABLE;
   EEPROM_Wait_Busy();   
}