Hi,
I’m trying to read a Renishaw EVOLUTE linear BiSS-C readhead with an ODrive Micro and always get NO_RESPONSE. The same encoder, transceiver and wiring work fine with an STM32 Nucleo.
There are still parts of this I don’t fully understand, so some of my questions may sound a bit odd. Thanks for bearing with me, and I’d appreciate any guidance.
Setup
- ODrive Micro: FW 0.6.12-1
- Encoder: Renishaw EVOLUTE EL26BBB100F10A (linear, BiSS-C unidirectional, 26-bit position, 100 nm)
- Readhead installed and aligned; set-up LED indicates OK
- Adapter: TI THVD1451 (full-duplex RS-422, no enable pins)
- Wiring:
- Micro SCK → THVD1451 D; Y/Z → MA+/MA−
- SLO+/SLO− → A/B; R → Micro MISO
- nCS (G00) not connected
- Tried with and without 120 Ω termination across A/B, same result
- Power: encoder + transceiver from Micro J4 5V (also tried an external 5V, same result)
Config
odrv0.spi_encoder0.config.mode = SpiEncoderMode.BISSC
odrv0.spi_encoder0.config.singleturn_bits = 26
odrv0.spi_encoder0.config.multiturn_bits = 0
spi_encoder0.config.baudrate: tried several values.
Symptoms
spi_encoder0.status = NO_RESPONSE,n_errorskeeps increasing,spi_encoder0.raw = 0- The
odrv.spi_encoder0.warningflag toggles True/False. Higher baudrate → more often True; at 0.25 MHz it is always True.
Reference that works
NUCLEO-G491RE, SPI1 receive-only master, 8-bit, MSB first, 2.3125 Mbit/s, CPOL high, CPHA 1st edge. With the same transceiver and encoder, full frames are received correctly.
Scope capture (Micro, approximate values, screenshot attached)
- SCK idles Low
- t = 0 µs: SCK goes High and stays High
- t ≈ 2 µs and ≈ 7 µs: two short bursts
- t ≈ 3 µs: encoder data line goes Low
- t ≈ 14 µs: main clock burst starts, ~39 µs long, ~1.5–1.6 MHz (~60 clocks, estimated)
- A complete frame (~36 bits) appears after the Start bit around the 5th main clock
My guess (I’m not sure about this) is that the encoder is responding, but it’s being triggered by the SCK activity before the main clock burst. If so, SLO would already be Low by the time the main burst starts, and maybe the firmware treats that as no response.
Questions
- I’ve read in the docs that, since BiSS-C is a standardized protocol, other resolutions beyond the tested 18–20-bit encoders should theoretically work. Is that also expected for a 26-bit single-turn encoder like this one?
- Is there a recommended reference adapter circuit for BiSS-C on the Micro?
- Could SPI clock polarity/phase (CPOL/CPHA) be related? On the Nucleo I use CPOL high, but on the Micro SCK idles Low, and as far as I can tell CPOL/CPHA can’t be configured there. Does the BiSS-C mode expect an inverting adapter, or is the idle level not an issue?
If you have any suggestions for a fix or experiments to try, I’m happy to run them. Thanks!
