Convert SPI (MAX7219) via Arduino to SPI (HT1621)

Am hoping someone can point me in the right direction

I have an old loved CD player with a faulty 4 digit 7 segment display using a max7219 on SPI

I would like to 'upgrade' the display to an LCD (HT1621) using an arduino to convert the SPI

I have used an arduino as an SPI slave to try to understand and convert the SPI information but am at a loss as i am unable to decipher the data

Any pointers/help would be much appreciated

Thanks in advance

SPI is an electrical way to send data. It's not specifying what data is transferred. Likely BCD code is sent to the 7219. You need to electrically read that data, 4 bit digits, transferred, and then convert it to decimal numbers that You can send out on a I2C bus to the LCD.

What have You accomplished so far?

@Railroader suggests, there isn’t likely to be any ‘data’ going directly to the display…
It’s merely a bit shifted map of the segment pattern on the display segments.

Fairly easy to decipher, but definitely time consuming.

Good luck.

Just checked the data sheet of the 7219 and it contains a BCD to seven segment decoder. It ought to be easily found out.

You receive two bytes (16 bits), MSB first. The top 4 bits (15-12) are ignored. The next 4 bits (11-8) are the register address. The bottom 8 bits are written into the register.

Registers 1, 2, 3, and 4 contain values for digits 0, 1, 2, and 3. The bottom 4 bits of the register select the character to display: "0123456789-EHLP ".

Railroader
I have confirmed the display is faulty, a new display works fine. Have used one arduino nano to run the new display so i could use a second nano to run the spislave code (standard code from the web using pinMode(MISO, OUTPUT) in mode0). The code works - 2 digit hex displayed on the monitor, its just slow and i think there is data missing.
Am looking to modify the code to take the register size into consideration and try to find out why there appears to be data missing

lastchancename
Deciphering the data should be the easy part, capturing a reliable stream with the correct timing and register size is not that easy when you only have arduino's

johnwasser
Thank you

I am using the standard SPI Slave code available from the web - pinMode(MISO,OUTPUT) set in Mode0 with interrupts
The data i am getting is 2 digit HEX, i think there is data missing from the beginning and it appears slow to capture
I plan on buffering the data to get the correct registry size but do not know the best way to correct the missing data or speed (MAX is only 4mhz?) i also plan on pestering a friend to borrow their logic analyser

Is there any other way to listen/read/sniff the SPI?

Thanks in advance

Which SPI slave code are you using? The web has more than one example.

What model Arduino are you using? I don't see it mentioned anywhere.

What is your sketch so-far?