I am building a rather large clock from 8x8 matrix displays using the MAX7219 connected in series. If I have 4 or less modules connected, it seems to work fine. More than 4 and there is an obvious problem as the farther modules don't seem to be working properly.
The MAX7219 is basically a shift register. Data is shifted into the first module which shifts into the second and so forth until it gets to the last module. Each MAX chip has a Data In and Data Out pin. Each 8x8 matrix is 4"x4" square. So the length of the data line is only about 4" to the next module. The Clock and LOAD lines run the length of the entire display (6 feet) and are buffered from the CPU using a 74LVC2G17W6-7 which is a 2 input high current output non-inverting buffer.
I did a static DC test on the CLK and LOAD lines from the buffer and they do not show any significant signal drop all the way out to 10 modules. HOWEVER, when I hooked up the logic analyzer, it is showing 100 nS transient noise at regular intervals. The yellow circles are the spikes that are creeping into the circuit. When the spike occurs on the SS(LOAD) line, it causes the shift register in the MAX chip to load prematurely which makes the MAX chip freak out and display strange stuff.
There have been several people post across the net about this same problem, but I haven't found anyone with a solution yet. I have noticed that the length of the SS/LOAD pulse seems to make a difference. The max7219 is not a true SPI chip so it isn't supposed to require the SS/LOAD line to go low before the data starts, however, it seems to work better when I do it that way. I made it go low just before the end of the data and high just after and it made it worse.
Using a 0.1uf capacitor across the LOAD and GND will help in certain circumstances. I have to slow the clock rate down to 1 MHz or else it makes it worse. When I slowed it all the way down to 100 KHz, there was no difference to 1 MHz.
The spikes (circled in yellow) are present whether I have 10 modules or zero. However, the first modules in the chain don't seem to care about them for unknown reasons.
Anybody know what is going on here?
The buffer 74LVC2G17W6-7 is a schmidt trigger rated at 125 MHz and 32 mA which may mean that it might be overly sensitive to noise. Would a slower buffer be a better choice?
Is there some way to filter out the 100 nS spikes?
Thanks.
The MAX7219 is basically a shift register. Data is shifted into the first module which shifts into the second and so forth until it gets to the last module. Each MAX chip has a Data In and Data Out pin. Each 8x8 matrix is 4"x4" square. So the length of the data line is only about 4" to the next module. The Clock and LOAD lines run the length of the entire display (6 feet) and are buffered from the CPU using a 74LVC2G17W6-7 which is a 2 input high current output non-inverting buffer.
I did a static DC test on the CLK and LOAD lines from the buffer and they do not show any significant signal drop all the way out to 10 modules. HOWEVER, when I hooked up the logic analyzer, it is showing 100 nS transient noise at regular intervals. The yellow circles are the spikes that are creeping into the circuit. When the spike occurs on the SS(LOAD) line, it causes the shift register in the MAX chip to load prematurely which makes the MAX chip freak out and display strange stuff.
There have been several people post across the net about this same problem, but I haven't found anyone with a solution yet. I have noticed that the length of the SS/LOAD pulse seems to make a difference. The max7219 is not a true SPI chip so it isn't supposed to require the SS/LOAD line to go low before the data starts, however, it seems to work better when I do it that way. I made it go low just before the end of the data and high just after and it made it worse.
Using a 0.1uf capacitor across the LOAD and GND will help in certain circumstances. I have to slow the clock rate down to 1 MHz or else it makes it worse. When I slowed it all the way down to 100 KHz, there was no difference to 1 MHz.
The spikes (circled in yellow) are present whether I have 10 modules or zero. However, the first modules in the chain don't seem to care about them for unknown reasons.
Anybody know what is going on here?
The buffer 74LVC2G17W6-7 is a schmidt trigger rated at 125 MHz and 32 mA which may mean that it might be overly sensitive to noise. Would a slower buffer be a better choice?
Is there some way to filter out the 100 nS spikes?
Thanks.