bigtreetech / BIGTREETECH-OCTOPUS-Pro

This is OCTOPUS Pro open source material
263 stars 57 forks source link

no spi communication for drivers - missing PA6 #23

Closed SaPu84 closed 7 months ago

SaPu84 commented 1 year ago

I get a new H723 and find a broken spi1 connection on the PCB to the driver. Workaround is to use PA6 of EXP2 and connect it to the driver line by using a jumper cable. May it run into other electrical issues by doing it?

MAX31865 is working fine.

BR Sascha

jmeier5261 commented 1 year ago

Noted the same on my h723 v1.0.1 octopus pro. Drivers do not appear to connect to spi bus pa6 pin. MAX m31865 works fine but there appears to be an error on the pcb itself and the driver sockets are not wired to pa6. If I run a jumper from PA6 to the driver pin it works as expected. @bigtreetech was this fixed in a later hardware revision or just a bad batch of boards?

kmobs commented 1 year ago

Any official word on this?

jmeier5261 commented 1 year ago

Nothing official just return the board to the vendor for a replacement if possible. There’s a bunch of these dud boards out there.

kmobs commented 1 year ago

Thanks. I ended up just tapping into the LCD pin like y'all said. This + the fact that it enables the heater pin in DFU makes this board extremely disappointing. I won't be recommending it to anyone.

bigtreetech commented 1 year ago

The diodes used previously were not very high in parameters and there was a chance that they would break through when the customer was using them in a harsh environment (high static, humidity, etc.), resulting in a failure to communicate with the driver SPI signal. We have now addressed this problem.

kmobs commented 1 year ago

I'm sorry but I don't know if this is the case? I never had communication on the bus.

How have you resolved the issue?

NAPCAL commented 1 year ago

I have checked both of my Pro boards and found no continuity issues with the SPI1_MISO or Drivers MISO. Here is what I checked on my F446 & H723.

image

image

csdstudio78 commented 1 year ago

Same... brand new out of the box Octo Pro with 446, no SPI1.

NAPCAL commented 1 year ago

@csdstudio78 Can you verify that your U27 and D41 are facing the same way as in my photo?

csdstudio78 commented 1 year ago

@csdstudio78 Can you verify that your U27 and D41 are facing the same way as in my photo?

octopro

csdstudio78 commented 1 year ago

To add, connecting stepper drivers to PA6 via EXP2 enables spi1. So PA6 is connected somehow, just not through the intended path to the steppers. lol

NAPCAL commented 1 year ago

@csdstudio78 Thanks for the photo; it seems to be a revision of the PCB that the trace between D21 and pin 6 of U27 is incorrect.

My good board has the trace, and the bad PCB has D21 going to a via, but it doesn't seem to connect to U27 pin 6.

The PCB manufacturer may have made this error on the current batch of PCBs.

Good board image

Bad board image

csdstudio78 commented 1 year ago

Ahh yes. OK. Thanks for confirming! I definitely have a bad board... I've already requested a replacement via Amazon so we'll see if that one is any different. :) If not, I'm contemplating fixing this one. Is it just missing that trace or is it incorrectly traced to something else? I can add a missing trace.

NAPCAL commented 1 year ago

I forgot to post the board version of my good boards. @csdstudio78 Could you check and post your board version?

My good Octopus Pro’s image image

csdstudio78 commented 1 year ago

Mine is 1.0.1 as well.

csdstudio78 commented 1 year ago

OK... I hate to burst our bubbles, but I went back today and looked at my board again, knowing what you were looking for, and with the camera flash there's definitely a trace. Time to do some more checking. @NAPCAL

image

NAPCAL commented 1 year ago

@csdstudio78 Any chance you can ohm out the paths?

The jump wire from EXP2 MISO to the drivers leaves the STM unprotected by D21.

If you can find the failure location I can check mine.

csdstudio78 commented 1 year ago

