24C32 容量為32K(32768) Bits =4096 Bytes
又,在數位鬧鐘: (3) I2C實驗-EEPROM,硬體DIY部分
中提到Device Address 由硬體接腳決定為 0xA0
再看一下下圖, 因為 4096 Bytes 由12位元定指( 2的12次方 ),所以整個EEPROM 24C32的Format 顯而易見.
舉例 我要對 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*/
又,在數位鬧鐘: (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 留言:
張貼留言