John said:
I have been using the MAX7219 for ~15 years, (serial input,
multiplexed led driver). Can't seem to get rid of it.
As a former Maxim employee, I did my best to stay out of this thread.
However, the MAX7219 was one of the more "entertaining" parts I
designed. [As an analog IC designer, doing digital is nice for a
change.] I had to fight the powers that be to design it using VLSI's
process, rather than our fab. The chip would have been huge in 3um. Not
only did the smaller channel length fets help, but the double metal
sealed the deal. I designed the power fets in both processes and it
just wasn't a contest. [If you look at the die, the power fets are
build around the bonding pad for the best resistance to
electromigration problems.] The issue was given the usual 3 passes it
task to get a chip into production, that would cost a fortune at VLSI.
Still, I won on the merits of doing it in the finer geometry process.
The chip went through what was nearly a full circuit spice simulation
on IIRC a 90Mhz PC. We had a room in what was the old Tech Fed Credit
Union building that had a few PCs in it for either long runs or just to
be in a place not to be disturbed. The serial I/O plus dual port ram
was one simulation, then the rest of the chip was the other simulation.
I took at least two weeks of simulation.
The chip worked on the first pass, including passing burn-in, latch-up
and ESD. When Maxim got its one 1um process (1.2um I think), I tweaked
the chip for that process. It was run along with test patterns to get
the bugs out of the process. There is nothing like having a real chip
to play with when a process is being developed.
There are a few issues with the part. One is the burn-in test mode.
[The part is burned in with all digit drivers being exercise, i.e.
dynamic burn-in.] It is mentioned twice in the datasheet, but many
people don't read the datasheet carefully. Once you are in burn-in
mode, all the leds stay on no matter what you do. I ended up talking to
a customer from Australia that spent weeks with apps trying to figure
out what was going on with this part as he would get in that mode.
Finally the call got bumped up to me, to which I replied "No big deal,
you got the part in the burn-in test mode, as shown on page blah blah
blah." He was a bit irate as nobody in apps pointed that out. When the
datasheet was being written, I tried to get a special section in it
warning about the test mode, but that was deemed to be too alarming.
You don't want to scare off the customers. The other argument I lost
was the designation of "serially interfaced" rather than "serial
interface.' Which do you want, good gramar or common engineering speak?
There is also something funky in the serial interface. I don't remember
the problem exactly, but it has to do with the chip select not gating
the load pulse or something like that. I don't have the datasheet in
front of me so I can't recall the exact problem. I noticed the chip is
being sold in surface mount, so it was tweaked by someone after I left.
Maybe that problem is fixed.
Almost everything I wanted to put in the chip got approved. The
exception was the ability to set the intensity of every digit
individually. I wanted to use it so that a cursor (blinking digit or
different brightness) could be implemented. I did an app note later on
how to add a cursor with external parts.
One nice thing about the part is the use of current mirrors to set the
peak current via the external resistor. Current feeding the LEDs makes
the displays have uniform intensity even if the LEDs don't match well.
The analog control was also used in some military apps where NV goggles
were used. [The military apps did a combination of PWM and analog to
set the intensity.]