Folks I am helping to design a circuit for a group that uses the odrive motor driver board. The odrive drives two brushless motors and the MCU uses SPI to connect to motor encoders. People using the odrive would like to drive TWO encoders (one for the motor, the other for the gearbox) so it would useful to make a system that communicates with a total of four encoders.
The other thing that we would like is to use differential lines to provide more noise immunity for SPI communication with the encoders. There are no instructions sent to the encoders, so MOSI does not need to be connected. Therefore, the connections to each encoder could look like this:
- pair1: link to each individual CS encoder
- pair2: CLK ganged across all 4 encoders
- pair3: MISO ganged across all 4 encoders
- pair4: VCC/GND to all encoders
The idea that is being considered is to use RS485 transceivers on each line, e.g., see this link
where on the encoder side the approach would be this circuit
I'm hoping to make a daughter board to attach to the odrive which would have transceivers for CS pins, CLK, MISO, VCC and GND. The daughter board would also have four RJ45 connectors.
I am requesting comments on this approach, but also provided that using differential RS485 transceivers makes sense, I realize I am heading straight into creating a star configuration - several slaves originating off of a single connection point on the master. This of course is a classic no-no when it comes to RS485 configurations. Unfortunately it is not practical to daisy chain encoders off of the odrive.
Is it appropriate to use RS485 transceivers to create differential lines to transmit SPI? Are there work-arounds for the star configuration? Is a star configuration still a problem if lines under 100cm are used to connect to the odrive?