【传感器】AT24C128 EEPROM

注意事项: EEPROM读写以及数据管理

特性:

1.运行的电压和标准电压的范围:

最低电压范围
2.7Vcc=2.7 V to 5.5 V )
1.8Vcc=1.8 V to 3.6 V )

2.大小有128 KBytes (16384*8)和 256KBytes(32768*2)两种。
3.两线串口总线。
4.双向数据传输协议
5.兼容:1 MHz(5V)、400 kHz(2.7V,2.5V)、100 kHz(1.8V)。
6.拥有硬件的写保护功能以及软件的数据保护功能。
7.64-Byte一个page。
8.写回操作5 ms
9.高性能:

写次数保存数据(年)
10000040

10.封装方式有: 8-pin JEDEC、8-pin JEDECEIAJ SOIC、8-pin TSSOP、8-ball dBGA

描述:

AT24C128/256提供128 Kbtyes 和 256 Kbytes 两种方式。允许四个设备共享一个I2C总线。


管脚描述:

管脚名称功能
A0、A1器件地址选择
SDA串行数据/地址
SCL串行时钟
WP写保护
Vcc工作电压
GND

SCL:用于产生时钟的管脚,是一个输入管脚。
SDA:双向串行数据/地址管脚用于器件所有数据的发送或接受,SDA是一个开漏输出管脚,可以与其他的开漏输出或集电极开路输出进行线或操作。
A1、A0:输入脚用于多个器件级联时设置器件地址,当这些脚悬空时默认值为0。做多可以级联4个设备。只有一个设备的话,A0,A1悬空或者为0。
WP:如果WP管脚连接到Vcc,所有的内容都会被写保护(只能读)。当WP管脚连接到GND或者悬空,允许器件进行正常的读/写操作。

极限参数

工作温度:

用途温度范围
工业级别-55℃~+125℃
商业级别0℃~+75℃

存储温度:-65℃~+150℃
Vcc管脚承受电压:-2.0~+7.0V
焊接温度:300℃
输出短路电流:100mA

框图

分布电容
温度=25 ,频率=1.0 MHz,电压=5.0 V

符号测试项最大单位条件
C(I/O)I/O电容(SDA脚)8pFV(I/O)=0V
C(IN)输出电容(A0,A1)6pFV(IN)=0V

实例代码

本程序是用的CC2541的I2C接口:

I2C写函数:

void CC_I2C_WriteFun(u8 slave_addr,i2cClock_t clockRate, u16 address,u8 len,u8* pBuf ){
      i2cAddr = slave_addr << 1;        
      I2C_WRAPPER_DISABLE();        
      I2CADDR = 0; 
      I2C_CLOCK_RATE(clockRate);
      I2C_ENABLE(); 
      if(i2cMstStrt(0) != mstAddrAckW)
      {
          len = 0;
      }   
      u8 High_addr = HI_UINT16(address);
      u8 low_addr = LO_UINT16(address);     
      I2C_WRITE(High_addr);
      I2C_WRITE(low_addr);
      for (uint8 cnt = 0; cnt < len; cnt++)
      {
          I2C_WRITE(*pBuf++);
          if (I2CSTAT != mstDataAckW)
          {
              if (I2CSTAT == mstDataNackW)
              {
                   len = cnt + 1;
              }
              else
              {
                   len = cnt;
              }
              break;
          }
      }
     I2C_STOP();    
}

I2C读函数:

void CC_I2C_ReadFun(u8 slave_addr,i2cClock_t clockRate,u16 address,u8 len,u8* pBuf){
    i2cAddr = slave_addr << 1;        //write oprearation 
    I2C_WRAPPER_DISABLE();
    I2CADDR = 0; // no multi master support at this time
    I2C_CLOCK_RATE(clockRate);
    I2C_ENABLE(); 
    uint8 cnt = 0;
    if (i2cMstStrt(0) != mstAddrAckW)
    {
        len = 0;
    }
    u8 High_addr = HI_UINT16(address);
    u8 low_addr = LO_UINT16(address);

    I2C_WRITE(High_addr);
    I2C_WRITE(low_addr);

    I2C_STRT();
    I2C_WRITE(i2cAddr | 1);

    // All bytes are ACK'd except for the last one which is NACK'd. If only
    // 1 byte is being read, a single NACK will be sent. Thus, we only want
    // to enable ACK if more than 1 byte is going to be read.
    if (len > 1)
    {
       I2C_SET_ACK();
    }

     while (len > 0)
     {
          // slave devices require NACK to be sent after reading last byte
          if (len == 1)
          {
               I2C_SET_NACK();
          }

          // read a byte from the I2C interface
          I2C_READ(*pBuf++);
          cnt++;
          len--;

         if (I2CSTAT != mstDataAckR)
         {
               if (I2CSTAT != mstDataNackR)
               {
                     // something went wrong, so don't count last byte
                     cnt--;
               }
               break;
         }
     }
     I2C_STOP();

  //return cnt;

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值