EEPROM writes,  temperature, CySetTemp(), general questions

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
WaMa_286156
Level 5
Level 5
First comment on blog 100 replies posted 50 replies posted

  OK. I wish to write to the eeprom.  I'll figure out how to do it with the api, I'm sure, but I do have some question based on what I've read.

   

 1) Is there a maximum temperature at which you would NOT want to write to the EEPROM?  I couldn't find any info.

   

 2) Is the CySetTemp() call embedded into the EEPROM API write calls?   I've looked at the code, and found *something* that could be associated with it, but it was "Greek to Me," since it was a bunch of macros.

   

  3) If CySetTemp() it isn't embedded into the EEPROM API, then should I call this before every write?

   

  4) If you only use blocking calls, could you power down the EEPROM between uses?  I understand it takes 5 microseconds to start, so a CyDelayUS(10); should give enough time for it to power up, with a safety margin, correct?

   

   5) Does the EEPROM API write a byte at a time, or only a row?  I see the Byte Write, but it appears to work in rows in the API, unless I misunderstand the call naming conventions.

   

THANKS!!!!

0 Likes
6 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

1) The guaranteed temperature range is valid for the eeprom, too. Writing at higher values reduces the number of writ cycles.

   

2+3) From datasheet: "It is necessary to acquire the die temperature by calling the CySetTemp() before a series of EEPROM write operations."

   

4) Yes, that's correct.

   

5) The Write-APIs always write a row, ByteWrite uses a read-modify-write of a row

   

 

   

Bob

0 Likes
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

System Reference Guide discusses EE AND FLASH -

   


   

 PSoC devices have an on-chip temperature sensor that is used to measure the internal die temperature.
You must acquire the temperature at least once to use Flash and EEPROM write functions. If the
application will be used in an environment where the die temperature changes 10 °C or more, the
temperature should be refreshed to adjust the write times to the Flash for optimal performance. The die
temperature is obtained by calling the CySetTemp() function. This function queries SPC for the die
temperature and stores it in a global variable, which is used implicitly while performing Flash and
EEPROM write operations.

   


   

Regards, Dana.

0 Likes
WaMa_286156
Level 5
Level 5
First comment on blog 100 replies posted 50 replies posted

  Thanks for all the answers!

   

   Dumb question #1:  If CySetTemp() should be called before every write, shouldn't that be embedded into the API itself (perhaps in the future)?  If not, any ideas why?  Since writes are so slow, I'd expect that it shouldn't extend time that much to put it into blocking API.  In addition, writing to the EEPROM generates heat, so I would expect you'd want to measure die temp between writes for part lifetime reasons.

   

  Dumb question #2:  Is there any info on the temperature at write vs EEPROM life from any sources?

   

  We tend to use devices *past* their limits.  The penalty we pay is that we purchase more of them for replacements.  That is ok, is part of the business model.  I'm just curious if it there is any curves in existence that could be extrapolated to destruction.

   

   Dumb question #3:  If an eeprom row dies, does it affect subsequent rows?  (I'm hoping for someone out there that did an OOPS and found this out).

0 Likes
WaMa_286156
Level 5
Level 5
First comment on blog 100 replies posted 50 replies posted

  Re Dana's reply:  The data sheet says 5 degrees C, not 10.  Is there some updated information that hasn't made it to the data sheets in the latest PSoC Creator?

   

  UPDATE: I was wrong, the PSoc Creator data sheet does say 10.  The downloaded document from your Website, CyEEPROM_V_2.10_001-85001.pdf, says 5 degrees.  It also says you have to acquire the temp before a "series" of write operations.

   

  I'm assuming that for one write, it is not big deal.  If it is a big deal, I guess I dramatically shortened a parts life today.

0 Likes
ETRO_SSN583
Level 9
Level 9
250 likes received 100 sign-ins 5 likes given

Just a part of your routine, call the temp API. In general if

   

you are at room temp no harm has been done, and even

   

if you werent no major damage to FLASH, it would just not

   

be optimal write that allows chip to program its FLASH properly,

   

the data that you wrote that is.

   

 

   

Regards, Dana.

0 Likes
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

 @wsm,

   

A while ago I posted custom component to read/write data to EEPROM

   

 http://www.cypress.com/?app=forum&id=2492&rID=105370

   

 

   

See if it serves your  needs or use as  code example.

   

odissey1

0 Likes