@csdstudio78 Any chance you can ohm out the paths?

The jump wire from EXP2 MISO to the drivers leaves the STM unprotected by D21.

If you can find the failure location I can check mine.

Agreed. I'll pull my board today and look. I don't like using exp2 either.

csdstudio78 commented 1 year ago

@csdstudio78 Any chance you can ohm out the paths?

The jump wire from EXP2 MISO to the drivers leaves the STM unprotected by D21.

If you can find the failure location I can check mine.

OK. All traces check out. Power checked at 3.3v, 5.0v, and GND, all points verified in the schematic you posted above. Diode checks out, all resistor values checked. Because I'm not an EE, I can't figure out why this doesn't work other than not understanding U27. (its role and whether its oriented correctly)

csdstudio78 commented 1 year ago

@NAPCAL See below... am I wrong here? I don't understand the output vs input, if MISO (PA6) is an input to the MCU then the diode is backwards. If PA6 (MISO) is an output, then U27 is backwards. Either way, one must be backwards.

EDIT: Looking at the 3.3v input to the buffer, I'm certain MISO (PA6) is an input to MCU leading me to believe the diode is indeed mounted backwards. This leads me to ask, why is a diode present on an input?

EDIT2: After further study, I'm likely wrong seeing that PA6 is being pulled high and U27 pulls it low, so perhaps the diode is correct? See... I'm not an EE. :)

image

NAPCAL commented 1 year ago

@csdstudio78, the circuit is a level shifter for Master In Slave Out from the drivers @ 5V; R203 ensures the input to the buffer never floats; R205 is a 3.3V pull-up to also ensures that the STM (3.3V operational) input never floats; U27 is only to translate low signals through to the STM SPI1_MISO pin 42 by the use of the D21 in a reverse direction (DIODE SCHOTTKY 30V 200MA).

image

NAPCAL commented 1 year ago

@csdstudio78 Also, note the other SPI1 signals go through U26 of the same type of device, and it is connected to +5V, so the +3.3V signal from the STM will get stepped up to +5V. It is when you are stepping down that the extra components are required.

csdstudio78 commented 1 year ago

@NAPCAL ... Ok, I'm tracking now. So the schematic is good and the physical layout appears to align with the schematic. We're running out of options.

NAPCAL commented 1 year ago

Bad U27 since it only is used for SPI1_MISO or D21.

csdstudio78 commented 1 year ago

Forward bias of my diode (D41) is 0.27v, resistance is 92k. Negative probe on the left side, towards U27. Reverse bias V is OL, resistance is 7M.

NAPCAL commented 1 year ago

@csdstudio78 D41 Readings taken with a Fluke 117

Board version 1.0 bias voltage 0.238V 65.6K ohm Board version 1.0.1 bias voltage 1.685V 3.17Meg ohm

I haven't tried my Version 1.0.1 with TMC5160 Pro's yet.

csdstudio78 commented 1 year ago

@NAPCAL Your rev 1.0 readings are similar to my rev 1.0.1 readings above for the diode. Just to verify, you're checking D41, not D21, correct? BTT TMC5160 Pros work ok with MISO jumped to PA6 on EXP2. I initially dropped in a set of new Fysetc QHV5160's and both sense resistors on one driver blew within a few minutes, current limit set to 1.5A, motor voltage at 50v...lol.

NAPCAL commented 1 year ago

Yes D41, type-o Just tested both of my Pro boards with BTT TMC5160 Pro (X & Y) and BTT TMC2209 (Z & Extruder), NO WIRE JUMPER FROM EXP2 All four responded

