Unable to write tmc spi 'stepper_z' register GLOBALSCALER

I have a BTT Octopus Pro with the TMC5160 HV steppers and an FYSETC Mini12864 display and I’m having some issues getting them to work together with hardware spi.

[tmc5160 stepper_z]
cs_pin: MOTOR2_CS				# PC6
spi_bus: spi1
sense_resistor: 0.075
interpolate: true
run_current: 0.8
hold_current: 0.8
stealthchop_threshold: 0

[display]
lcd_type: uc1701
cs_pin: EXP1_3
a0_pin: EXP1_4
rst_pin: EXP1_5
encoder_pins: ^EXP2_5, ^EXP2_3
click_pin: ^!EXP1_2
contrast: 63
spi_bus: spi1

I don’t even need the display section configured but just have the display plugged into EXP1 and EXP2 (actually just EXP2 is all that’s needed to have the issue). When I attempt to move the steppers, I get Unable to write tmc spi 'stepper_z' register GLOBALSCALER

Now, leaving everything wired up the exact same and just reconfigure as software spi:

[tmc5160 stepper_z]
cs_pin: MOTOR2_CS				# PC6
spi_software_miso_pin: EXP2_1
spi_software_mosi_pin: EXP2_6
spi_software_sclk_pin: EXP2_2
sense_resistor: 0.075
interpolate: true
run_current: 0.8
hold_current: 0.8
stealthchop_threshold: 0

[display]
lcd_type: uc1701
cs_pin: EXP1_3
a0_pin: EXP1_4
rst_pin: EXP1_5
encoder_pins: ^EXP2_5, ^EXP2_3
click_pin: ^!EXP1_2
contrast: 63
spi_software_miso_pin: EXP2_1
spi_software_mosi_pin: EXP2_6
spi_software_sclk_pin: EXP2_2

It works. The display turns on, I see text on the display and I can move the steppers.

So for some reason, the hardware spi doesn’t like it when the display is plugged in. Is this a hardware problem or something in klipper? Using software spi everything just works.

From a performance/system point of view, whats the difference between hardware and software spi?

In the event it was the display, I tried with the BTT version of the same display and the same results.

Edit: If I comment out all my stepper configuration, set the kinematics to none, then the display with spi_bus: spi1 will work. If I have any stepper also use spi_bus: spi1, then the display will not show any text and the attempt to move the stepper will result in the unable to write error.

Everything using software spi and it all works.

Edit 2: I have a similar problem if I remove the display configuration and unplug it, and then try to use the onboard MAX31865 with spi_bus: spi1. Configure everything for software spi, it works, change it to hardware spi and I get an immediate MCU 'mcu' shutdown: Thermocouple ADC out of range

Not a fan of reviving old topics, but I’m battling the same trouble of getting TMC5160 drivers to talk on the spi1 bus on my Pro 429. Did you find a solution or just give up and use software spi?

I had the same problem. I can be easily resolved by pulling up PF8 pin, which is CS of MAX31685

[static_digital_output disable_max31865]
pins: PF8

Now using spi1 works.
The other way would be probably to simply provide config for MAX31865, which would also initialize its CS pin