I connect Raspberry Pi 3 b+ directly to 8x8 LED display, packaged with max7219cng display driver.
To control GPIO pins, I'm using baremetal code, written by myself. For working with GPIO I've implemented couple of wrapping functions that form a solid API , like gpio_set_function , gpio_set,gpio_set_pullupdown
To emulate SPI interface I select arbitrary GPIO pins and assign them SPI-like behaviours and roles along with setting them function OUT.
In other function I first activate LED display by first writing conmands to display driver, like setting mode from shutdown to normal, set the scan size to all lines and then start sending pixel values in a loop.
Problem: Choice of GPIO pin set affects behavior of display driver. For some set of pins display driver does what expected, on other set of pins it just doesn't.
As an example: MAX7219 - RASPBERRY DIN - GPIO14 CS/LOAD. - GPIO15 CLK - GPIO18 WORKS!
DIN - GPIO14 CS/LOAD - GPIO15 CLK - GPIO21 DOESN'T WORK.
VOLTAGE and GND also connected to Pi. Voltage pin is 5v