15:43:50 $ DUMP_TMC STEPPER=stepper_x 15:43:50 // ========== Write-only registers ========== 15:43:50 // GLOBALSCALER: 00000043 globalscaler=67 15:43:50 // IHOLD_IRUN: 00061f13 ihold=19 irun=31 iholddelay=6 15:43:50 // MSLUT0: aaaab554 mslut0=2863314260 15:43:50 // MSLUT1: 4a9554aa mslut1=1251300522 15:43:50 // MSLUT2: 24492929 mslut2=608774441 15:43:50 // MSLUT3: 10104222 mslut3=269500962 15:43:50 // MSLUT4: fbffffff mslut4=4227858431 15:43:50 // MSLUT5: b5bb777d mslut5=3048961917 15:43:50 // MSLUT6: 49295556 mslut6=1227445590 15:43:50 // MSLUT7: 00404222 mslut7=4211234 15:43:50 // MSLUTSEL: ffff8056 w0=2 w1=1 w2=1 w3=1 x1=128 x2=255 x3=255 15:43:50 // MSLUTSTART: 00f70000 start_sin90=247 15:43:50 // TPWMTHRS: 000fffff tpwmthrs=1048575 15:43:50 // COOLCONF: 00000000 15:43:50 // PWMCONF: c40c001e pwm_ofs=30 pwm_autoscale=1 pwm_autograd=1 pwm_reg=4 pwm_lim=12 15:43:50 // TPOWERDOWN: 0000000a tpowerdown=10 15:43:50 // ========== Queried registers ========== 15:11:31 // MSLUT7: 00404222 mslut7=4211234 15:43:50 // GCONF: ffffffff recalibrate=1 faststandstill=1 en_pwm_mode=1 multistep_filt=1 shaft=1(Reverse) diag0_error=1 diag0_otpw=1 diag0_stall=1 diag1_stall=1 diag1_index=1 diag1_onstate=1 diag1_steps_skipped=1 diag0_int_pushpull=1 diag1_poscomp_pushpull=1 small_hysteresis=1 stop_enable=1 direct_mode=1 test_mode=1 15:11:31 // MSLUTSEL: ffff8056 w0=2 w1=1 w2=1 w3=1 x1=128 x2=255 x3=255 15:43:50 // CHOPCONF: ffffffff toff=15 hstrt=7 hend=15 fd3=1 disfdcc=1 chm=1 tbl=3 vhighfs=1 vhighchm=1 tpfd=15 mres=15(0usteps) intpol=1 dedge=1 diss2g=1 diss2vs=1 15:11:31 // MSLUTSTART: 00f70000 start_sin90=247 15:43:50 // GSTAT: ffffffff reset=1(Reset) drv_err=1(ErrorShutdown!) uv_cp=1(Undervoltage!) 15:11:31 // TPWMTHRS: 000fffff tpwmthrs=1048575 15:43:50 // DRV_STATUS: ffffffff sg_result=1023 s2vsa=1(ShortToSupply_A!) s2vsb=1(ShortToSupply_B!) stealth=1 fsactive=1 csactual=255 stallguard=1 ot=1(OvertempError!) otpw=1(OvertempWarning!) s2ga=1(ShortToGND_A!) s2gb=1(ShortToGND_B!) ola=1(OpenLoad_A!) olb=1(OpenLoad_B!) stst=1 15:11:31 // COOLCONF: 00000000 15:43:50 // FACTORY_CONF: ffffffff factory_conf=31 15:11:31 // PWMCONF: c40c001e pwm_ofs=30 pwm_autoscale=1 pwm_autograd=1 pwm_reg=4 pwm_lim=12 15:43:50 // IOIN: ffffffff refl_step=1 refr_dir=1 encb_dcen_cfg4=1 enca_dcin_cfg5=1 drv_enn=1 enc_n_dco_cfg6=1 sd_mode=1 swcomp_in=1 version=0xff 15:11:31 // TPOWERDOWN: 0000000a tpowerdown=10 15:43:50 // LOST_STEPS: ffffffff lost_steps=1048575 15:11:31 // ========== Queried registers ========== 15:11:31 // ========== Queried registers ========== 15:43:50 // MSCNT: ffffffff mscnt=1023 15:11:31 // GCONF: 0000000c en_pwm_mode=1 multistep_filt=1 15:11:31 // GCONF: 0000000c en_pwm_mode=1 multistep_filt=1 15:43:50 // MSCURACT: ffffffff cur_a=-1 cur_b=-1 15:11:31 // CHOPCONF: 34410153 toff=3 hstrt=5 hend=2 tbl=2 tpfd=4 mres=4(16usteps) intpol=1 dedge=1 15:11:31 // CHOPCONF: 34410153 toff=3 hstrt=5 hend=2 tbl=2 tpfd=4 mres=4(16usteps) intpol=1 dedge=1 15:43:50 // OTP_READ: ffffffff otp_fclktrim=31 otp_s2_level=1 otp_bbm=1 otp_tbl=1 15:11:31 // GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!) 15:11:31 // GSTAT: 00000005 reset=1(Reset) uv_cp=1(Undervoltage!) 15:43:50 // PWM_SCALE: ffffffff pwm_scale_sum=255 pwm_scale_auto=-1 15:11:31 // DRV_STATUS: 80134000 stealth=1 csactual=19 stst=1 15:11:31 // DRV_STATUS: 80134000 stealth=1 csactual=19 stst=1 15:43:50 // PWM_AUTO: ffffffff pwm_ofs_auto=255 pwm_grad_auto=255 15:11:31 // FACTORY_CONF: 0000000f factory_conf=15 15:11:31 // FACTORY_CONF: 0000000f factory_conf=15 15:43:50 // TSTEP: ffffffff tstep=1048575 15:11:31 // IOIN: 30000050 drv_enn=1 sd_mode=1 version=0x30 15:11:31 // IOIN: 30000050 drv_enn=1 sd_mode=1 version=0x30 15:11:31 // LOST_STEPS: 00000000 15:11:31 // LOST_STEPS: 00000000 15:11:31 // MSCNT: 00000008 mscnt=8 15:11:31 // MSCNT: 00000008 mscnt=8 15:11:31 // MSCURACT: 00f7000c cur_a=12 cur_b=247 15:11:31 // MSCURACT: 00f7000c cur_a=12 cur_b=247 15:11:31 // OTP_READ: 0000000f otp_fclktrim=15 15:11:31 // OTP_READ: 0000000f otp_fclktrim=15 15:11:31 // PWM_SCALE: 00000012 pwm_scale_sum=18 15:11:31 // PWM_SCALE: 00000012 pwm_scale_sum=18 15:11:31 // PWM_AUTO: 0000001d pwm_ofs_auto=29 15:11:31 // PWM_AUTO: 0000001d pwm_ofs_auto=29 15:11:31 // TSTEP: 000fffff tstep=1048575 15:11:31 // TSTEP: 000fffff tstep=1048575

