MISO line always high

Hi, I’m trying to use the AS5047P encoder in SPI mode, but the MISO line is always high on the Odrive PRO. It stays high even when the encoder is disconnected. Is there a way to set the MISC IO 11 to input or to set another pin as the MISO pin? The other signal seems fine on the scope.

I tried adding a 10k series resistor on the MISO line, and the side connected to the AS5047P is OK, but the Odrive side is high (3.0V). The MOSI line seems to work, but max voltage is 2.2V.

There is a receiver biasing network on J14 pin 11/12, to be able to do both single ended SPI connections and SPI-over-RS422. So it is expected that pin 11 floats high when you are not driving it. However it should be possible for the SPI encoder to drive it low. Can you show a scope capture of what you see?
I would suggest to not put a series resistor.

I’ve tried without the resistors and the signals seems fine for a brief moment (couple of seconds) :
colors = Y CSN - P MOSI - B MISO - G CLK

The MOSI pin went lower and MISO changed:

Lower again (CSN voltage is a bit higher : 4V):

After a couple of seconds, there’s no signal:

After 3 minutes without power, I get:

What can be the cause of the lack of signal?


Can you please share a picture and/or diagram of your wiring?

There it is :

I’ve added a 0.1uF cer cap between VDD-3V3 and GND. All other pins on AS5047P are floating.

The first issue is that you are using the incorrect ground, please use the J14 pin 6 GND. The Feedback J8 ground is separated by a ferrite and capacitor filter. That should likely clean up the clock signal crosstalk seen.

This injected ground lift may also explain the power issue, but hard to say. Try with the fixed ground and we can see how that goes.

1 Like

Hi, with the fixed ground, I have the same issue, but it takes a minute instead of a couple of seconds before MOSI goes lower.

Can I use a external 3.3V power supply for the AS5047P?

I can’t say this with any authority, but my AS5047P didn’t work with MOSI connected to the ODrive, because my ODrive never clocked out any instruction on MOSI. The ODrive docs suggest you tie MOSI to 3v3 at the encoder end rather than connecting it, which forces it into blindly sending its position register over and over rather than waiting for a command the ODrive never sends…

Your MOSI does appear to be pulling high some time after CS drops, but it might be too late to trigger the register to read without clocking out an instruction…

Just something to try anyway.

1 Like