eep数据读到ram

eep数据读到ram,第1张

EEPROM 写数据流程第一步,首先是 I2C 的起始信号,接着跟岁肆慎上首字节,也就是我们前边讲的 I2C 的器件地址,并且在读写方向上选择“写” *** 作。

第二步,发送数据的存储地址。24C02 一共 256 个字节的存储空间,地址从 0x00~0xFF,我们想把数据存储在哪个位置,此刻写的就是哪个地址。

第三步,发送要存储的数据第一个字节、第二个字节??注意在写数据的过程中,EEPROM 每个字节都会回应一个“应答位 0”,来告诉我们写 EEPROM 数据成功,如果没有回应答位,说明写入不成功。

在写数据的过程乎敬中,每成功写入一个字节,EEPROM 存储空间的地址就会自动加 1,当加到 0xFF 后,再写一个字节,地址会溢雹物出又变成了 0x00。

void EEPROM_erasure(UINT16 number) //清除 *** 作函数

  UINT16 *erase               

  //erase = (unsigned char*)(0x400+number)

  

  erase = (UINT16*)(number)

  *erase = 0xff 

  DisableInterrupts

  while(!(ECLKDIV & 0x80))    

  {}

  while(!(ESTAT & 0x80))      

  {}

  while(!(EPROT & 0x80))      

  {}

  ECMD = 0x40

  ESTAT |= 0x80

  while(!(ESTAT & 0x40)) 

  {}

  EnableInterrupts

}

void EEPROM_write(UINT16  code,UINT16 number) //写 *** 作

 

          纯销     

  UINT16 *eeaddr           //对EEPROM进行写 *** 作时的地址

 

 /*

  allow_calibration = 0

  calibration = 1

  */

  DisableInterrupts

  eeaddr = (UINT16*)(number)

  while(!(ECLKDIV & 0x80))    烂物     //判断ECLKDIV是否被写入,是向下进行,否原地等待?

  {}

  while(!(ESTAT & 0x80))           //判断缓冲区是否准备好,准备好则饥裤液向下进行,没有准备好则原地等待?

  {}

  while(!(EPROT & 0x80))           //判断EEPROM是否允许被写入,允许向下进行,不允许则原地等待?

  {}

   *eeaddr= code

   

  ECMD = 0x20

  ESTAT |= 0x80

while(!(ESTAT & 0x40))          //判断EEPROM是否被写入,是向下进行,否原地等待;

  {}

  EnableInterrupts

  return   

}

*/ 

 UINT16 EEPROM_read(UINT16 add)  //读 *** 作 

{

  

  UINT16 *erase

  UINT16 m

  

  calibration = 0

  

  DisableInterrupts

  erase = (UINT16*)(add)

  

  m = *erase 

  EnableInterrupts

  return m

         

  

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12427142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存