15:46:19 $ DUMP_TMC STEPPER=stepper_z 15:46:19 // ========== Write-only registers ========== 15:46:19 // SLAVECONF: 00000200 senddelay=2 15:46:19 // IHOLD_IRUN: 00081414 ihold=20 irun=20 iholddelay=8 15:46:19 // TPWMTHRS: 00000000 15:46:19 // TPOWERDOWN: 00000014 tpowerdown=20 15:46:19 // SGTHRS: 00000000 15:46:19 // ========== Queried registers ========== 15:46:19 // GCONF: 000001c0 pdn_disable=1 mstep_reg_select=1 multistep_filt=1 15:46:19 // GSTAT: 00000001 reset=1(Reset) 15:46:19 // IFCNT: 00000008 ifcnt=8 15:46:19 // OTP_READ: 0000000f otp_fclktrim=15 15:46:19 // IOIN: 21000041 enn=1 pdn_uart=1 version=0x21 15:46:19 // FACTORY_CONF: 0000000f fclktrim=15 15:46:19 // TSTEP: 000fffff tstep=1048575 15:46:19 // MSCNT: 00000028 mscnt=40 15:46:19 // MSCURACT: 00ef003c cur_a=60 cur_b=239 15:46:19 // CHOPCONF: 34030053 toff=3 hstrt=5 tbl=2 vsense=1 mres=4(16usteps) intpol=1 dedge=1 15:46:20 // DRV_STATUS: c0140000 cs_actual=20 stealth=1 stst=1 15:46:20 // PWMCONF: c80d0e24 pwm_ofs=36 pwm_grad=14 pwm_freq=1 pwm_autoscale=1 pwm_autograd=1 pwm_reg=8 pwm_lim=12 15:11:31 // MSLUT7: 00404222 mslut7=4211234 15:46:20 // PWM_SCALE: 00000017 pwm_scale_sum=23 15:11:31 // MSLUTSEL: ffff8056 w0=2 w1=1 w2=1 w3=1 x1=128 x2=255 x3=255 15:46:20 // PWM_AUTO: 000e0024 pwm_ofs_auto=36 pwm_grad_auto=14 15:11:31 // MSLUTSTART: 00f70000 start_sin90=247 15:46:20 // SG_RESULT: 00000000

