0
\$\begingroup\$

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?

\$\endgroup\$
0
\$\begingroup\$

Here are some similar questions on this topic:

SPI over long distance

Raspberry PI's SPI over RS485

It seems that it's a common practice to use RS-485 transceivers to transmit SPI over long distance.

If I understand it correctly, you are not exactly creating a star topology, but rather multiple point-to-point connections. You will have differential pairs for each SPI signal on each SPI device and for each pair you will have two transceivers (one on each end). So there will be no single potentially overloaded RS-485 transceiver, the reason why star topology is not recommended.

\$\endgroup\$
0
\$\begingroup\$

r*"Is it appropriate to use RS485 transceivers to create differential lines to transmit SPI?"* Yes, as was stated above.

"Are there work-arounds for the star configuration?" Sometimes you can kludge something up using series resistors to help ameliorate the effects of reflections from the multiple loads. Remember that with a star configuration you can't parallel terminate at each destination with the nominal diff interface impedance (100 ohms),because doing so would overload the driver from a DC drive standpoint.

"Is a star configuration still a problem if lines under 100cm are used to connect to the odrive?" Probably. You would have to look at the slew rate/rise & fall time specifications for the transceivers you're planning to use. 100 cm is approximately 3.25 ft, so a round trip distance of 6.5 ft. At 2 ns/ft propagation time, that's 13 ns out and back. So unless your '485 drivers are really slow, there will be reflections.

Your best bet is to use a simulation tool like Mentor Graphics Hyperlynx Line Sim, build up your interface, and see what you get.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.