I2C 4-bit non-volatile memory chip

Go To Last Post
14 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi all,

 

I am looking for a chip, but I don't quite know what it is called, so I would like to ask, whether someone could point me to the right direction.

 

The functionality of the block is very simple: it should set the 4 address lines of an I2C chip (at the moment, I set that with a small 8-pin DIP switch), and it should itself be capable of communicating via I2C, and it should save its state in non-volatile memory. I know that an I/O expander could do this, but that is already an overkill, because I need only 4 output lines, and and no inputs. I would also like to have a small footprint, so I don't want to use more pins than necessary. Something like the PCA9536 from Texas Instruments would be nice (though, that doesn't have non-volatile memory, and it has to be re-programmed at each boot-up).

 

In any case, if someone could suggest a solution, I would appreciate it.

 

Zoltán

Last Edited: Sun. Sep 3, 2017 - 10:20 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I'd just use another AVR. One of the 8 pin ones. 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Give yourself some headroom.

An 8-bit I/O expander is "overkill" ?

You found an 4-bit I/O expander but that's also not good enough for you?

why would it be a problem to re-send the data after a reset?

 

And some other small AVR could do it all as clawson suggests.

Your final goal is probably to put quite a few of the same I2C chips on the I2C bus.

Have you considered ditching those ic's altogether and using a uC as a "smart I2C peripheral".

Paul van der Hoeven.
Bunch of old projects with AVR's:
http://www.hoevendesign.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Paulvdh wrote:

Give yourself some headroom.

An 8-bit I/O expander is "overkill" ?

 

That simply takes too much space; that is almost twice as big as a 4-bit expander.

 

Paulvdh wrote:

You found an 4-bit I/O expander but that's also not good enough for you?

why would it be a problem to re-send the data after a reset?

 

The problem with this is that you can't daisy-chain such devices. If you have a piece of non-volatile memory, you can program the addresses one by one, and then chain the components. If I use an I/O expander, then I can't do that, because, as you pointed out, the settings are volatile. I don't see an easy way, at least.

 

Paulvdh wrote:

And some other small AVR could do it all as clawson suggests.

Your final goal is probably to put quite a few of the same I2C chips on the I2C bus.

Have you considered ditching those ic's altogether and using a uC as a "smart I2C peripheral".

 

I think, if there are no other options, I will have to do this, though, I would have preferred to save the extra programming step.

 

Zoltán

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:

I'd just use another AVR. One of the 8 pin ones. 

 

Are there any AVRs out there, that come with an I2C bootloader pre-loaded?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Nope. But writing such a bootloader should be a fairly trivial process. Most existing bootloaders are UART not I2C so it would just be a case of replacing they byte TX/RX routines

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

clawson wrote:

Nope. But writing such a bootloader should be a fairly trivial process. Most existing bootloaders are UART not I2C so it would just be a case of replacing they byte TX/RX routines

 

I know how to write a serial bootloader, so, as you suggest, hacking an I2C bootloader should not be hard. But that does not eliminate the problem of having to program the chip. On the other hand, I see your point that such a solution is somewhat more flexible than a dedicated chip.

 

I have also found out that a variant of what I would like is called an EEPROM DIP switch, e.g., PCA8550 by NXP. But I still maintain that its footprint is far too big, because it has 4 unnecessary pins.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

zoltanvoros wrote:
far too big, because it has 4 unnecessary pins.

 

Number of pins does not correlate very well to physical size in electronics.

You seem to have an above average knowledge of coding so sit down and do th work.

 

This really sound to me like:

"I want do buy a smartphone, but I don't need a camera and that makes it much too thick".

 

or:

"I've been searching the web for a footprint for KiCad for 2 days" (Which you can make yourself in 10 minutes once you get the hang of it.

 

"eeprom dip switch" seems to be common. somtimes combined with eeprom chips

https://octopart.com/search?q=EE...

 

With the parametric  earch engines on mouser / digikey etc you can probably also search on pin count, if that is what you want.

For better advice we really need to have a total picture. Post schematics or a block diagram of the thing you want to build.

Paul van der Hoeven.
Bunch of old projects with AVR's:
http://www.hoevendesign.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

BTW why does the latch itself need this non-volatility anyway? Can it not be set in the first few microseconds after power on by the master to which it is attached ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

zoltanvoros wrote:
If you have a piece of non-volatile memory, you can program the addresses one by one, and then chain the components.

It seems that OP wants to detatch his circuit, move it to elsewhere and then retain it's settings.

 

How many i2c bootloaders would google be able to find for avr's?

but they have to be "small" of couse (sligtly sarcastic).

Paul van der Hoeven.
Bunch of old projects with AVR's:
http://www.hoevendesign.com

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Ramtron used to have some "non-volatile logic" chips using their FRAM technology ...

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Paulvdh wrote:
move it to elsewhere and then retain it's settings.
I understand the non-volatility bit. I am just saying that "isn't the EEPROM in the 'big micro' the better place to hold this non-volatile state?". It surely just take a few microseconds (50..100 cycles?) at power on for the big micro to pass this setting onto the thing that actually latches the signals. Do those 50+ cycles at power on during which the latch is maybe hi-Z or something really matter?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

An 8-pin MCU can have 4 output lines. Two I2C lines. VCC and GND.
You could program an I2C bootloader at manufacture. Before RSTDISBL
Note that the RESET pin is not as strong an output as the regular GPIO pins.
.
For such a simple device, there is little point in a bootloader. You just program the I2C Slave functionality at manufacture.
The 4 output states are stored in EEPROM. You can even change the Slave address in use. The Slave address is stored in EPROM too.
.
David.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

It seems were all guessing here because OP is very sparse with info.

Paul van der Hoeven.
Bunch of old projects with AVR's:
http://www.hoevendesign.com