csdstudio78 commented 1 year ago

Alright! I'm getting somewhere. Board rev 1.0.1 SPI1 works as long as there's no display connected to EXP2 (Small bummer). There's some sharing issues with SPI1 on the Octo Pro that aren't present on the non-pro Octo. The non-pro Octo board doesn't have the level shifting logic, it's straight from stepper driver to PA6.

EDIT: My display only uses PB1/2 on EXP2 so that's an easy fix.

NAPCAL commented 1 year ago

@csdstudio78 Well, the wire jump would cause a pull-up to +5V due to the drivers at +5V logic (MISO) and the EXP2 (SPI1_MISO) at +3.3V; without the wire jump, the display seams to pull the logic levels into a between state even though doesn't use (SPI1).

jessepietila commented 1 year ago

Hi,

I have Pro1.0.1 F429 board, not able to run E with TMC5160 Pro v1.1.....

So what to do ?

tutankino commented 1 year ago

Hi all, i have the same problem, board h723 1.01 and also with the jumper on exp2 pa6 i received Always SPI global scaler error, any suggestion? Problem Is d41??? I changed d41 with 1n4148 same as a new revision 1.1, no success, not work..😭

rexsham commented 1 year ago

Hi all, i have the same problem, board h723 1.01 and also with the jumper on exp2 pa6 i received Always SPI global scaler error, any suggestion? Problem Is d41??? I changed d41 with 1n4148 same as a new revision 1.1, no success, not work..😭

An even worse situation is, I am using Revision 1.1, and tmc5160pro, still don't work

NAPCAL commented 1 year ago

@tutankino

The 1N4148 is not a match for D41 RB521S-30.

1N4148 Small Signal Switching Diode RB521S-30 Schottky Barrier Diode

looxonline commented 1 year ago

Hi all, i have the same problem, board h723 1.01 and also with the jumper on exp2 pa6 i received Always SPI global scaler error, any suggestion? Problem Is d41??? I changed d41 with 1n4148 same as a new revision 1.1, no success, not work..😭

An even worse situation is, I am using Revision 1.1, and tmc5160pro, still don't work

Did you figure out what was happening with your board? Do you have photos of the version number on your board?

ansonl commented 1 year ago

I have board v1.0.1 with TMC2209 and the MAX pluggable stepper module and my workaround is in #31

looxonline commented 1 year ago

I have board v1.0.1 with TMC2209 and the MAX pluggable stepper module and my workaround is in #31

Yours seems to be a uniquely Marlin issue. I think that, while similar on the surface, these are not the same issues.

NAPCAL commented 1 year ago

@ansonl

I have board v1.0.1 with TMC2209 and the MAX pluggable stepper module and my workaround is in #31

