new ATMEL AT24C512B I2C EEPROM not working with TI's MSP430F1611 I2C peripheral

Started by "Louise Chan, Jr." February 11, 2008
Hi,

I have limited experience in using the TI MSP430 mcus for embedded
development so I'm hoping that anybody here who has plenty of
experience with this mcu particularly using it with the new line of
ATMEL I2C EEPROMs (AT24CxxxB) would be able to help me with my problem.

I've created code to access the ATMEL AT24C512 EEPROM (this is the
older version of the 64kb Atmel I2C eeprom which is now obsolete)
using the I2C peripheral of the MSP430F1611 mcu and had no problems
with writing and reading data to and from the EEPROM.

A few months after developing the software for the MSP430F1611, I got
hold of the news that ATMEL has replaced the old AT24C512 eeproms with
the newer AT24C512B eeproms from which I gather operates at a faster
clock at lower voltages (@ 1.8V operating voltage, it can accept data
transfer speeds of up to 400khz). The older version can only operate
up to 100khz at 1.8V operating voltage.

The I2C driver code that I've created for the older version of the
ATMEL 64kb I2C eeprom operates with an SCL = 80khz (approximately)
using the following settings in the I2C peripheral:

SMCLK = 5.5Mhz
I2CPSC = 2
I2CSCLH = 9
I2CSCLL = 9

I'm not using interrupts when sending or receiving data to or from the
EEPROM. Instead, I'm using the polling method wherein I just read the
status of the I2CIFG interrupt flags to see if I've completed an I2C
send or receive operation.

The problem that I'm experiencing right now with the newer ATMEL
AT24C512B eeprom is that my existing code suddenly won't work. I
always keep on reading 0's everytime I access the EEPROM using the
existing code. I've experienced once or twice where I can read data
correctly but most of the time, I keep on reading zeroes from the new
EEPROM part.

I've tried changing the SCL clock to a faster rate (approx. 300khz)
and even tried changing the pull-up resistors on the SDA and SCL lines
just to make sure that the rise time of the SCL and SDA signals would
improve but I still am not able to make my I2C code work with the new
Atmel EEPROM.

Has anybody here experienced the same problem with the new ATMEL I2C
eeprom parts and have come up with a fix?

Appreciate any help that I can get.

Thanks.

Best regards,
Louise

Beginning Microcontrollers with the MSP430

Has anyone used the AT24C512B? Any issues?

Or, suggest another 512K EEPROM with I2C? (3.3v)

--- In m..., "Louise Chan, Jr." wrote:
>
> Hi,
>
> I have limited experience in using the TI MSP430 mcus for embedded
> development so I'm hoping that anybody here who has plenty of
> experience with this mcu particularly using it with the new line of
> ATMEL I2C EEPROMs (AT24CxxxB) would be able to help me with my problem.
>
> I've created code to access the ATMEL AT24C512 EEPROM (this is the
> older version of the 64kb Atmel I2C eeprom which is now obsolete)
> using the I2C peripheral of the MSP430F1611 mcu and had no problems
> with writing and reading data to and from the EEPROM.
>
> A few months after developing the software for the MSP430F1611, I got
> hold of the news that ATMEL has replaced the old AT24C512 eeproms with
> the newer AT24C512B eeproms from which I gather operates at a faster
> clock at lower voltages (@ 1.8V operating voltage, it can accept data
> transfer speeds of up to 400khz). The older version can only operate
> up to 100khz at 1.8V operating voltage.
>
> The I2C driver code that I've created for the older version of the
> ATMEL 64kb I2C eeprom operates with an SCL = 80khz (approximately)
> using the following settings in the I2C peripheral:
>
> SMCLK = 5.5Mhz
> I2CPSC = 2
> I2CSCLH = 9
> I2CSCLL = 9
>
> I'm not using interrupts when sending or receiving data to or from the
> EEPROM. Instead, I'm using the polling method wherein I just read the
> status of the I2CIFG interrupt flags to see if I've completed an I2C
> send or receive operation.
>
> The problem that I'm experiencing right now with the newer ATMEL
> AT24C512B eeprom is that my existing code suddenly won't work. I
> always keep on reading 0's everytime I access the EEPROM using the
> existing code. I've experienced once or twice where I can read data
> correctly but most of the time, I keep on reading zeroes from the new
> EEPROM part.
>
> I've tried changing the SCL clock to a faster rate (approx. 300khz)
> and even tried changing the pull-up resistors on the SDA and SCL lines
> just to make sure that the rise time of the SCL and SDA signals would
> improve but I still am not able to make my I2C code work with the new
> Atmel EEPROM.
>
> Has anybody here experienced the same problem with the new ATMEL I2C
> eeprom parts and have come up with a fix?
>
> Appreciate any help that I can get.
>
> Thanks.
>
> Best regards,
> Louise
>