i2c interface eeprom

Dependencies:   mbed

main.cpp

Committer:
soulx
Date:
2015-11-02
Revision:
1:b2b38e1e4d0c
Parent:
0:b5986cc5eebd

File content as of revision 1:b2b38e1e4d0c:

#include "mbed.h"

I2C i2c(I2C_SDA, I2C_SCL);
 
const int addr = 0xA0;
 
int main() {
    char cmd[6];
      int len=3;
      char data[1];
  int ack;
  
  i2c.frequency(100000);
  //address in eeprom
        cmd[0] = 0x00;
        cmd[1] = 0x01;
//data for write to eeprom     
        cmd[2] ='c';
        
//sent data i2c     FIGURE 4-1   
        ack = i2c.write((int)addr,(char *)cmd,len);
//wait for write to memory   
        wait_ms(5);
 //read data i2c   FIGURE 6-2 
     ack = i2c.write((int)addr,(char *)cmd,len-1,true);
//read data i2c   
     ack = i2c.read((int)addr,(char *)&data,sizeof(data));

     printf("Temp1 = %c\n", data[0]);
     
     
        cmd[2] ='X';
        ack = i2c.write((int)addr,(char *)cmd,len);
        //i2c.write(addr, cmd, 2);
    
        wait_ms(5);
 
     ack = i2c.write((int)addr+1,(char *)cmd,len-1,true);
     
     ack = i2c.read((int)addr,(char *)&data,sizeof(data));
     printf("Temp2 = %c\n\n", data[0]);
     
     //wait_us(100);
 /*
        cmd[0] = 0x00;
        i2c.write(addr, cmd, 1);
        i2c.read(addr, cmd, 6);
        */
 
 //       float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0);
       // printf("Temp = %s\n", cmd);
    //}
}