TMC2209 drivers don't use SPI they are only UART.

ansonl commented 1 year ago

@NAPCAL the BTT MAX31865 plug in stepper driver module that I am using communicates over SPI.

NAPCAL commented 1 year ago

@ansonl

Thanks for adding that, are you using the jumper from EXP2 to one of the Driver sockets?

image

ansonl commented 1 year ago

@NAPCAL I don't have it jumped like you specified. I have the MAX module inserted like normal into an unused stepper slot and I have an LCD SD reader (stock ultimaker 2 display defined as ULTI_CONTROLLER) communicating through EXP2.

My adapter board to get the ultimaker display mapped to the correct I2C and SPI pins is below image

NAPCAL commented 1 year ago

@ansonl

Thanks What firmware are you using?

ansonl commented 1 year ago

I am using Marlin bugfix-2.1.x from around this June.

https://github.com/ansonl/Marlin/tree/dxu-ultimaker-btt-octopus-pro-1

exsencer commented 1 year ago

@ansonl

Thanks for adding that, are you using the jumper from EXP2 to one of the Driver sockets?

image

Is this the final solution? I have a 1.1 board I am trying to get up and running with 5160's and I don't think they fixed this issue with this revision. The pins have been swapped around though so that the heater is not on during DFU mode

NAPCAL commented 1 year ago

That is a temporary fix, but we need to get everyone that has to do this to get their TMC5160 or other SPI TMCs, to contact BTT support so they can see it is a problem for board owners.

pasha4ur commented 7 months ago

Hello

BTT Octopus Pro F429 1.0.1 + BTT TMC 2240 (SPI) + BTT 12864 mini v2

After 3 print jobs:

Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER

Unable to write tmc spi ‘stepper_x’ register GCONF

Only disconnecting BTT 12864 mini v2 (I tried several) helps.

looxonline commented 7 months ago

Hello

BTT Octopus Pro F429 1.0.1 + BTT TMC 2240 (SPI) + BTT 12864 mini v2

After 3 print jobs:

Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER

Unable to write tmc spi ‘stepper_x’ register GCONF

Only disconnecting BTT 12864 mini v2 (I tried several) helps.

Do you mean that it works after you disconnect the display? BTW, Please contact the official support email as the github issue list is not used for official support tickets.

pasha4ur commented 7 months ago

Do you mean that it works after you disconnect the display? BTW, Please contact the official support email as the github issue list is not used for official support tickets.

If display connected to EXP2 I can't do anything with motors (spi errors in console). Even homing.

If I disconnected display it makes homing wo errors.

I printed 3 times with display. But after last turning on the printer it doesn't work with display anymore. I tried several new BTT 12864 mini (v1 and v2).

As I saw from other forums Bigtreetech provides bad customer support (example on their forum https://community.biqu3d.com/topic/665-bigtreetech-tmc5160-pro-v11-and%C2%A0bigtreetech-btt-octopus-pro-f446-on-klipper-spi-not-working/). I wrote them 1 year ago about another product - 0 answers.

I will open ticket. But I have no hope for quality support from this Chinese company.

pasha4ur commented 7 months ago

Hello

I have found the source of my printer problem to be probably the location of the screen cable.

https://klipper.discourse.group/t/spi-cant-write-to-tmc2240-after-few-print-jobs/14531/10?u=pasha4ur

pasha4ur commented 7 months ago

Hello BTT Octopus Pro F429 1.0.1 + BTT TMC 2240 (SPI) + BTT 12864 mini v2 After 3 print jobs: Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GLOBALSCALER Unable to write tmc spi ‘stepper_x’ register GCONF Only disconnecting BTT 12864 mini v2 (I tried several) helps.

Do you mean that it works after you disconnect the display? BTW, Please contact the official support email as the github issue list is not used for official support tickets.

I opened ticket with Bigtreetech. They didn't even answer. This is their level of customer support. :)