I tried to interface a 24LC512 I2C EEPROM with a STM32F103RBT6 microcontroller but no success.
I used the code supplied by ST and is as follows:
#include "i2c_ee.h" typedef enum {FAILED = 0, PASSED = !FAILED} TestStatus; #define EEPROM_WriteAddress1 0x05 #define EEPROM_ReadAddress1 0x05 #define BufferSize1 (countof(Tx1_Buffer)-1) #define BufferSize2 (countof(Tx2_Buffer)-1) #define EEPROM_WriteAddress2 (EEPROM_WriteAddress1 + BufferSize1) #define EEPROM_ReadAddress2 (EEPROM_ReadAddress1 + BufferSize1) #define countof(a) (sizeof(a) / sizeof(*(a))) u8 Tx1_Buffer[] = "/* STM32F10x I2C Firmware "; u8 Tx2_Buffer[] = "Library Example */"; u8 Rx1_Buffer[BufferSize1], Rx2_Buffer[BufferSize2]; volatile TestStatus TransferStatus1 = FAILED, TransferStatus2 = FAILED; ErrorStatus HSEStartUpStatus; void RCC_Configuration(void); void NVIC_Configuration(void); TestStatus Buffercmp(u8* pBuffer1, u8* pBuffer2, u16 BufferLength); int main(void) { RCC_Configuration(); NVIC_Configuration(); 2C_EE_Init(); I2C_EE_BufferWrite(Tx1_Buffer, EEPROM_WriteAddress1, BufferSize1); while(1) { } }
It never returns from I2C_EE_BufferWrite() function.
Have to say that I have connected A0, A1, A2 and WP pins of 24LC512 chip to GND.
Best Regards