2011年1月4日 星期二

數位鬧鐘: (4.1) I2C實驗-EEPROM,軟體DIY部分

24C32 容量為32K(32768) Bits =4096 Bytes

又,在數位鬧鐘: (3) I2C實驗-EEPROM,硬體DIY部分 
中提到Device Address 由硬體接腳決定為 0xA0

再看一下下圖, 因為 4096 Bytes 由12位元定指( 2的12次方 ),所以整個EEPROM 24C32的Format 顯而易見.

圖1



舉例 我要對 Write ,位置 0x40 這裡寫0x79 .

比對 ByteS Write 為 
EEP_I2C_ADDRESS :      0xA0
eep_Addrs:      0x0040  (在24c32中,前4個bit忽略)

data[ count ]: count BYTEs

#define EEP_I2C_ADDRESS    0xA0
#define EEP_INFO_BYTES    (1+2)  /*1 byte for I2C Address, 2 bytes for data Address, count for data bytes*/



      I2CWriteLength = EEP_INFO_BYTES+count;
      I2CReadLength = 0;
      I2CMasterBuffer[0] = EEP_I2C_ADDRESS;
      I2CMasterBuffer[1] = (uint8_t ) ((eep_Addrs>>8)&0x00ff);    /* address H */
      I2CMasterBuffer[2] = (uint8_t )(eep_Addrs&0x00ff);        /* address L*/

      for(n=0;n<count;n++)
          I2CMasterBuffer[EEP_INFO_BYTES+n] = data[n];

      I2CEngine();


下載

0 留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...