LPC2478通过I2C对AT24C04(EEPROM)进行读写

来源:互联网 发布:利用网络犯罪法规 编辑:程序博客网 时间:2024/06/04 19:17

    在测试掉电保存模块式,,在网上找不到具体的关于LPC2478通过I2C对AT24C04(EEPROM)进行读写操作的程序,后来参考了以前编写的程序,在经过调试后整理了函数模块。

    下面说说在测试中遇到的问题:由于我们的原理图不是很正确,导致调试了很久,,所以仔细很重要。如下是我们的原理图如图1,一开始功能一直没实现,后来参考网上的I2C总线配置图2,发现没有上拉电阻配置错误,,更换后ok。

图1 图2

下面附上基于LPC2478的BOD模块和IIC模块。

BOD初始化函数:

void BOD_Init( BOD_Config_Type* pConfig,int State1,int State2,int State3 )
{
  pConfig->Enabled = State1;
  pConfig->PowerReduced = State2;
  pConfig->ResetOnVoltageDown = State3;


  /* Turn on/off BOD. */
  if(pConfig->Enabled == DISABLE)
  {
  PCON |= BOD_PCON_BOGD;
  return;
  }
 PCON &= ~BOD_PCON_BOGD;


  /* Brown-Out Reduced Power Mode */
  if(pConfig->PowerReduced == ENABLE)
  {
       PCON |= BOD_PCON_BODRPM;
  }
  else
  {
        PCON &= ~BOD_PCON_BODRPM;
  }


  /* Brown-Out Reset */
  if(pConfig->ResetOnVoltageDown == DISABLE)
  {
       PCON |= BOD_PCON_BORD;
  }
  else
  {
        PCON &= ~BOD_PCON_BORD;
  }


  /* Enable the BOD Interrupt */
install_irq(BOD_INT, (void *)BOD_IRQHandler, HIGHEST_PRIORITY );
 // NVIC_EnableIRQ(BOD_IRQn);


  return;
}

.h文件

typedef struct 
{
char Enabled; /**< Enable BOD Circuit */
char PowerReduced;/**< if ENABLE, BOD will be turned off in Power-down mode or Deep Sleep mode */
                           /**< So, BOD can't be used to wake-up from these mode. */
char ResetOnVoltageDown;/**< if ENABLE, reset the device when the VDD(REG)(3V3) voltage < the BOD reset trip level */
}BOD_Config_Type;

初始化函数中的结构体定义。

关于IIC总线的配置以及对于AT24C04(EEPROM)中数据的读取和写入见上传的资料。

0 0
原创粉丝点击